Files
wx-win-agent/docs/PENDING.md
T
rogee edba7d0d38
Build web service image / build (push) Successful in 1m15s
feat: support long text and safe attachment batches
2026-09-30 09:16:36 +08:00

76 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PENDING:暂缓功能与验收备忘
本文件记录全局 review 后的用户决定。用户随后确认同时完善数据库读取链路和四项代码问题;以下明确暂缓的扩展与真机验收仍不执行。暂缓不等于通过,安全修复也不等于端到端功能已验收。
## 当前正常功能复核(2026-09-29)
- 长文本分段、2–10 个附件批量入口、提及重名 fail-closed 保护和合并聊天混合元数据解析已补代码及离线测试;TaskNotFound 修复保留。
- 已通过 Core/Service .NET 测试、Go 测试与 vet、WebUI 测试/构建及完整 Release solution build。Windows 新版本已部署,`service.json` 未变。
- Windows `inspect-ui` 成功,但 `doctor`/`smoke` 返回 `WechatNotLoggedIn`,必需聊天控件缺失;本轮未发送任何消息/附件,也未执行任何 M4/M5 可见写操作。上述功能的真机验收保持未完成,不得勾选为通过。
- 可脱离聊天 UI 的只读检查通过:批准的测试群成员页返回 2 个成员、0 空显示名、0 重名且无续页;`chat send-files` 重复 `--path` 解析成功,并在随机缺失路径预校验返回 `InvalidArgument`,未触及 UI。只保留聚合计数,未记录成员姓名。
- 详细范围、哈希、证据及未闭环项见[正常功能复核与验收记录](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)