docs(test): archive sealed DOCREV UI main+post-restart PASS ledger

Persist mud2qct9 main/post ledgers, phase-state, and key screenshots
under sealed-ledger-ui00-16-post-20260923T0400Z (schema 63).
This commit is contained in:
WeiCHEN
2026-09-23 04:16:39 +08:00
parent e9a9ce97c2
commit 4a97cfcf76
13 changed files with 13135 additions and 0 deletions
@@ -0,0 +1,47 @@
---
title: "DOCREV UI 重跑验收报告"
date: 2026-09-22
task_id: "docrev-ui-rerun-2026-09-22"
verdict: PASS
tested_sha: "0f97965cd286b822094b87310ed48254d44f42a2"
assets_dir: ".doc/test-reports/assets/2026-09-22-docrev-ui-rerun"
---
# DOCREV 真实 UI 重跑 — PASS
依据 [验证契约](../ops/2026-09-21-validation-contract.md):前端交付须真实浏览器证据。
## 范围
- 任务:`docrev-ui-rerun-2026-09-22` / `docrev-ui-freeform-bigint-2026-09-22`(env:dev)
- `UI_PHASE=main`:UI-00..16(含 UI-13a/b、UI-15-pre)
- `UI_PHASE=post-restart`:UI-15 恢复(容器 `restart app` 后)
- 浏览器:`PLAYWRIGHT_CHANNEL=msedge`,`BASE_URL=http://127.0.0.1:3100` → API `:8080`
- schema_version:63
## 账本
| Phase | 文件 | 结果 |
|---|---|---|
| main | [ui-acceptance-results.json](./assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results.json) | 21 条 PASS(含 UI-13 / UI-15-pre) |
| post-restart | [ui-acceptance-results-post-restart.json](./assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results-post-restart.json) | UI-15 PASS |
Playwright:main `18 passed (22.6m)`;post-restart `1 passed (1.9s)`。
## 关键修复(本批 tip)
- UI-13b 在 **三权前** 对 drafting intake 做 A/A 409(prelim 常 `author_id=0` 无法编辑)
- 小队等待超时 10m + Playwright per-test 15m
- freeform `project_id` BIGINT / Bearer etag / composer 解锁等先序修复已在本地 `dev`
## 关闭的文档
按 short-term 映射关闭 20 份 audit + 9 份 remediation;`management-implementation-plan` 仍为方案态 `in_progress`。
## 环境
| 字段 | 值 |
|---|---|
| tip | `0f97965cd286b822094b87310ed48254d44f42a2` |
| local_dev(合入后) | `bcc3168e`(至少含 tip 祖先) |
| phase-state | project `UI验收-超声微创系统-mud2qct9`;intake V3/r2;snippet `A1-win-mud2qct9` |
@@ -0,0 +1,11 @@
{
"projectName": "UI验收-超声微创系统-mud2qct9",
"userA": "uia_mud2qct9",
"userB": "uib_mud2qct9",
"userC": "uic_mud2qct9",
"controlledDocTitle": "用户初始需求收集表",
"controlledDocId": "doc_proj1789095399501_bd_intake",
"versionText": "V3",
"revisionText": "r2",
"bodySnippet": "A1-win-mud2qct9"
}
@@ -0,0 +1,11 @@
{
"projectName": "UI验收-超声微创系统-mud2qct9",
"userA": "uia_mud2qct9",
"userB": "uib_mud2qct9",
"userC": "uic_mud2qct9",
"controlledDocTitle": "用户初始需求收集表",
"controlledDocId": "doc_proj1789095399501_bd_intake",
"versionText": "V3",
"revisionText": "r2",
"bodySnippet": "A1-win-mud2qct9"
}
@@ -0,0 +1,347 @@
{
"UI-15": {
"id": "UI-15",
"name": "post-restart restore",
"input": "UI login as A; open UI验收-超声微创系统-mud2qct9",
"actual": "version=V3 revision=r2",
"networkLogs": [
{
"method": "GET",
"path": "/src/api/freeformDoc.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/projectMembers.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/projectWorkflow.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/docgov.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/projectSettings.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/auth.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/intentPlans.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/chatWindow.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/taskRuns.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/projectSettingsError.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/projectDocuments.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/authHeaders.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/client.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/documentRevision.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/authUserMap.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/chatSessions.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/projectTrace.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/chatRetry.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/chatTurn.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/chatStream.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/taskStream.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/projectAssets.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/chatSearch.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/chatDigest.ts",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/auth/public-config",
"status": 200
},
{
"method": "POST",
"path": "/api/v1/auth/login",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/auth/me",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/chat/sessions",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/freeform-documents",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/freeform-documents",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/workflows/catalog",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects/1/settings",
"status": 403
},
{
"method": "GET",
"path": "/api/v1/projects/1",
"status": 403
},
{
"method": "GET",
"path": "/api/v1/projects/1/lineage",
"status": 403
},
{
"method": "GET",
"path": "/api/v1/projects",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects/1/documents",
"status": 403
},
{
"method": "GET",
"path": "/api/v1/chat/unread",
"status": 403
},
{
"method": "GET",
"path": "/api/v1/chat/dates",
"status": 403
},
{
"method": "GET",
"path": "/api/v1/intent-plans/active",
"status": 403
},
{
"method": "GET",
"path": "/api/v1/chat/categories",
"status": 403
},
{
"method": "GET",
"path": "/api/v1/freeform-documents",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/freeform-documents",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects/1789095399501",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects/1789095399501/lineage",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects/1789095399501/documents",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects/1789095399501/settings",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/chat/unread",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/chat/dates",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/chat/categories",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/chat/messages/window",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/intent-plans/active",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects/1789095399501/lineage",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects/1789095399501/notifications",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects/1789095399501/settings",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects/1789095399501/members",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/workflow-instances/39/stages/V0.5_feasibility/readiness",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/documents/doc-free-1790107079022856345-505/revision-state",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/documents/doc-free-1790107079022856345-505/versions",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/documents/doc-free-1790107079022856345-505/manual-overlay",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/documents/doc_proj1789095399501_bd_intake/revision-state",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/docgov/documents/doc_proj1789095399501_bd_intake/content",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/documents/doc_proj1789095399501_bd_intake/revision-state",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/documents/doc_proj1789095399501_bd_intake/versions",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/documents/doc_proj1789095399501_bd_intake/revision-state",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/documents/doc_proj1789095399501_bd_intake/versions",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/documents/doc_proj1789095399501_bd_intake/manual-overlay",
"status": 200
}
],
"durationMs": 820,
"verdict": "PASS"
}
}
@@ -0,0 +1,347 @@
{
"UI-15": {
"id": "UI-15",
"name": "post-restart restore",
"input": "UI login as A; open UI验收-超声微创系统-mud2qct9",
"actual": "version=V3 revision=r2",
"networkLogs": [
{
"method": "GET",
"path": "/src/api/freeformDoc.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/projectMembers.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/projectWorkflow.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/docgov.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/projectSettings.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/auth.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/intentPlans.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/chatWindow.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/taskRuns.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/projectSettingsError.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/projectDocuments.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/authHeaders.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/client.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/documentRevision.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/authUserMap.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/chatSessions.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/projectTrace.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/chatRetry.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/chatTurn.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/chatStream.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/taskStream.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/projectAssets.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/chatSearch.ts",
"status": 200
},
{
"method": "GET",
"path": "/src/api/chatDigest.ts",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/auth/public-config",
"status": 200
},
{
"method": "POST",
"path": "/api/v1/auth/login",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/auth/me",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/chat/sessions",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/freeform-documents",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/freeform-documents",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/workflows/catalog",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects/1/settings",
"status": 403
},
{
"method": "GET",
"path": "/api/v1/projects/1",
"status": 403
},
{
"method": "GET",
"path": "/api/v1/projects/1/lineage",
"status": 403
},
{
"method": "GET",
"path": "/api/v1/projects",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects/1/documents",
"status": 403
},
{
"method": "GET",
"path": "/api/v1/chat/unread",
"status": 403
},
{
"method": "GET",
"path": "/api/v1/chat/dates",
"status": 403
},
{
"method": "GET",
"path": "/api/v1/intent-plans/active",
"status": 403
},
{
"method": "GET",
"path": "/api/v1/chat/categories",
"status": 403
},
{
"method": "GET",
"path": "/api/v1/freeform-documents",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/freeform-documents",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects/1789095399501",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects/1789095399501/lineage",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects/1789095399501/documents",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects/1789095399501/settings",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/chat/unread",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/chat/dates",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/chat/categories",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/chat/messages/window",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/intent-plans/active",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects/1789095399501/lineage",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects/1789095399501/notifications",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects/1789095399501/settings",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/projects/1789095399501/members",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/workflow-instances/39/stages/V0.5_feasibility/readiness",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/documents/doc-free-1790107079022856345-505/revision-state",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/documents/doc-free-1790107079022856345-505/versions",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/documents/doc-free-1790107079022856345-505/manual-overlay",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/documents/doc_proj1789095399501_bd_intake/revision-state",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/docgov/documents/doc_proj1789095399501_bd_intake/content",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/documents/doc_proj1789095399501_bd_intake/revision-state",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/documents/doc_proj1789095399501_bd_intake/versions",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/documents/doc_proj1789095399501_bd_intake/revision-state",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/documents/doc_proj1789095399501_bd_intake/versions",
"status": 200
},
{
"method": "GET",
"path": "/api/v1/documents/doc_proj1789095399501_bd_intake/manual-overlay",
"status": 200
}
],
"durationMs": 820,
"verdict": "PASS"
}
}
File diff suppressed because one or more lines are too long