# 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。 - 详细范围、哈希、证据及未闭环项见[正常功能复核与验收记录](validation/Normal-Functional-Acceptance-2026-09-29.md)。M6 仍保持未完成。 ## 已确定的功能边界 - **联系人、群成员等列表读取使用数据库,不使用 UI 树枚举。** 撤回上一轮将 UI 树长列表枚举不完整作为待补功能的建议,不新增 UI 滚动分页。此项记录用户指定的读取方式,不代表本轮已逐条验证数据库接口覆盖情况。 - **不实现“下一个未读会话”功能。** 开发计划中的 `GetNextNewMessage` 不再作为当前待实现或验收阻塞项;此决定不取消已有消息监听能力。 ## 暂缓的功能及样本补齐 - [ ] 提及成员长列表、不可见重名候选的完整处理。 - [ ] 长文本自动分段、多附件批量发送。 - [ ] 合并聊天记录的混合图片/视频/文件、嵌套合并真机样本验证。 - [ ] 合并聊天记录附件原文件下载;不视为已实现的数据库展开结果的一部分。 - [ ] 语音发送 Beta 的后续完善与真机发送验收。当前无麦克风环境下的验收已由用户明确跳过,不标记为失败或通过。 数据库合并聊天记录展开已有实现及验收记录,不将其整体列为缺失功能。 ## 暂缓的验收 以下均暂不执行;已有短时 smoke、编译或确认门禁检查不能代替这些验收。 - [ ] M4 联系人、群管理副作用路径的专用测试对象端到端验收。 - [ ] M5 朋友圈发布、点赞、评论及拍一拍等尚未覆盖的写操作验收。 - [ ] 8/24/72 小时真实监听、内存/句柄/线程等资源趋势验证。 - [ ] 网络中断与恢复、20 次微信重启恢复;不绕过登录或锁屏。 - [ ] 常见弹窗、会话切换的专门恢复回归。 - [ ] 多会话/多子窗口消息归属、去重及长列表场景回归。 - [ ] 连续 500 条发送无重复验证。 - [ ] Windows 10 多 DPI、Windows 11 兼容矩阵。 - [ ] 上述验收恢复并完成后,汇总证据、更新阶段结论。 M6 保持未完成状态,不因暂缓而改成验收通过。恢复写操作验收时仍遵守 AGENTS.md 的测试对象、安全确认和禁止盲目重试规则。 ## 本轮实现及仍未闭环的项目 ### 已完成代码修复,尚未真机验收 - [x] `db contacts` 与管理 API 复用只读联系人数据库读取器;按稳定 username 排序,不按显示名去重。CLI 支持 `--limit/--offset`,返回 `hasMore/nextOffset`,默认继续脱敏。 - [x] 联系人、群列表、联系人详情不再回退 UI 树枚举。分页 API 显式支持账号和密钥文件选择;多账号未选择时拒绝猜测。兼容方法有数量上限,完整遍历应使用分页 API。 - [x] URL 卡片 API 不需要确认令牌;通过文件传输助手暂存 URL、微信内置浏览器“转发…”流程发送原生链接卡片,不回退成 URL 文本或清空目标草稿。 - [x] OCR/转文字只采集绑定消息内新增且稳定的 Text 节点;消息归属、运行时 ID 或布局失配时拒绝返回,不再拼接整窗内容。 - [x] 管理输入限定唯一模态弹窗;同名控件歧义、重复选人及未确认勾选时停止,不再任取第一个控件。朋友圈编辑拒绝覆盖现有草稿。 - [x] 管理、朋友圈、转发等提交后等待稳定 UI 状态再返回成功;单文件下载校验新目标路径及落盘稳定性,笔记附件保存等待目标目录产生文件,不直接把点击保存当成成功。 ### 仍需完善,不宣称已完成 - [x] **群成员数据库读取**:使用 `chat_room`、`chatroom_member`、`contact` 的只读 join,稳定按 member_id 分页;不回退 UI 枚举。已在 Windows 测试群完成脱敏只读验证。 - [x] **原生 URL 卡片创建和发送**:使用微信内置浏览器的“更多 → 转发…”路径,URL 卡片 API 不要求 `CONFIRM`;仍需在不同微信版本补充 UI 回归。 - [ ] **独立 OCR 窗口及各版本转文字结构**:当前仅支持目标消息内新增文本。独立弹窗/侧栏没有可靠的结果归属定位时返回 `ResultUnconfirmed`;状态关键词属于保守启发式,可能拒绝包含相同文字的合法结果。 - [x] **写操作结果确认**:统一等待确认弹窗关闭且 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 检查详情见 [本轮检查记录](validation/Review-Database-Management-Safety.md)。 ## 参考 - [开发计划](WxAgent-CSharp-开发计划.md) - [M4 验收记录](validation/M4-Management-History-2026-09-04.md) - [M5 验收记录](validation/M5-Moments-Rich-Messages-2026-09-04.md) - [M6 稳定性验收记录](validation/M6-Stability-2026-09-05.md) - [通用发送验收记录](validation/General-Sending-2026-09-06.md) - [导航验收记录](validation/Navigation-2026-09-06.md) - [数据库合并聊天记录验收记录](validation/Database-Merged-Chat-2026-09-06.md)