Files
wx-win-agent/docs/PENDING.md
T
rogee e8abb15f68
Build web service image / build (push) Successful in 1m6s
fix: authorize verified offline data sync
2026-09-30 13:30:48 +08:00

9.6 KiB
Raw Blame History

PENDING:暂缓功能与验收备忘

本文件记录全局 review 后的用户决定。用户随后确认同时完善数据库读取链路和四项代码问题;以下明确暂缓的扩展与真机验收仍不执行。暂缓不等于通过,安全修复也不等于端到端功能已验收。

当前正常功能复核(更新至 2026-09-30)

  • 长文本分段、2–10 个附件批量入口、提及重名 fail-closed 保护和合并聊天混合元数据解析已补代码及离线测试;TaskNotFound 修复保留。
  • 已通过 Core 193/193、Service 26/26、Go 测试与 vet、WebUI 7/7 与生产构建及完整 Release solution build(0 warnings/errors)。Windows Host/Tray 新版本已部署,service.json 未变。
  • Windows inspect-ui 成功,但 doctor/smoke 返回 WechatNotLoggedIn,必需聊天控件缺失;本轮未发送任何消息/附件,也未执行任何 M4/M5 可见写操作。上述功能的真机验收保持未完成,不得勾选为通过。
  • 可脱离聊天 UI 的只读检查通过:批准的测试群成员页返回 2 个成员、0 空显示名、0 重名且无续页;chat send-files 重复 --path 解析成功,并在随机缺失路径预校验返回 InvalidArgument,未触及 UI。只保留聚合计数,未记录成员姓名。
  • Weixin 关闭后再次验证本地数据库能力:db status 返回 1 个账号/20 个数据库,filehelper 消息读取返回 20 条且不输出正文,批准群成员分页仍返回 2 个唯一显示名,Hao 豪 联系人查询返回 1 个精确结果。
  • 生产 DatabaseMessageSyncCollector 使用现存检查点(序列 4,223、427 个会话游标)离线采集到 1 条新消息,结果 complete、无 unavailable source,消息正文只以布尔值存在性确认;采集期间 Weixin 进程始终为 0,检查点和 service.json 均未改变。
  • 上述结果只证明离线读取/收集,不等同远程新批次确认。2026-09-30 修复了控制面 sync-status 将“活动 UI 账号”误用于只读数据授权的问题:数据状态查询现在仅要求注册账号身份 verified;UI 任务仍要求 active + verified,并有 Go 回归测试。更新控制面后健康检查 HTTP 200,已验证但无活动 UI 会话的账号可读取消息流状态(complete、确认序列 4,223,与本地 source generation 匹配)。远程最后确认时间仍约 25 小时前。生产全范围 wildcard 离线采集返回 460 个会话、426 条消息、complete、0 unavailable、hasNewItems=false;队列为空,没有产生新批次或新的远程 ACK。此前显式 filehelper 范围探针报告 1 条候选记录,但这不是全范围会话快照的新增项,也不能证明已上传。contacts 流状态仍为 unknown,未验证联系人快照上传。保持“新批次上传/确认未复验”,不要把本地探针结果或旧检查点标记为本轮远程同步完成。
  • 离线身份验证修复后的 Host SHA-256:3C7A5628C37CA33AF96944A950E7B81002437010AE34AC9BC81461EFFE7373CA;Tray SHA-256:CFABF0BFB3AAB595DF240E75481F51A5DC96B8E9A6A0094A047F83B2BB35CC6D。控制面更新二进制 SHA-256:1cb05554056256f12d5ce5a8c6824095d7ca37dbbff282e4661d71b854e24b87。service.json SHA-256 仍为 5F4F40E040A7D69060CC09F1A390277286FA982D6EFBEF3D825DBCF29B6A56BB,Windows 备份为 backup-offline-sync-20260930-122015。
  • Windows MCP 桌面窗口列表未发现 Weixin;Weixin 进程保持 0。新部署后由 SSH 发起的 doctor/inspect-ui/read-only smoke 未形成有效交互会话验收;没有启动客户端或执行写操作,UI 相关项继续 pending。
  • 详细范围、哈希、证据及未闭环项见正常功能复核与验收记录。M6 仍保持未完成。

已确定的功能边界

  • 联系人、群成员等列表读取使用数据库,不使用 UI 树枚举。 撤回上一轮将 UI 树长列表枚举不完整作为待补功能的建议,不新增 UI 滚动分页。此项记录用户指定的读取方式,不代表本轮已逐条验证数据库接口覆盖情况。
  • 不实现“下一个未读会话”功能。 开发计划中的 GetNextNewMessage 不再作为当前待实现或验收阻塞项;此决定不取消已有消息监听能力。

