Move done DOCREV short-terms, checklists, and handoffs into archive/ops and retarget relative links after Round20 close-out. Co-authored-by: Cursor <cursoragent@cursor.com>
11 KiB
11 KiB
title, status, created, updated
| title | status | created | updated |
|---|---|---|---|
| 文档版本账本运行时 — Ubuntu Server 无头浏览器真实 UI 验收计划 | done | 2026-09-13 | 2026-09-14 |
文档版本账本运行时 — Ubuntu Server 无头浏览器真实 UI 验收计划
与工程门禁分离:本文件仅描述用户限定的最终实战验收(浏览器页面操作)。 严禁用 API 直灌、DB fixture、
page.routemock、stub 模型、或伪造 SSE 冒充小队完成。 工程单测 /go vet/npm test/npm run build属于「工程门禁」,见 short-term 证据区,不能替代本计划。
0. 环境前置(必须占 CURRENT 集成槽位后执行)
| 项 | 要求 |
|---|---|
| OS | Ubuntu Server 22.04+(无图形桌面亦可) |
| 服务 | ./scripts/env-service.sh dev rebuild → curl -sf http://127.0.0.1:8080/health;schema ≥ 28 |
| Agent | 真实 pi-agent + 运行中的 MiniMax-M2.7-highspeed 容器(禁止 stub) |
| 账号 | ≥2 名项目成员(编制人 A、协作者 B);禁止共用 token 串号;管理员凭据仅来自 ADMIN_USERNAME/ADMIN_PASSWORD 环境变量(禁止 spec 硬编码) |
| 认证契约 | 真实 login/me 返回 snake_case role_id 等;前端须映射为 roleId,否则管理员入口隐藏(UI-00 已踩坑,见 audit) |
| 用户目录 | 管理员开通 A/B 后,同浏览器立项成员候选须含新账号(onRefreshUsers 不得死 prop);跨设备缺口见 ../../audit/2026-09-13-admin-user-directory-sync-ui01.md |
| 证据根 | .doc/test-reports/assets/2026-09-13-document-revision-runtime-ui/ |
| 报告 | .doc/test-reports/YYYY-MM-DD-document-revision-runtime-ui-test-report.md |
0.1 Ubuntu Server 无头 Playwright(Round20 实际路径)
本轮采用官方容器,无需给 Ubuntu host 安装浏览器:
# 测试前部署合入基线(Round20:b258ab8)
./scripts/env-service.sh dev rebuild
curl -sf http://127.0.0.1:8080/health
# 官方镜像跑页面验收(host 网络;BASE_URL 指向工作台 :3100)
docker run --rm --network host --ipc host \
-e RUN_UI_ACCEPTANCE=1 \
-e BASE_URL=http://127.0.0.1:3100 \
-v "$PWD":/work -w /work/web \
mcr.microsoft.com/playwright:v1.63.0-noble \
npx playwright test e2e/document-revision-runtime.spec.ts --project=chromium
备选(本轮未走):宿主 cd web && npx playwright install --with-deps chromium。仅当不能跑官方容器时使用。
0.2 两阶段(验收轮)
RUN_UI_ACCEPTANCE=1 UI_PHASE=main BASE_URL=http://127.0.0.1:3100跑主场景(写phase-state.json,密码仅落本地phase-secrets.local.json,不得提交)。产物:playwright-output-main/playwright-report-main/ui-acceptance-results.json- 宿主仅
restart shuimu-agent-app-dev一次(PG/PI 未动;不是再次 rebuild) RUN_UI_ACCEPTANCE=1 UI_PHASE=post-restart仅页面登录校验 UI-15。产物:playwright-output-post-restart/playwright-report-post-restart/ui-acceptance-results-post-restart.json(不得覆盖 main 总账或 trace)- 文档收口阶段不再动容器。
证据:.doc/test-reports/assets/2026-09-13-document-revision-runtime-ui/(trace/video/screenshot);结果 JSON 不得含凭证与 URL query。
1. 数据来源铁律(FAIL 即整轮作废)
| 允许 | 禁止(一票否决) |
|---|---|
| 页面登录后创建项目 | INSERT/psql 灌 document_records / snapshots |
| 页面上传附件 | 测试进程直连 Postgres 插 fixture |
| 对话输入框真实提问触发小队 | page.route 劫持 /api/v1/chat 或 SSE 返回假成功 |
| 等待真实 runner 完成 | AgentBackend=stub 或 mock MiniMax |
| 打开生成的文档 Tab 观察 UI | API-only 调用 PATCH/OpenTemplate 冒充「用户操作」 |
2. 用例矩阵(全部必须页面可见)
| ID | 步骤(仅 UI) | 期望页面现象 | 证据 | 判定 |
|---|---|---|---|---|
| UI-01 | 管理员开通 B 后,tech-lead A 页面创建项目并勾选成员 | 立项成员候选含 B;项目工作台三栏可见 | 截图 01-project.png |
PASS |
| UI-02 | 对话输入框发起真实任务(触发真实小队编排) | 助手流式回复;任务进度/文档 busy 可见;网络可见真实 agent 请求 | 截图 + trace | PASS |
| UI-03 | 等待小队首轮完成,打开生成的受控文档 Tab | 右侧出现文档;版本工具条 Vn/r*(非「账本未就绪」) |
截图 03-first-doc.png |
PASS |
| UI-04 | 打开变更报告:工具条「变更报告」/「待确认报告」或版本历史「报告」 | 首轮可见:摘要、风险条目、项目影响内容、各文档影响原因/建议、开放问题;加载失败显式错误非永久加载中;fallback 不得宣称为完整 PI |
截图 04-first-report.png |
PASS |
| UI-05 | 同项目再触发二轮更新生成(真实对话) | 低/中风险:新版本+报告;高风险:工具条显示「待确认报告」与 pending 徽章,版本历史尚无新 V,打开报告可见完整字段 | 截图 05-second-report.png |
PASS |
| UI-05a | 编制人对高风险候选点「确认提交」 | decision API confirmed:true;版本前进;pending 消失;历史出现带 change_report_id 的新版本 |
截图+网络 | PASS |
| UI-05b | 编制人对高风险候选点「拒绝」 | 候选拒绝;pending 消失;版本号不前进;无权用户无确认/拒绝按钮或 decision 403 | 截图+网络 | PASS |
| UI-06 | 双击块编辑 → 保存 → 硬刷新 | 无冲突时工具条 r 立即递增(revisionRefreshKey);硬刷新后正文仍为保存内容 |
截图前后对比 | PASS |
| UI-07 | 切换「纯净阅读」 | 块无琥珀/蓝色装饰底 | 截图 | PASS |
| UI-08 | 切换「人工修改」 | 相对当前 Version 的人工修订块琥珀底+下划线暗示 | 截图 | PASS |
| UI-09 | 切换「全部变更」 | 智能体+人工差异;仅人工时允许与 UI-08 相同 | 三模式并排或连续截图 | PASS |
| UI-10 | 「版本历史」+「比较」 | 抽屉列出版本;比较视图展示 hunk | 截图 | PASS |
| UI-11 | 多文档:同项目再生成/打开第二份受控文档 + 页面上传附件 Tab | 多 Tab 可切换;各文档 revision-state 独立;附件可预览 | 截图 | PASS |
| UI-12 | 用户 C 打开无权限项目(非成员) | 项目不可见,不泄漏正文 | 截图 + 网络 403/404 | PASS |
| UI-13 | 拆为 13a reviewer 只读 + 13b A/A 同 r 冲突 | B 无正文编辑;A2 409 DOCUMENT_HEAD_CONFLICT 保留草稿 |
双 context 截图 | PASS |
| UI-14 | A 退出 → 重登录 → 打开同一文档 | revision-state 200;正文与 r 与退出前一致 |
截图 | PASS |
| UI-15 | (集成槽内)重启 app 容器后再打开同一文档 | 账本与正文仍可恢复;非「未就绪」除非确无事实源 | 截图 + docker restart 日志摘录 |
PASS |
| UI-16 | 页面上传经 freeform 注册后打开;禁止 doc-upload 假账本 |
已注册 doc-free-* 工具条 V 可见;无 orphan revision-state |
截图 | PASS |
3. 证据要求(归档规范)
| 类型 | 路径约定 | 最低要求 |
|---|---|---|
| 截图 | assets/.../screenshots/UI-XX-*.png |
每用例 ≥1;UI-07/08/09 必须能看出三模式差异 |
| Trace | assets/.../traces/UI-XX.zip(Playwright trace) |
失败用例必留;PASS 建议全留 |
| 录像 | assets/.../videos/*.webm |
首轮生成 + 二轮报告 + 双人冲突 必留 |
| 网络摘录 | 报告正文粘贴关键响应 | revision-state 200;change-reports 含 summary/risk/open_questions;禁止贴 token |
报告正文每个用例必须含:Input(页面操作) / Actual(可见文本+状态码) / Verdict PASS|FAIL / Duration。
4. 失败标准(任一即 FAIL)
- 使用 stub /
page.routemock / DB fixture / 纯 API 灌库冒充 UI 路径 - 首轮成功生成后仍无变更报告入口,或报告摘要为固定假句「智能体交付物已生成」;或报告面板缺少风险条目/项目影响/文档影响原因建议/开放问题
2b. 高风险二轮仅有小队成功文案但工具条无「待确认报告」、或未确认就静默进版本历史、或
confirmed:false仍提交成功 - 把
analysis_status=fallback文案写成「PI 完整分析」或隐瞒开放问题 - 人工保存返回成功但刷新丢正文,或投影失败仍 200
- 三 overlay 视觉无差异(截图无法区分)
- 双上下文后写静默覆盖
- 无权限用户可见正文片段
- 容器重启后受控已落盘文档仍永久「账本未就绪」(在确有 output.md / 记录的前提下)
- 证据目录缺失或无法打开 trace/截图复盘
5. 通过标准
- UI-01…UI-16 全部 PASS,证据归档完整
- 工程门禁另栏 PASS(不记入本计划勾选)
- 已知 blocker
DOCREV-RT-PI-NARRATIVE:允许 fallback,但必须可见真实 diff 摘要 + 开放问题标明叙事待补 DOCREV-RT-UPLOAD-ORPHAN:UI-16 按空状态 PASS,不得伪造成功账本
6. 与工程门禁对照
| 类型 | 命令/产物 | 可否代替 UI 验收 |
|---|---|---|
| 工程 | go vet ./...;go test -short ./...;cd web && npm test && npm run build |
否 |
| PG 可选 | TEST_DATABASE_URL=... go test ./internal/docrevision -run TestPGPersist |
否 |
| 本计划 | Playwright 无头真实页面 + 真实小队 | 是(唯一最终) |
7. 本轮状态
- Round20(2026-09-14)真实页面验收 PASS:results JSON 21/21;Playwright main 18 passed / 1 post skipped;仅
restart shuimu-agent-app-dev后 post 1 passed / 18 skipped。 - 测试前
env-service.sh dev rebuild部署b258ab8;文档收口不再动容器。 - 项目
UI验收-超声微创系统-mu0gwiez(6159);intakedoc_proj6159_intake;终态 V3/r2 /A1-win-mu0gwiez。 - 报告:../../test-reports/2026-09-14-document-revision-runtime-ui-test-report.md
- Ubuntu 无头:
mcr.microsoft.com/playwright:v1.63.0-noble(--network host --ipc host,BASE_URL :3100);本次无需给 host 装浏览器。宿主npx playwright install仅备选。 - 顶层截图 21 个文件:主阶段 20 张(含 UI-15-pre)+ post-restart 1 张;与 results JSON 21 条不是同一计数。
- 工程门禁另栏:
go test -short/go vet/ web 333+30 / build PASS;-race全包并行 NOT PASS(TestCreateTaskRun_PreActivationAcceptedNot409TempDir cleanup)。 - 全仓仍
production_ready=no(CHAT-INTENT等)。