Files
Agent-System/.doc/archive/ops/checklists/2026-09-13-document-revision-runtime-ui-acceptance.md
T
weichenandCursor 9345109dca docs(ops): archive completed document-revision session files
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>
2026-09-14 00:27:18 +00:00

11 KiB
Raw Blame History

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.route mock、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 两阶段(验收轮)

  1. 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
  2. 宿主仅 restart shuimu-agent-app-dev 一次(PG/PI 未动;不是再次 rebuild)
  3. 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)
  4. 文档收口阶段不再动容器。

证据:.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)

  1. 使用 stub / page.route mock / DB fixture / 纯 API 灌库冒充 UI 路径
  2. 首轮成功生成后仍无变更报告入口,或报告摘要为固定假句「智能体交付物已生成」;或报告面板缺少风险条目/项目影响/文档影响原因建议/开放问题 2b. 高风险二轮仅有小队成功文案但工具条无「待确认报告」、或未确认就静默进版本历史、或 confirmed:false 仍提交成功
  3. 把 analysis_status=fallback 文案写成「PI 完整分析」或隐瞒开放问题
  4. 人工保存返回成功但刷新丢正文,或投影失败仍 200
  5. 三 overlay 视觉无差异(截图无法区分)
  6. 双上下文后写静默覆盖
  7. 无权限用户可见正文片段
  8. 容器重启后受控已落盘文档仍永久「账本未就绪」(在确有 output.md / 记录的前提下)
  9. 证据目录缺失或无法打开 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);intake doc_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_PreActivationAcceptedNot409 TempDir cleanup)。
  • 全仓仍 production_ready=no(CHAT-INTENT 等)。