用户在帮助中心搜「发票抬头怎么改」,结果 0 条,窗口直接收起,底下小字写着会话已结束,再点开是一个新的空会话。日志里能对上时间点,这种反而好排。
匹配失败的分支里调用了关闭会话的方法,把状态置成 closed 并广播给前端。前端收到 closed 事件就收起面板,用户没有别的入口可走。这一点先确认清楚,后面就不用反复试。
$hits = cs_search_faq($q);
if (!$hits) {
error_log('faq_miss: ' . $q);
return cs_render_transfer();
}
这次卡住的地方就在「FAQ 零结果断线」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。
别只看报错的最后一行,往上看几行,真正的起因通常在上面。
处理上按这个顺序:零结果不要关会话,改成展示人工入口和相近问题;把没命中的词记下来,每周看一批,补进 FAQ;兜底文案里给一个继续提问的按钮,别只留一个关闭。
结果对不对很好判断,搜一个不存在的词,窗口不关,出现转人工和三条相近问题。
