Files
kefu/deploy/contact-recovery-20260918/DIAGNOSIS.md
T
2026-09-21 10:34:06 +08:00

2.2 KiB

协议重加好友后收不到消息:排查及修复

已确认原因

运行客户端为 v1.4.27。受影响会话“一个小迷糊”的 9 月 18 日 14:16:23、14:18:34、14:19:35、14:20:18 消息均已进入本地消息库,协议去重记录已推进到最后一条。最后一条真实“不是联系人”系统提示却来自 9 月 15 日 10:48:11。

旧程序在每次生成前扫描历史上下文,将这条旧提示重新记为当前联系人限制,保留 6 小时;限制期间新消息被记录为已见却未入队。缺少特定“添加成功”系统文案时,重加好友不会自动解除旧限制。反复扫描还会刷新限制时间,所以单纯等待或重启不能可靠恢复。

截图另一会话“高瑞”是已开启提醒的医疗助理收件人。助理会话按既定规则不参与自动问答,避免提醒循环,不是消息接收失败。

v1.4.28 的修改

限制记录保存原系统提示/实际拒收的消息锚点,不再因读到旧提示而刷新 6 小时跳过。对于新的真实客户消息,核对当前账号、精确会话、客户关系与发送日志后重新生成、风控;不根据同名或聊天文本推断联系人身份,不重发已尝试的旧稿。

每 5 秒最多复查 2 个受限会话,可补回旧版已记为已见但未尝试发送的最新未答问题。已经人工审核、发送结果未知或发送失败的现有任务仍保留原处理要求。

客户关系读取包含当前账号 user.db WAL 中已提交事务;不读取半写入事务,不跨缓存目录猜测有效关系。有效的本地客户关系只允许新问题重新核验,最终发送仍以企微回执为准。如果再次明确拒收,记录新的拒收锚点。

验证边界

协议核心 194 项、数据库相关 60 项隔离回归通过。真实会话仅做只读元数据核验:旧判断命中历史限制、新判断允许最新问题重新核验;最新消息无既有发送日志。测试期间未发真实消息、未调用真实问答接口、未修改用户设置或运行队列。安装包验收结果以 release-v1.4.28.json 为准。

从托盘退出旧客户端后安装 v1.4.28,再启动协议监听。无需再次删除或添加好友,原有医疗助理绑定与配置保持不变。