暂缓的功能及样本补齐

  • 提及成员长列表、不可见重名候选的完整处理。
  • 长文本自动分段、多附件批量发送。
  • 合并聊天记录的混合图片/视频/文件、嵌套合并真机样本验证。
  • 合并聊天记录附件原文件下载;不视为已实现的数据库展开结果的一部分。
  • 语音发送 Beta 的后续完善与真机发送验收。当前无麦克风环境下的验收已由用户明确跳过,不标记为失败或通过。

数据库合并聊天记录展开已有实现及验收记录,不将其整体列为缺失功能。

暂缓的验收

以下均暂不执行;已有短时 smoke、编译或确认门禁检查不能代替这些验收。

  • M4 联系人、群管理副作用路径的专用测试对象端到端验收。
  • M5 朋友圈发布、点赞、评论及拍一拍等尚未覆盖的写操作验收。
  • 8/24/72 小时真实监听、内存/句柄/线程等资源趋势验证。
  • 网络中断与恢复、20 次微信重启恢复;不绕过登录或锁屏。
  • 常见弹窗、会话切换的专门恢复回归。
  • 多会话/多子窗口消息归属、去重及长列表场景回归。
  • 连续 500 条发送无重复验证。
  • Windows 10 多 DPI、Windows 11 兼容矩阵。
  • 上述验收恢复并完成后,汇总证据、更新阶段结论。

M6 保持未完成状态,不因暂缓而改成验收通过。恢复写操作验收时仍遵守 AGENTS.md 的测试对象、安全确认和禁止盲目重试规则。

本轮实现及仍未闭环的项目

已完成代码修复,尚未真机验收

  • db contacts 与管理 API 复用只读联系人数据库读取器;按稳定 username 排序,不按显示名去重。CLI 支持 --limit/--offset,返回 hasMore/nextOffset,默认继续脱敏。
  • 联系人、群列表、联系人详情不再回退 UI 树枚举。分页 API 显式支持账号和密钥文件选择;多账号未选择时拒绝猜测。兼容方法有数量上限,完整遍历应使用分页 API。
  • URL 卡片 API 不需要确认令牌;通过文件传输助手暂存 URL、微信内置浏览器“转发…”流程发送原生链接卡片,不回退成 URL 文本或清空目标草稿。
  • OCR/转文字只采集绑定消息内新增且稳定的 Text 节点;消息归属、运行时 ID 或布局失配时拒绝返回,不再拼接整窗内容。
  • 管理输入限定唯一模态弹窗;同名控件歧义、重复选人及未确认勾选时停止,不再任取第一个控件。朋友圈编辑拒绝覆盖现有草稿。
  • 管理、朋友圈、转发等提交后等待稳定 UI 状态再返回成功;单文件下载校验新目标路径及落盘稳定性,笔记附件保存等待目标目录产生文件,不直接把点击保存当成成功。

仍需完善,不宣称已完成

  • 群成员数据库读取:使用 chat_room、chatroom_member、contact 的只读 join,稳定按 member_id 分页;不回退 UI 枚举。已在 Windows 测试群完成脱敏只读验证。
  • 原生 URL 卡片创建和发送:使用微信内置浏览器的“更多 → 转发…”路径,URL 卡片 API 不要求 CONFIRM;仍需在不同微信版本补充 UI 回归。
  • 独立 OCR 窗口及各版本转文字结构:当前仅支持目标消息内新增文本。独立弹窗/侧栏没有可靠的结果归属定位时返回 ResultUnconfirmed;状态关键词属于保守启发式,可能拒绝包含相同文字的合法结果。
  • 写操作结果确认:统一等待确认弹窗关闭且 UI 连续稳定后返回 Success=true;下载和笔记附件保存另有文件系统后置检查。微信服务端最终一致性仍需真机长测记录。
  • 管理弹窗真机定位:确认各版本模态窗口、选人复选框及保存对话框结构;暂不支持的内嵌/非模态布局会明确失败,不全窗乱点。
  • 联系人数据库字段覆盖(阻塞):当前只映射已验证的 username/nick_name/remark/small_head_url。2026-09-29 Windows 只读 schema 检查确认 contact 有 22 列(另见 alias、description、extra_buffer),并有 contact_label 定义表;没有验证出联系人到标签的关联或这些字段的业务语义,故不猜测映射、不解析不透明 BLOB。非群联系人也不等于已验证好友关系;标签、签名、来源和共同群数量仍未知。GetRecentGroupsAsync 是参考实现的兼容名称,当前 C# 计划没有该 API,且不要求 Python API 兼容;近期活动排序没有已验收的数据源,不作为本轮承诺。
  • 分页一致性:跨页为独立只读查询;读取期间联系人增删可能导致 offset 分页重复/遗漏。需要严格全量快照时应增加一致性读取,不将跨页结果宣传为事务快照。

实现和 Linux 检查详情见 本轮检查记录。

参考