土拨鼠日志:电脑上说做完了,手机还在等你确认
今天最烦人的一个反馈,来自最普通的场景:在电脑上把事情办完、点了结束,掏出手机刷新,那条任务还挂着黄色的「需要确认」。再刷几次,还在。点进首页,顶部写着「待确认 1」,进去一看——那件事上午就办完了。
这类问题很典型:不是算错了,是「谁说了算」没排好顺序。今天把它从三个方向一次修完,过程值得写下来。
一、根因一:状态判定把「人手拍板」排在了最后
原来的判断顺序是:先看还有没有在跑 → 再看有没有残留的「等确认」标记 → 最后才看结案。听着挺合理,实际会出问题:结案是人的决定,它应该压过一切靠「活气」推断出来的状态,可它偏偏排在最后,于是被一条陈旧的「等确认」死死压住。
修法很直接:把结案判断提到最前面。只要已结案、又确实没在跑,就直接显示「完成」,不再黄闪橙闪。首页那个「待确认」计数原来直读底层标记,现在也统一走同一套判定——同一个事实,全站只能有一个口径,否则迟早出现「首页说有 1 条、点进去 0 条」。
二、根因二:标记是会过期的,UI 必须有真账兜底
第二层更隐蔽。结案标记不是永久的,它有清理周期(我们这边是 24 小时)。于是出现一种很坑的复现路径:昨天结的案,标记今天被清掉了,但底层还残留一个「被打断」的旧灯,页面就永远橙闪,怎么刷新都不对。
- 只靠标记的界面,重启一次、过期一次,就会复发
- 正确的兜底是看真账:真账说
idle(没在跑、也没在等),就不许再冒充「待确认」 - 标记用来加速显示,真账用来兜底判断,两者不能反过来
这条经验其实通用:任何「缓存出来的状态」都必须能被一次真实查询推翻,否则缓存就成了谎言的来源。
三、根因三:把「验收提醒」错当成了「等你拍板」
第三处最有意思,也更像人的思维习惯问题。我们靠「最后一条是不是它发的、里面有没有问句」来判断要不要等你回话。结果两种完全不同的结尾被混为一谈:
- A(不该等):「✅ 完成:图标已经能正常显示。【要您做的:按 Ctrl+F5 刷新看一下】」——这是让你验收,球还在它那边,它该继续干
- B(该等):「✅ 办成三项,还有一个待定。【要您做的:方案一降到 30 秒 / 方案二不动,请选一个】」——这是真选择题,你不回它就不该动
区别不在有没有「要您做的」,而在里面有没有真正的选择。修法是:结案汇报结尾的提醒,只要全是「刷新 / 看看 / 检查 / 截图发我」这类验收动作,且没有「请选一个、二选一、哪条路、要不要我」这类字眼,就判定为「仍在办」,不占你的待确认列表。改完拿 14 条真实会话回放,只有真正要拍板的那一条还亮着。
判断要不要等人,只要问一句:球在谁手里?结尾是它自己的下一步,就是还在办;结尾是问你选哪个,才是等你。
四、顺手补的一课:一次采样不算数
今天还有个同类教训,在另一件事上:测速。单次采样能差出十倍——某条线路第一次测出 1MB/s,同一分钟再测只有 160KB/s。后来统一改成固定测点、三次采样、取中位,结论才稳定。跟状态判定是一个道理:单点数据只能当线索,不能当结论。
如果你也在做多端产品,这三条可以直接抄:结案优先;标记必须有真账兜底;分清「验收动作」和「选择题」。想看土拨鼠在这些细节上还做了什么,功能页 有完整清单;想了解它每天自我修复的记录怎么对外公开,动态列表 每天都更新;准备上手的话,下载页 装一个,用手机和电脑同时开一条任务,自己验一遍最快。
土拨鼠 Marmot