“这类人,我们确实有。”
李萍的回复像一根火柴,把会议室里快要熄下去的疲惫重新点亮。可林川还没来得及开口,陈海那边的测试窗口就跳出一片红色。
“稳定性没过。”陈海把日志拖到大屏,“低可信场景簇一放大,候选召回耗时翻了三倍。离线小样本能跑,全量灰度前会卡。”
刚露出一点笑意的叶辰立刻坐直,脸色发白:“是我那个弱关联入口的问题?”
“不是追责。”林川看着红色报错,“李萍确认的是业务场景,不代表我们可以把未验证的东西推上线。今晚目标变了,先把它做成能解释、能回退、能承压的初版。”
他在白板上写下三行:稳定性、解释口径、灰度风险。
窗外天色发青,办公室里的灯还亮着。南城优选的七天倒计时没有因为他们找到方向而停一秒。现在真正的阻碍不是找不到路,而是这条路能不能让客户放心走上去。
陈海揉了揉眼睛:“候选召回如果按每个低可信用户即时算,肯定慢。要么提前做场景簇索引,要么只在固定商品池里查。”
叶辰低声接上:“可以把同小区、时间窗口和商品组合先做成临时场景标签,不存个人身份,只存候选理由。灰度时先查标签,再过退货风险和毛利校验。”
后端立刻摇头:“标签太多也会乱。南城那边三套编号,本来就不干净。”
林川把李萍的八个字单独截出来,放到确认表第一页:“所以只做她确认过的两类场景。家庭补货,团购自提。没有运营确认、没有售后备注、没有订单组合的,一律不进。”
陈海看了他一眼,点头:“那就不是全量模型,是灰度引擎。”
“名字先定下来。”林川说,“星火。”
会议室安静了一瞬。
这个名字不大,也不夸张。星川现在还不是能照亮整座城的公司,它只是从脏数据和冷眼里找出了一点能烧起来的东西。
陈海敲下文件名:“星火推荐引擎,南城灰度初版。”
有了边界,事情反而快了。陈海拆召回入口,后端把场景标签缓存成只读索引,测试重新压测两类场景簇,前端把推荐理由页面改成三列:为什么推荐、为什么不推荐、如何回退。
叶辰盯着自己那张异常表,一条条删掉证据不足的记录。删到最后,他有些心疼:“这些可能也是同类用户。”
林川站在他身后:“可能不是上线依据。”
叶辰手指停了停,最后按下删除:“明白。”
凌晨六点二十,第一轮稳定性测试通过。召回耗时被压回可接受范围,推荐理由页面能显示“同配送站点补货场景”“低退货家清组合”“毛利达标”这类普通运营也看得懂的说明。
年轻测试盯着报表,声音里终于有了点热气:“和南城原系统对照,两个场景簇的有效毛利模拟提升三十一点六,旧系统只有九点多。退货风险也没飘红。”
陈海没有立刻庆祝,而是又点开回退流程:“如果上线后投诉率或退货备注异常,系统自动回到第二版保守规则。人工置顶商品不参与结果归因。”
“写进给南城的灰度说明。”林川说,“还有,高风险SKU剔除原因也放进去。别让客户以为我们挑容易卖的做成绩。”
他停了一下,又补了一句:“所有截图和原始日志分开存,谁改过规则、什么时候改的,都要能查。星川第一次交付,不能只留下一个漂亮结果。”
说到这里,他拿起手机,给李萍打了电话。
那边接得很快,声音沙哑:“林总,我刚从仓库出来。你们那边怎么样?”
“找到了初版方案,但不是全平台上线。”林川开门见山,“只做两类你确认过的场景簇,商品池限制在纸品、家清和低退货刚需补货。临期饼干和小电锅暂时不进,原因已经写清楚。”
李萍沉默了几秒:“邵总会问,库存最重的为什么不先卖。”
“你可以让他看售后照片。”林川说,“包装受潮和插头问题不是推荐能解决的。我们今晚要证明的是,推荐能把真有需求的人和真能交付的货连起来,不是替坏库存找接盘。”
电话那头响起纸张翻动声。李萍像是在看他刚发过去的确认表。
过了一会儿,她问:“推荐理由能给运营看吗?上一家服务商只给黑盒包,出事后我们连解释都解释不了。”
“能。”林川看向前端屏幕,“每个灰度商品会显示场景依据、退货过滤和毛利口径。你们可以不同意某条理由,星川不强推。”
李萍的声音终于稳了些:“我去找邵总。”
电话挂断,办公室又静下来。没人敢提前把这当成胜利。南城优选不是数据表,用户也不是模拟曲线。真正上线后,任何一个投诉、退货或运营临时动作,都可能把结果打回原形。
陈海把最终压测报告发到公司邮箱,忽然说:“林总,我以前做项目,最烦解释模块。客户看不懂,老板嫌费时间,开发也觉得不如多堆点功能。”
林川看着屏幕上那一列推荐理由:“以后星火的解释不能砍。我们现在小,客户愿意赌,是因为他看得见风险在哪里。等以后做大了,更不能让系统变成谁都说不清的黑箱。”
陈海慢慢点头,把“可解释说明”从附属文档挪进主目录。
叶辰抬头看了一眼,又低头在页面旁边补了一行:不以单一点击率作为成功依据。
早上七点四十八分,周野发来一条语音。医院那边很安静,他声音低哑:“我看了你们的报告。别急着追全量,先把可解释和回退守住。这个方向有价值。”
林川听完,把语音转存到项目记录里,没有转发给客户。周野还不是星川正式员工,他的判断可以帮星川校准方向,却不能替星川对外背书。
八点三十分,第二轮对照测试完成。南城原系统在两类场景簇里仍把临期零食和小家电推到前列,星火初版则把纸巾套装、本地洗衣液和厨房清洁湿巾排在更靠前的位置。有效毛利模拟提升稳定在三十点上下,退货风险维持绿色。
陈海把最后一份报告拖到大屏上,声音终于压不住疲惫里的振奋:“南城灰度初版,可以交付。”
林川看着一屋熬红眼的人,心里没有那种一夜暴富时的眩晕,反而像手里终于握住了第一块真正由团队打磨出来的砖。
他没有说漂亮话,只把邮件标题敲出来:星火推荐引擎初版灰度方案及风险说明。
发送前,他逐项检查附件:客户确认表、场景簇依据、商品池边界、压测报告、回退规则、结算口径。没有系统提示,没有神秘捷径,只有一整夜被反复验证过的证据。
九点零六分,邮件发送成功。
十五分钟后,邵明的电话打了进来。对方声音还带着仓库里的嘈杂,却比昨天果断许多。
“林总,说明我看了。”邵明说,“我不懂算法,但我看得懂哪几类人会买,哪几类货不该硬推。”
林川握着手机:“灰度上线后,运营不能临时插商品,人工置顶也不能混进结果。”
“我签。”邵明停了一下,“今天上午十点半,按你们这版星火,直接开第一轮灰度。”
会议室里所有人都抬起头。
林川看向大屏上“星火推荐引擎初版”的字样,声音平稳:“好。星川负责上线监控和回退,南城负责运营口径不变。十点半,我们看真实订单。”