挂号类型检索与 IM 无效账号修复
完成内容
- 截图对应的挂号列表增加“挂号类型”:全部、视频问诊、图文问诊。点击查询、切换分页及重置均携带/清除该条件,列表总数和状态角标使用同一条件。旧的空类型按既有规则归入视频,详情见 appointment-filter.md。
- 修复
invalid Operator_Account or Peer_Account大量重复出现的问题:后台成员并不一定注册过腾讯 IM,读取前先用只读account_check批量核验,每请求最多 100 个账号,再同步已注册医生与患者的会话。不会为查询历史批量创建空账号。接口依据见 account-check.md。 - 未注册或已失效的医生账号跳过,并在页面显示跳过数量;不作为同步失败逐个刷屏,已有本地归档照常显示。患者账号缺失、权限错误、网络错误和不完整的校验结果仍明确报错,不会误判为“没有消息”。其他真实会话错误超过 3 项时可展开查看。
- 核验与历史读取分开执行,避免多次云端调用叠加造成一次 HTTP 请求超时。旧版本尚未完成的同步 token 会重新核验,已归档数量保留,已写入消息继续幂等去重。每个新同步周期重新核验,新开通账号可自动参与后续同步。
验证
- 前端及筛选回归共 36 项通过:挂号类型筛选 8 项、聊天历史 16 项、聊天归档触发 5 项、既有图文通话限制 7 项。
php server/tests/TencentImAccountCheckTest.php:真实账号检查服务,HTTP 替身,覆盖 100/101 边界、请求响应契约、缺失账号和真实错误的区别。php server/tests/ImChatArchiveTest.php:实际归档流程,模拟 184 个医生中 183 个未注册;只向有效医生发送漫游请求,同时验证第二批失败不推进、患者账号缺失保留归档、所有医生缺失、旧 token 迁移及原有历史完整性用例。- 分页器、回调(81 项)、定时补偿回归通过。修改的 PHP 语法及
git diff --check -- admin server通过。 - 管理端构建日志见 build.log。
测试使用虚构数据、严格内存替身和内存 SQLite,不访问业务数据库,也没有调用真实腾讯接口。
发布
发布本次 admin 和 server 修改后刷新页面即可;本轮不需要新增数据库字段或执行 SQL。当前仅完成本地修改和验证,未进行线上发布。此前新增的即时归档回调若尚未启用,仍按 聊天归档上线说明 配置。