GPU_GUARD_MONOREPO/docs/superpowers/followups/2026-05-09-uia-e2e-report.md
2026-05-20 21:39:12 +08:00

6.0 KiB

UIA MVP E2E 验证报告 · 2026-05-09

Plan D 代码实现全部完成,本报告追踪 spec 14 条端到端手工验证的执行状态。 代码实现:见 docs/superpowers/plans/2026-05-09-wechat-uia-d-frontend-tray-e2e.md Spec:docs/superpowers/specs/2026-05-09-wechat-uia-channel-design.md

执行状态

当前状态:待执行。Plan D 的代码实现(Phase 1-6 / Task 1-12)已全部落地且 type-check / 单测通过,但端到端验证需在 Windows 测试机上完成,需满足下述所有前置条件后由人工按清单逐条验证

前置条件

  • Windows 测试机一台(Windows 10/11,能运行 PC 微信)
  • PC 微信 3.9.11.17 已安装且已登录测试微信号(不在白名单外版本)
  • MySQL 测试库 ready,包含 Neta 业务表(netaclaw_*, 见 packages/backend/sql/)
  • Plan A + B + C + D 代码全部合并到同一分支
  • 本地构建 Windows 安装包: cd packages/backend && node scripts/build-windows-installer.js(需本地安装 .NET 8 SDK + Inno Setup 6)
  • 安装成功并启动 Tray,backend + bridge 都拉起

14 条 Checklist

# 项目 状态 备注 / 证据
E2E-01 启动 Neta Tray,后端 + bridge 都拉起,前端频道页访问正常 观察 %APPDATA%\Neta\logs\bridge.log 有 handshake 日志;前端 http://localhost:<port> 能打开
E2E-02 创建 UIA channel(type=weixin-uia),handshake 后 wxid/nickname 自动填充 前端新建 UIA channel 必填 wxid → bridge handshake 写回 nickname/wechatVersion → 刷新 channel 列表看 bridge tag 显示"已连接" + 微信版本
E2E-03 测试群里任一成员说 "hello",bridge 切窗采集 → 前端群聊管理"待审批"横幅出现该群 Bridge 日志有 room discovered;前端群聊管理抽屉顶部出现 新发现 N 个群(待审批) 橙色横幅
E2E-04 点"启用监听" + 选 at_mention + 填 botAlias=小神 群卡片底部"启用监听/忽略"按钮点击后 status=1,triggerMode 下拉持久化
E2E-05 群里发 @小神 你好 → agent 回复 → bot 在群里发回复 → 发送方是测试号自己 UIA bridge 模拟发送,回复消息的发送方是本机登录的微信号(而非独立 ClawBot)
E2E-06 切到 all 模式 → 群里随便说 → agent 通过 system prompt 判定相关性 → 不相关时返回 [SKIP] 不发 观察 backend 日志 uia agent skipped reason=empty_or_skip
E2E-07 群里发图 → SQLite 落归档 → 前端归档抽屉能预览到图片 点群卡片"查看归档"按钮 → 打开归档抽屉 → 能在列表里看到图片缩略图(via /wechat-uploads/...)
E2E-08 关掉 PC 微信 → bridge /health 失败 → channel 状态变 disconnected 前端卡片显示 "Bridge 离线" 红色 tag(30s 轮询生效后)
E2E-09 重开 PC 微信 → bridge 自愈 → channel 重连 bridge 重连后前端卡片 "Bridge 离线" 消失;注:完整 alive 轮询 + 3 次重启留 v2 实现
E2E-10 故意装 PC 微信 4.x(不在白名单)→ bridge 启动失败 → tray 气泡通知"版本不兼容" Tray 气泡文字 + bridge.log 有版本校验失败记录
E2E-11 一个微信号同时绑 ClawBot + UIA channel:DM 走 ClawBot / 群走 UIA,不重复响应 ClawBot 收到群消息丢弃;UIA 收到 DM 丢弃(见 routeInboundMessage 分流逻辑)
E2E-12 删 UIA channel → group 表级联清;SQLite 归档保留(按决策不级联删) 验证 netaclaw_agent_channel_group 对应记录清空,%APPDATA%\Neta\wechat-archive-<cid>.db 文件保留
E2E-13 群被改名 → 视为新群,又出现在"待审批"横幅 改群名后触发消息,前端横幅再次亮起;旧群 roomId 也还能在归档里看到
E2E-14 群里回复 UIA bot 的消息(包含"引用") → 前端对话页的 user message 能看到"[被引用: ... 原文...]"结构化上下文 进入 chat.vue 查看 sessionId 对应会话,user message 内容应含 "[被引用:" 前缀

失败项 follow-up

(执行后在此记录每条失败的具体现象 + 复现步骤 + issue 链接)


Plan D 代码实现完成情况

Task 文件 状态
Task 1 frontend/types/index.d.ts 通过 TS 类型检查(baseline 107 保持)
Task 2 backend/controller/admin/wechat_archive.ts + 测试 4 条 controller 单测通过
Task 2.5 backend/config/config.default.ts /wechat-uploads 静态映射已挂
Task 2.6 backend/service/agent_channel.ts page() enrich 17 条 agent_channel 单测通过
Task 3 frontend/views/channel-management.vue drawer 动态字段
Task 4 frontend 卡片 UIA 渲染差异 + bridge tag
Task 5 frontend composables/useUiaChannelValidation.ts
Task 6 frontend/components/channel-group-panel.vue triggerMode 2 档 + 待审批横幅
Task 7 每群绑 agent + 回复身份覆盖
Task 8 frontend/components/wechat-archive-panel.vue
Task 9 frontend chat ConversationHeader 加 DM/群 tag
Task 10 windows-tray BridgeProcessManager + 2 条单测 2/2 测试通过
Task 11 windows-tray TrayApplicationContext 集成 bridge 7/7 现有测试保持通过
Task 12 backend/scripts/build-windows-installer.js + setup.iss 静态改动完成(实际构建待工程师本地运行)

留待 v2

  • 崩溃自愈完整 3 次重启 + 30s 间隔 tray 气泡(Task 11 当前只做"需要时拉起")
  • 归档"标记为有价值 → 转存 MySQL 业务表"(UI 已占位 disabled)
  • 语音/视频/跨群人物志

备注

  • 本次执行未创建 git worktree、未做任何 git commit(按用户要求),所有改动直接落在工作区,待工程师审阅后自行 stage/commit
  • Type-check baseline 维持在 107(项目历史遗留错误),本次 Plan D 实施未引入新增错误
  • 前端部分均通过 pnpm type-check 无新增报错;后端新增测试 21 条(controller 4 + service enrich 2 + 原有 15)全部通过;Tray 单测 7/7 + 新增 2/2 全部通过