格子间以下 第三十三章
格子间以下
三十三、联调
晚上九点半,办公区里只剩下零星的几个人。
张伟的眼睛干涩发胀,眨一眨就发酸。
他揉了揉眼角,继续盯着屏幕上的代码。
对话管理的状态机已经跑通了,但接口对接还差一截。知识库检索的接口只写了一半,上下文管理的逻辑也还没完全调通。
他看了眼时间——九点三十五分。
距离明天上午十点的联调,只剩十二个小时。
他把代码窗口切换到最前面,继续写。
十点钟,办公区里只剩下他一个人了。
王海文走之前拍了拍他的肩膀,说了句”别太拼了”,然后留下两罐红牛。
张伟拉开一罐,喝了一口。
冰凉的液体顺着喉咙滑下去,带着咖啡因特有的苦涩。
他想,公司楼下那家便利店的咖啡,他喝了一整年了。
现在闻见那个味道就反胃。
但红牛不一样。这玩意儿便宜,见效快,是穷人的肾上腺素。
他喝完一罐,继续敲键盘。
凌晨一点十七分。
张伟终于把知识库检索的接口写完了。
他打开测试工具,输入几组测试数据,验证接口返回的结果。
第一组,过了。
第二组,过了。
第三组,数据格式报错。
他皱起眉头,查了半天,发现是知识库返回的字段里有个null值,导致JSON解析失败。
他加了层空值判断,重新跑。
过了。
他长出一口气,靠在椅背上。
窗外的城市依然灯火通明,但办公区里漆黑一片,只有他这一台屏幕亮着。
他想发条消息给林晓,告诉她接口准备好了。
但他忍住了。
他觉得还是等明天联调的时候再汇报,比较正式。
他看了眼自己的进度——状态机、上下文管理、知识库检索接口,三个模块的代码都写完了,测试也基本跑通。
明天的联调,应该没问题了吧。
他这样想着,心里稍微踏实了一些。
他站起来,伸了个懒腰,骨节咔咔响。
然后他重新坐下,开始写联调测试用例的文档。
凌晨三点,张伟趴在工位上睡着了。
他枕着自己的手臂,脸埋在胳膊里,呼吸均匀。
办公区的空调嗡嗡作响,温度开得很低,冷气一阵一阵地吹过来。
他迷迷糊糊地梦见自己坐在高考考场里,面前是一张空白的试卷。
铃声响了,监考老师开始发卷。
但他发现,卷子上一个字都没有。
他想问老师,但喉咙里发不出声音。
他想站起来,但腿像灌了铅一样沉。
他就这样坐在空白的试卷前,无助地看着考场里的人一个接一个交卷离开。
直到他被一阵闹钟声惊醒。
早上六点四十五分,闹钟准时响起。
张伟抬起头,脖子酸得像被人拧过。
他眯着眼睛看了眼手机——还有三个多小时,联调就要开始了。
他揉了揉僵硬的脖子,站起来活动了一下。
办公区里空无一人,只有保洁阿姨在远处拖地。
他走到茶水间,用冷水洗了把脸。
镜子里的自己,眼圈发黑,眼白里布满血丝,看起来像熬了三天三夜。
他想,这就是拼命的感觉吗。
他用毛巾擦干脸,然后回到工位上,把代码从头到尾过了一遍。
七点半,他收到林晓的消息。
「今天联调的事情,准备好了吗?」
他回复:「准备好了。」
发完这条消息,他长出一口气。
他想,不管怎么样,代码是写完了。
剩下的,就看联调顺不顺利了。
八点钟,公司的人陆续来上班。
张伟去楼下便利店买了两个包子和一杯豆浆,坐在工位上边吃边看代码。
他吃得很慢,没什么胃口,但还是强迫自己咽下去。
他想,今天可能是场硬仗,得吃饱了才有力气打仗。
八点半,王海文来了。
他看到张伟还在,愣了一下。
“你昨晚没回去?”
“回去睡了会儿。“张伟说,“凌晨三点多趴了一会儿。”
王海文看着他,欲言又止。
最后他只是拍了拍张伟的肩膀,说了句:“加油。”
张伟点点头。
他想,海文哥这个人,话不多,但很实在。
九点四十五分,张伟收拾好东西,拿着笔记本走向会议室B3。
路上他又经过了茶水间,这次没闻到咖啡的味道。
他低头看了眼时间——还有十五分钟。
他加快脚步,走进会议室。
会议室B3比B2大一些,长桌上摆着投影仪和几台笔记本电脑。
林晓已经在了,坐在长桌的一端,面前放着她的平板和一台 Dell 笔记本电脑。
她今天穿着一件白色的衬衫,头发依然扎成马尾辦,表情严肃。
但张伟注意到,她的桌上放着两杯咖啡,一杯已经喝了一半。
“坐吧。“林晓指了指对面的位置。
张伟坐下来,打开笔记本。
“先说一下今天的议程。“林晓点开平板,“我们先跑一遍接口对接,然后模拟几个典型场景,验证一下整体流程。”
“好。“张伟说。
林晓调出接口文档。“我先说测试计划。今天主要测三个场景:第一,用户问一个常见问题,系统从知识库检索答案。第二,用户问一个需要多轮交互的问题,系统引导用户逐步描述。第三,用户说’转人工’,系统把对话转给人工客服。”
张伟一边听,一边点头。
“你那边准备好了吗?”
“准备好了。“张伟说,“三个接口都可以调用。”
林晓点点头。“那我们开始。”
第一个场景,常见问题咨询。
林晓在平板上输入:“我的订单号是 20260904001,请问什么时候发货?”
系统返回:“正在为您查询……根据物流信息,您的订单已于9月3日发货,预计9月5日送达。”
张伟看了眼返回结果,心里松了一口气。
第一组,过了。
林晓点点头,在平板上记录了一下。
“第二个场景。”
她继续输入:“我想退货。”
系统返回:“您好,请问您是想办理退货手续吗?请问您的订单号是多少?”
林晓看着屏幕,眉头微微皱起。
“用户说’我想退货’,系统直接问订单号?这个交互有点生硬。“她说,“用户可能还没准备好提供订单号,系统应该先确认用户的意图,再逐步引导。”
张伟愣了一下。
他想,这个逻辑上确实有些问题,但他觉得无伤大雅。
“我调整一下交互流程。“他说。
“不急。“林晓说,“先把三个场景跑完,最后一起改。”
“好。”
林晓继续输入:“是的,我要退货。”
系统返回:“好的,请问您的订单号是多少?”
“请问是什么原因需要退货呢?”
林晓停下来,看着屏幕。
“系统问了一个额外的问题。“她说,“用户在提供订单号之后,系统不应该再追问原因,而应该直接引导用户提供订单号。”
张伟看了眼代码。
他想,确实是个bug——状态机的逻辑写错了,导致多问了一步。
“这个我改一下。“他说。
林晓没有说话,只是在平板上继续记录。
“第三个场景。”
她输入:“转人工。”
系统返回:“正在为您转接人工客服,请稍候……”
三秒钟后,返回:“人工客服当前忙,请稍后再试。”
林晓盯着屏幕看了几秒。
“人工客服的接口联调了吗?“她问。
“联调了。“张伟说,“接口是通的。”
“接口是通的,但业务逻辑不对。“林晓的语气变得严肃,“用户说’转人工’,系统应该先判断人工客服是否在线,而不是直接转过去然后返回’忙’。这个体验很差。”
张伟沉默了一下。
“我改。”
林晓合上平板,看着他。
“张伟,你这三个问题,我之前没有跟你对过?”
张伟想了想。
“第二个和第三个场景的细节,我们没有对过。第一个场景的交互流程,我理解有偏差。”
林晓点点头。
“我明白。“她说,“但是张伟,我需要你知道——今天这个联调,客户的人也会参加,时间定在下午三点。”
张伟愣了一下。
“客户下午要来?”
“对。“林晓说,“而且他们会带一个技术团队过来,跟我们对接口文档。如果发现重大问题,我们会很被动。”
张伟的心猛地沉了下去。
他想,下午客户就来?
他看了眼时间——上午十点二十。
距离下午三点,只有不到五个小时。
“我需要你今天上午把这些问题全部修好。“林晓说,“下午两点之前,我要看到新的版本。”
张伟看着林晓的眼睛。
那双眼睛里没有责备,只有一种公事公办的冷静。
“我尽量。“他说。
“尽量不够。“林晓说,“能不能完成?”
张伟深吸一口气。
他想,这是一个承诺。
如果他说不能完成,后果可能很严重。
但如果他说能完成,而他做不到,后果可能更严重。
他犹豫了一秒钟。
“能完成。“他说。
林晓看了他一眼。
“好。“她站起身,“那就这样。你先去改代码,有问题随时找我。”
“好的。”
林晓走到门口,忽然停下来。
“对了,张伟。”
“嗯?”
“中午记得吃饭。”
然后她推门出去了。
张伟坐在会议室里,看着空荡荡的门口。
他想,林晓这个人,到底是冷血还是体贴?
他分不清楚。
十点半,张伟回到工位,开始改代码。
他先把状态机的逻辑理了一遍,找到问题所在——意图识别的状态转移写错了,导致多轮对话的时候多走了一步。
他修改了状态转移的逻辑,重新跑测试用例。
第一组,过了。
第二组,过了。
第三组,过了。
他松了口气。
然后他开始改转人工的逻辑。
他调用了一个新的接口,用来查询人工客服的状态。如果在线,就转过去;如果不在线,就提示用户等待,而不是直接转过去再返回”忙”。
他改完代码,重新测试。
过了。
他看了眼时间——十一点半。
还有两个半小时。
他把三个问题全部改完,代码重新打包部署。
十二点钟,他给林晓发了条消息。
「三个问题已修复,新版本已部署,你那边验证一下。」
过了几分钟,林晓回复。
「收到,我下午一点开始验证。一点半之前给你反馈。」
张伟回复:「好。」
他把手机放到一边,揉了揉太阳穴。
然后他站起来,拿着工牌,准备去吃饭。
走到电梯口的时候,他忽然感觉一阵眩晕。
他扶住墙壁,闭上眼睛,等了几秒钟。
眩晕感慢慢消退。
他想,可能是低血糖了。
他深吸一口气,走进电梯,下楼去便利店。
十二点半,张伟坐在便利店门口的长椅上,吃着一个三明治。
他吃得很慢,没什么味道。
阳光从树叶的缝隙里洒下来,落在他的脸上。
他想,这阳光真刺眼。
他想,这三明治真难吃。
他想,下午的联调,能顺利吗?
他不知道。
他把三明治吃完,站起来,拍了拍裤子上的面包屑。
然后他走回公司。
下午一点半,林晓发来反馈。
「新版本验证完了,整体流程没问题。但有两个小问题:第一,第二个场景里,系统追问原因的时候,语气有点生硬,建议优化一下话术。第二,转人工的时候,如果人工客服队列里有多个客服,系统应该显示排队人数。”
张伟看着这两条反馈,心里松了一口气。
不是致命问题,改起来也不难。
他回复:「收到,我改一下。」
然后他打开代码,开始修改。
两点十分,改完了。
他重新部署,打包,通知林晓。
两点二十,林晓回复:「验证通过。」
张伟长出一口气。
他靠在椅背上,看着天花板发呆。
两点四十五分,林晓发来消息。
「客户到了,在会议室B1。你过来一下。」
张伟拿起笔记本,站起身。
他深吸一口气,整理了一下衣领。
然后他走出办公区,朝会议室B1走去。
会议室B1里坐着四个人。
林晓坐在长桌的一端,旁边是一个三十多岁的男人,穿着西装,戴着眼镜,看起来像是客户方的技术负责人。
对面还坐着两个人,一男一女,年龄都在三十岁左右,看起来像是产品经理或者业务专家。
林晓看到张伟进来,朝他点了点头。
“这位是张伟,我们这边负责对话管理模块的技术。“她说。
那个穿西装的男人站起来,伸出手。
“我是德勤信息的IT总监,我姓周。“他说,“今天过来主要是对一下接口文档,顺便看看系统的演示。”
张伟和他握了握手。
“周总好。”
周总点点头,重新坐下。
“我们先看一下接口文档吧。“他说。
林晓打开投影,调出接口文档。
“这是知识库检索接口的文档。“她指着屏幕,“接口地址、请求参数、返回格式,都在这里。张伟,你来介绍一下。”
张伟站起来,走到屏幕前。
他深吸一口气,开始讲解。
“知识库检索接口,主要有三个参数:用户问题、标签、分类……”
他讲得很慢,但很清晰。
周总一边听,一边点头。
“意图识别接口呢?“他问。
张伟切换到下一页PPT。
“意图识别接口,主要用于判断用户想问什么。我们定义了十二种意图类型,包括查询订单、办理退货、修改地址……”
他讲完接口文档,又讲了对话管理的整体架构。
周总听完,沉默了一会儿。
“整体逻辑没问题。“他说,“我们想看一下系统演示。”
林晓看了张伟一眼。
“张伟,你来演示一下。”
张伟点点头。
他打开演示环境,开始输入测试问题。
第一个问题,常见问题咨询。系统顺利返回答案。
第二个问题,退货流程。系统引导用户提供订单号和退货原因,流程很顺畅。
第三个问题,转人工。系统先查询客服状态,发现有三位客服在线,显示排队人数,然后转接成功。
周总看着演示,眉头慢慢舒展开来。
“不错。“他说,“比我预期的要好。”
林晓的嘴角微微上扬,但很快又恢复了严肃的表情。
“周总,还有什么要确认的吗?”
周总想了想。
“接口文档里有个字段,我想确认一下。“他说,“知识库检索接口里有个’相关问题’字段,这个字段是什么意思?”
张伟愣了一下。
他想,这个字段是他之前加的,但他不确定客户方是否知道。
他看了林晓一眼。
林晓的表情很平静,似乎在等他回答。
“相关问题字段,用于存储和当前问题相关的其他问题。“张伟说,“当用户问了一个问题,系统除了返回答案之外,还会返回几个相关的问题,方便用户进一步咨询。”
周总点点头。
“这个设计挺贴心的。“他说,“我没什么其他问题了。”
他转向林晓。
“林经理,整体进度符合预期。我们下周再来,看一下完整系统的演示。”
林晓点点头。
“好的,周总。”
双方站起来,握手告别。
送走客户,林晓回到办公区。
张伟还站在会议室门口。
“今天表现得不错。“林晓说。
张伟愣了一下。
他没想到林晓会这么说。
“谢谢。“他说。
“但不要放松。“林晓说,“下周客户要看完整系统,时间还是很紧。”
“我明白。”
林晓点点头,朝自己的工位走去。
张伟站在原地,看着她的背影。
他想,今天的联调,总算过了。
但他不知道,这算不算胜利。
他只知道,他可以暂时松一口气了。
他拿出手机,看了眼时间——下午四点十分。
他想,今天的晚饭,他要吃顿好的。
他打字,给女朋友发了条消息。
「今晚不用加班了,我们去吃火锅吧。」
过了几秒,女朋友回复:「好啊!你终于不加班了!」
张伟看着这条消息,嘴角微微上扬。
他想,生活还在继续。
不管明天怎样,至少今晚,他可以好好吃一顿。
他收拾好东西,下班了。
(待续)