傍晚六点四十分,路灯刚亮,办公楼里还有几盏灯亮着。沈莉坐在工位上,手指在键盘上敲完最后一行进度说明,把当天的项目看板更新好了。她伸手去拿桌边的保温杯,还没拧开盖子,手机响了。
她拿出来看了一眼,是运维群发来的一张截图,标题写着“接口异常告警”。她点开看了眼日志编号和报错代码,眉头没皱,但手停住了,把杯子放了回去。
她回到电脑前,登录后台查实时日志。等页面加载的时候,她推了下眼镜,另一只手打开便签,写了一条记录:“数据同步中断,定位子系统B03。”
日志出来后,她快速往下翻,找到出错的时间点。问题出现在第三方推送环节,状态码显示“超时未响应”,但其他模块都是正常的。她盯着屏幕看了十秒,打开排班表,看到今晚值班的是李哲和王倩。
她没有在群里回话,也没打电话,先打开邮件草稿箱,写了一封简单的说明:
“B03子系统今日18:35出现数据包丢失,初步判断为网络抖动或配置漏传,不影响主流程。已启动排查,预计二十分钟内反馈进展。”
写完她点了保存,抬头看钟——六点四十三分。她拿起手机,在团队群里@了李哲和王倩:“在吗?B03报错了,我开了个线上会议室,五分钟后进。”
两人马上回复“在”。她起身去茶水间,接了半杯水,顺手扶正了饮水机旁的“节约用电”提示卡。回来的路上,她把会议室链接发出去,又把刚才写的邮件转发给客户对接人,抄送了主管。
六点四十八分,她坐回位置,戴上耳机,进入会议。画面很快连上,李哲的摄像头开了,背景是他家的沙发,王倩还在公司,镜头对着她的工位。
“我说一下情况。”沈莉开口,声音平稳,“B03今天的数据包没推成功,日志显示请求发出后没回应。我查了前后流程,其他部分都正常,问题应该出在中间这一步。你们谁改过这个接口?”
李哲说他上周改过一次参数配置。沈莉让他把修改记录发过来。她一边看,一边在本子上画流程图,标出关键节点。看完她说:“你加的那个‘retry_limit’字段,是不是没在测试环境同步?”
李哲一愣:“……好像真忘了传。”
“就是这个问题。”沈莉共享屏幕,放大错误日志中的一行,“这里提示参数缺失,不是代码错了,是配置没生效。别重跑流程,先把测试环境的配置文件回滚,再补传一次。”
她转头对王倩说:“你联系第三方平台的技术支持,问他们有没有收到我们的请求。如果收到了但没处理,可能是防火墙拦了新字段。”
两人答应下来,开始操作。沈莉没关会议,耳机也没摘,回到主界面刷新监控面板。她顺手把桌上那张“今日事今日毕”的贴纸揭下来,发现边角翘了,又压平贴好。
七点零二分,李哲发消息:“测试环境回滚完成,补发请求已发出。”
七点零五分,王倩也回了:“对方技术确认收到了请求,正在处理,说是新字段没备案,被系统拦了。”
沈莉立刻在群里打字:“让对方把这次请求标记为已处理,我们这边手动更新项目看板状态。然后把正确的配置文件同步到所有环境,明天早上做一次全链路验证。”
她又补充一句:“文档今晚就更新,别等到明天。”
李哲回“明白”。王倩发了个敬礼的表情包。
七点十分,监控页面上,B03的状态由红变绿。沈莉盯着看了三秒,确认数据恢复,才关掉页面。她打开客户邮件,加了一句更新:“问题已定位并修复,数据补发成功,系统运行稳定。后续将加强配置同步管理,避免类似情况。”
发送后,她摘下耳机,揉了揉耳朵,喝了一口已经凉了的水。办公室很安静,只有空调的声音。她低头看表,七点十七分。
手机又响了,是团队群的消息。
李哲:“已恢复,客户回邮件说OK。”
王倩:“多亏你第一时间拉住我们,不然我还想提延期方案。”
接着有人发了个“大佬稳如泰山”的表情包,底下冒出好几个点赞。
沈莉看着聊天框,嘴角微微动了一下,没笑出来,眼神却松了下来。她把桌上散落的笔收进笔筒,检查了一遍电脑文件是否保存。合上笔记本前,她从西装口袋拿出一张HelloKitty纸巾,叠成小方块放在键盘边——这是她每次做完重要事情的习惯,像一种小小的仪式。
七点十九分,她站起来,把椅子推回桌底,拎起包,关掉台灯。走廊灯亮着,她走过一排空座位,脚步不快不慢。电梯口显示屏写着“1楼”,她按下下行键,等的时候整理了下袖口的纽扣。
电梯门开了,里面没人。她走进去,按下1楼。门慢慢关上,在合拢的瞬间,她看见自己映在门上的影子:戴黑框眼镜,戴珍珠耳钉,西装搭在手臂上,神情平静,就像只是做了一件普通的事。
电梯开始下降。