From a88bcdaa09ea00a433f2498d5eda333321d912a6 Mon Sep 17 00:00:00 2001 From: shunli Date: Thu, 16 Jul 2026 20:50:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E9=81=97=E7=95=99=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E4=B8=8E=E8=BF=90=E8=A1=8C=E6=89=8B=E5=86=8C=E7=8A=B6?= =?UTF-8?q?=E6=80=81=EF=BC=8807-16-legacy-task-runbook-closeout=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../05-31-unified-page-header-actions/prd.md | 29 +++- .../task.json | 4 +- .../check.jsonl | 4 + .../design.md | 71 +++++++++ .../implement.jsonl | 4 + .../07-16-legacy-task-runbook-closeout/prd.md | 145 ++++++++++++++++++ .../research/closeout-status-audit.md | 49 ++++++ .../task.json | 36 +++++ docs/trialrun/发布试运行准备清单.md | 44 ++++-- docs/trialrun/真机公网测试清单.md | 17 +- docs/文档事实源状态矩阵.md | 41 +++-- docs/文档索引.md | 23 ++- docs/试运行与自动化验证手册.md | 37 +++-- 13 files changed, 440 insertions(+), 64 deletions(-) create mode 100644 .trellis/tasks/07-16-legacy-task-runbook-closeout/check.jsonl create mode 100644 .trellis/tasks/07-16-legacy-task-runbook-closeout/design.md create mode 100644 .trellis/tasks/07-16-legacy-task-runbook-closeout/implement.jsonl create mode 100644 .trellis/tasks/07-16-legacy-task-runbook-closeout/prd.md create mode 100644 .trellis/tasks/07-16-legacy-task-runbook-closeout/research/closeout-status-audit.md create mode 100644 .trellis/tasks/07-16-legacy-task-runbook-closeout/task.json diff --git a/.trellis/tasks/05-31-unified-page-header-actions/prd.md b/.trellis/tasks/05-31-unified-page-header-actions/prd.md index 4b8dbcb8..ad45bc2f 100644 --- a/.trellis/tasks/05-31-unified-page-header-actions/prd.md +++ b/.trellis/tasks/05-31-unified-page-header-actions/prd.md @@ -73,12 +73,12 @@ ## Acceptance Criteria -- [ ] 业务列表页标题右上角符合“一主操作 + 最多一个更多”的规则。 -- [ ] `筛选`、`导出`、`刷新`、`显示测试数据` 不再作为标题右上角常驻按钮。 -- [ ] 采购、合同、项目、资产、付款、应付账款、票据至少完成首轮统一。 -- [ ] 规则写入前端设计规范,后续页面可复用。 -- [ ] 标题、筛选、列表列、空状态、详情/编辑操作区至少完成一致性审计,形成后续改造清单。 -- [ ] 前端 typecheck/build 通过。 +- [x] 业务列表页标题右上角符合“一主操作 + 最多一个更多”的规则。 +- [x] `筛选`、`导出`、`刷新`、`显示测试数据` 不再作为标题右上角常驻按钮。 +- [x] 采购、合同、项目、资产、付款、应付账款、票据至少完成首轮统一。 +- [x] 规则写入前端设计规范,后续页面可复用。 +- [x] 标题、筛选、列表列、空状态、详情/编辑操作区至少完成一致性审计,形成后续改造清单。 +- [x] 前端 typecheck/build 通过。 - [ ] 聚焦 Playwright/视觉复检覆盖主要业务页。 ## Test Plan @@ -97,3 +97,20 @@ node scripts/qa/check-trellis-governance.mjs - 设计裁决使用 `frontend-design` skill,并按成熟企业后台/Ant Design Pro 的页面区分:标题区负责页面级主操作,表格工具栏负责列表级工具。 - 相关规范:`.trellis/spec/hyb-oa/frontend-react-vite-design.md` - 相关组件:`client/src/components/patterns/ListWorkspace.tsx`、`client/src/components/common/PageHeader.tsx`、`client/src/components/patterns/BusinessListTemplate.tsx` + +## Closeout Verification (2026-07-16) + +- 实现提交 `dcf34d7` 后,七个页面、`HeaderActionGroup` 和相关聚焦测试没有发生实现漂移。 +- `cd client && npm run typecheck` 通过;`cd client && npm run build` 通过,Vite 转换 2381 个模块,PWA 生成 102 个预缓存条目,仅有既有 Browserslist 数据陈旧提示。 +- 在 Vite dev 模式下运行 `r103-cross-page-ui-consistency.spec.ts` 为 3 passed;production preview 首次运行的 1 个失败是 PWA Service Worker 绕过 `page.route` mock 并回到登录页的验证环境问题,未作为产品 finding。 +- 当前标题动作迁移本身通过静态复核,但任务不能归档:聚焦视觉覆盖仍缺项目/资产列表,且一致性审计发现权限显隐和旧测试漂移。 + +### Follow-up Findings + +- `PaymentBatchesPage` 对只有复核权限、没有付款创建权限的用户仍显示 `新建批次`,点击后才出现无权限面板。 +- `ContractsRegistryPage` 对只读合同用户仍显示新增、编辑、续约和归档入口,写接口最终会返回 403。 +- `InvoicePoolPage` 已计算上传权限,但标题区 `上传票据` 没有按该权限隐藏。 +- `assets-flow.spec.ts` 与 `manual/asset1d-public-trial.spec.ts` 仍把已迁入 `更多` 的 `资产分类` 当作直接按钮点击。 +- `HeaderActionGroup` 目前只统一布局,不约束动作数量;缺少七页面统一标题动作合同测试,现有截图缺项目和资产列表。 + +上述 finding 需要独立修复 task;在修复并补齐视觉/回归覆盖前,本任务保持 `in_progress`,不得虚报完成或归档。 diff --git a/.trellis/tasks/05-31-unified-page-header-actions/task.json b/.trellis/tasks/05-31-unified-page-header-actions/task.json index 8f014da4..f0a8ee10 100644 --- a/.trellis/tasks/05-31-unified-page-header-actions/task.json +++ b/.trellis/tasks/05-31-unified-page-header-actions/task.json @@ -21,6 +21,6 @@ "children": [], "parent": null, "relatedFiles": [], - "notes": "", + "notes": "2026-07-16 收口验证:typecheck/build 和 r103 3/3 通过,标题迁移 6 项验收已证实;仍有权限显隐、资产旧测试和项目/资产视觉覆盖 finding,需独立修复 task 后才能归档。", "meta": {} -} \ No newline at end of file +} diff --git a/.trellis/tasks/07-16-legacy-task-runbook-closeout/check.jsonl b/.trellis/tasks/07-16-legacy-task-runbook-closeout/check.jsonl new file mode 100644 index 00000000..0c6a7c4f --- /dev/null +++ b/.trellis/tasks/07-16-legacy-task-runbook-closeout/check.jsonl @@ -0,0 +1,4 @@ +{"file":".trellis/spec/hyb-oa/project-governance.md","reason":"复核 Trellis-first、任务生命周期和归档语义。"} +{"file":".trellis/spec/hyb-oa/docs-and-evidence.md","reason":"复核事实源、历史证据和文档登记一致性。"} +{"file":".trellis/spec/hyb-oa/deployment-trialrun.md","reason":"复核本地、公网与试运行状态是否被正确区分。"} +{"file":".trellis/tasks/07-16-legacy-task-runbook-closeout/research/closeout-status-audit.md","reason":"按原始审计证据核对收口结论和遗漏。"} diff --git a/.trellis/tasks/07-16-legacy-task-runbook-closeout/design.md b/.trellis/tasks/07-16-legacy-task-runbook-closeout/design.md new file mode 100644 index 00000000..9bb0a17e --- /dev/null +++ b/.trellis/tasks/07-16-legacy-task-runbook-closeout/design.md @@ -0,0 +1,71 @@ +# 遗留任务与运行手册收口设计 + +## Safety Boundary + +本任务只修正任务状态、验证证据和现行文档事实,不修改业务代码、数据库、权限、接口或页面设计。任何验证失败都作为后续 finding,不能通过扩大本任务范围来掩盖。 + +## Execution Order + +### 1. 冻结基线 + +- 记录当前 `main`、工作树、活动任务和最后有证据的公网部署基线。 +- 确认本任务开始时没有未识别脏文件。 +- 不 fetch、push、部署或访问带凭据公网环境。 + +### 2. 收口已完成的业务编辑模板任务 + +- 核对 `1428cc4` 实现提交、`46fa609` 部署证据及 PRD 全部验收项。 +- 运行 task validate 和静态入口复核。 +- 补齐 task commit/notes 后归档,不重跑公网部署。 + +### 3. 验收页面右上角操作区任务 + +- 核对 `dcf34d7` 后相关实现是否发生变化。 +- 运行前端 typecheck/build、聚焦 `r103-cross-page-ui-consistency` Playwright、相关静态结构检查。 +- 复核采购、合同、项目、资产、付款、应付账款、票据标题区,至少确认“一主操作 + 最多一个更多”和列表级工具下沉。 +- 通过时回填 7 项验收、验证结果、实现提交和未部署事实并归档。 +- 失败时保留任务为未完成,记录页面、复现方式和影响,另建修复 task。 + +### 4. 关闭历史中断的 7 天试运行 + +- 在旧 PRD/implement/task notes 中增加 closeout 结论:仅 Day 1–Day 4,缺 Day 5–Day 7、人工闭环和 Go/No-Go。 +- 记录旧 readiness 假绿风险,禁止将旧 `findingCount=0` 当作最终启用证据。 +- 明确后续必须在当前可信基线部署后新建连续 7 天任务,从 Day 1 重启。 +- 再归档旧任务;归档状态只表示生命周期关闭。 + +### 5. 同步现行运行手册 + +- `docs/试运行与自动化验证手册.md`:入口改为 Trellis task,更新本地/公网/正式启用状态。 +- `docs/文档索引.md` 与 `docs/文档事实源状态矩阵.md`:登记 7 月 P0 本地可信基线、未部署事实和旧试运行关闭语义。 +- `docs/trialrun/发布试运行准备清单.md`:将历史 A1–R7E 内容降为背景,当前入口改为新发布/试运行流程。 +- `docs/trialrun/真机公网测试清单.md`:删除“R7 未启动”等过时现状声明,保留仍有效的真机验收步骤。 +- 不批量重写历史 Issue CSV、归档 task 或历史试运行报告。 + +### 6. 质量与复核 + +- 运行三个遗留任务和当前任务的 validate(归档后按实际路径检查)。 +- 运行 Trellis governance、process baseline、文档 registry/full audit 和 `git diff --check`。 +- 清理本轮构建/Playwright生成物,不删除既有历史 `output/` 或 `artifacts/`。 +- 启动独立只读 reviewer,检查状态语义、部署口径、历史证据边界和是否误报完成。 + +## Validation Matrix + +| 条件 | 预期 | +| --- | --- | +| 业务编辑模板任务 | 已完成证据完整并归档 | +| 页面操作区任务验证通过 | PRD 回填、注明未部署并归档 | +| 页面操作区任务验证失败 | 不归档,保留 finding 并另建修复 task | +| 旧 7 天任务 | 明确未完成和被替代后归档,不补造证据 | +| 现行手册入口 | Trellis-first,不要求新任务读取最新 Issue CSV | +| 部署状态 | 最后公网基线与 7 月本地未部署基线明确分离 | +| 生成物 | 不进入 Git,不破坏既有历史证据目录 | + +## Rollback + +- 文档和任务正文修改可从本任务提交父提交恢复。 +- 归档移动可通过反向移动任务目录并恢复 `task.json` 原状态撤销,不涉及业务数据。 +- 本任务不产生生产配置、数据库或公网回滚需求。 + +## Follow-up Audit Contract + +收口完成后创建独立多维系统审查 task。审查至少覆盖功能与业务闭环、页面信息架构、视觉/交互设计、PC/移动/企微一致性、权限/状态机/数据、安全/依赖、测试/性能/运维和文档培训;finding 统一记录严重级别、证据、复现、影响、建议和是否需要用户决策,审查阶段默认不改业务代码。 diff --git a/.trellis/tasks/07-16-legacy-task-runbook-closeout/implement.jsonl b/.trellis/tasks/07-16-legacy-task-runbook-closeout/implement.jsonl new file mode 100644 index 00000000..df410993 --- /dev/null +++ b/.trellis/tasks/07-16-legacy-task-runbook-closeout/implement.jsonl @@ -0,0 +1,4 @@ +{"file":".trellis/spec/hyb-oa/project-governance.md","reason":"约束 Trellis-first、任务生命周期和中断任务归档语义。"} +{"file":".trellis/spec/hyb-oa/docs-and-evidence.md","reason":"约束现行事实源、历史证据和文档登记边界。"} +{"file":".trellis/spec/hyb-oa/deployment-trialrun.md","reason":"约束本地验证、公网部署与连续试运行状态口径。"} +{"file":".trellis/tasks/07-16-legacy-task-runbook-closeout/research/closeout-status-audit.md","reason":"提供遗留任务状态、部署基线和手册漂移的审计证据。"} diff --git a/.trellis/tasks/07-16-legacy-task-runbook-closeout/prd.md b/.trellis/tasks/07-16-legacy-task-runbook-closeout/prd.md new file mode 100644 index 00000000..b41e8ac5 --- /dev/null +++ b/.trellis/tasks/07-16-legacy-task-runbook-closeout/prd.md @@ -0,0 +1,145 @@ +# 收口遗留任务与运行手册状态 + +## Goal + +在开展全系统功能、页面与设计审查前,先让 Trellis task、现行运行手册、部署事实和真实试运行状态一致,清除“已经完成但未归档”“已经实现但未验收”“历史运行中断却仍显示进行中”等状态债,避免后续审查基于错误口径。 + +## Scope + +- 收口三个遗留 Trellis task 的真实生命周期和验证状态。 +- 更新现有文档索引、状态矩阵、试运行手册、发布准备清单和真机公网清单中的当前口径。 +- 只运行本地、无凭据验证;不修改业务实现,不执行公网或生产动作。 +- 为后续独立多维系统审查建立干净、可信的事实基线。 + +## What I Already Know + +- 当前工作树干净,Trellis governance 与流程基线通过。 +- `05-31-business-edit-template-remove-ledger-tools-wave1` 的功能、验证、部署和公网复检均已有证据,只缺任务归档。 +- `05-31-unified-page-header-actions` 已有实现提交,相关实现文件后续未再改变,但 PRD 的 7 项验收均未回填,也没有正式验证结果。 +- `05-26-oa-seven-day-trial-live-ops` 只留下 Day 1–Day 4 证据,缺 Day 5–Day 7、现场人工业务闭环与 Day 7 Go/No-Go;旧 readiness 还曾错误地把部分 `SKIP` 汇总成 clean `PASS`。 +- 最后确认的公网部署基线是 `df26922`;当前 `main` 另有 14 个提交,其中包含 7 月本地 P0 可信度修复,尚无部署证据。 +- 现行试运行/发布手册仍混有 5 月旧状态和 Issue-first 入口,尚未吸收 Trellis-first 与“本地已修、尚未部署”事实。 +- 用户已确认:先完成收口,再单独从功能、页面、设计等多个角度审查已经完成的系统。 + +## Confirmed Scope + +- 本任务只做状态和事实源治理,不修改业务代码、接口、数据库、权限或页面表现。 +- 用户于 2026-07-16 选择方案 1:旧 7 天任务明确记录“历史运行中断、原目标未完成、后续由新连续试运行替代”后归档。 +- 用户于 2026-07-16 明确批准本 PRD 与 `design.md` 的实施方案,可以进入本地收口;外部动作仍未授权。 +- 归档只表示任务生命周期关闭,不能表述为旧 7 天试运行目标已经实现。 +- 页面操作区任务只做当前代码基线验收;如发现失败或视觉问题,记录 finding 并另建修复 task,不在本任务顺手扩大范围。 +- 多维系统审查是本任务完成后的独立 Trellis task,其审查结论先分级,不自动实施所有修复。 + +## Open Questions + +- 无。 + +## Requirements (Evolving) + +- 复核并归档已经完整完成的业务编辑模板任务。 +- 对页面右上角操作区任务运行当前基线验证:前端 typecheck/build、聚焦 Playwright、关键页面视觉/结构复核、task/governance/diff 门禁。 +- 验证通过后回填该任务 PRD、提交引用和验证结果并归档;失败时只记录 finding,不虚报完成。 +- 对旧 7 天试运行保存真实事实:仅 Day 1–Day 4、目标未完成、不得补造 Day 5–Day 7 或 Go/No-Go。 +- 更新现有文档入口、状态矩阵和运行手册,使其采用 Trellis-first,并明确 7 月 P0 基线尚未 push/部署、正式启用仍需新连续试运行。 +- 不新建重复业务手册;只更新现有事实源和当前 Trellis task。 +- 收口完成后输出下一阶段多维系统审查的建议边界,但不在本任务执行审查或修复。 + +## Acceptance Criteria (Evolving) + +- [x] 三个遗留 task 均有真实、可解释的最终状态,不补造历史证据。 +- [x] 已完成的业务编辑模板任务已归档。 +- [x] 页面操作区任务的 7 项验收有当前验证证据;通过则归档,失败则保留明确 finding。 +- [x] 旧 7 天任务明确记录中断、未完成和替代路线,不再被误读为仍可续跑的连续试运行。 +- [x] 当前文档入口、状态矩阵与试运行/发布手册不再把 Issue CSV 作为新任务执行入口。 +- [x] 文档明确区分本地 P0 基线、最后公网部署基线和未来新 7 天试运行。 +- [x] Trellis task validate、governance、文档审计与 `git diff --check` 通过;可解释的 registry/stale-term warning 单独登记。 +- [x] 工作树只包含本任务批准的 task、状态和现有文档更新,不含业务代码修改或验证生成物。 + +## Test Plan + +```bash +cd client && npm run typecheck +cd client && npm run build +cd client && E2E_BASE_URL=http://127.0.0.1:5173 npx playwright test tests/e2e/r103-cross-page-ui-consistency.spec.ts --workers=1 --reporter=list +python3 ./.trellis/scripts/task.py validate .trellis/tasks/archive/2026-07/05-31-business-edit-template-remove-ledger-tools-wave1 +python3 ./.trellis/scripts/task.py validate 05-31-unified-page-header-actions +python3 ./.trellis/scripts/task.py validate .trellis/tasks/archive/2026-07/05-26-oa-seven-day-trial-live-ops +python3 ./.trellis/scripts/task.py validate 07-16-legacy-task-runbook-closeout +node scripts/qa/check-process-contract.mjs --baseline --json +node scripts/qa/audit-docs.mjs --check-registry +node scripts/qa/audit-docs.mjs +node scripts/qa/check-trellis-governance.mjs +git diff --check +``` + +- 聚焦 Playwright 只使用本地 mock,不访问公网或真实账号。 +- 若测试需要启动本地 Vite,由验证会话启动并在结束后关闭;不得连接生产数据库。 +- 视觉证据先复用/复核既有非敏感截图;如生成新文件,只处理本轮明确生成的路径,不删除既有 `output/` 或 `artifacts/`。 + +## Definition of Done + +- 状态、提交、部署、试运行和文档事实相互一致。 +- 不把归档动作误写成业务目标完成,不把本地验证误写成公网已部署。 +- 所有修改形成中文本地提交计划并另行取得提交确认。 +- 不 push、不部署、不运行带凭据公网测试、不写真实数据。 + +## Verification Results + +- 业务编辑模板任务:`task.py validate`、实现/部署提交复核和旧入口静态搜索通过,已按正常完成语义归档到 2026-07。 +- 旧 7 天试运行:确认只有 Day 1–Day 4,已写明原目标未完成、旧 runner 假绿风险和未来替代路线后归档;未补造任何日期或人工证据。 +- 页面操作区:相关实现自 `dcf34d7` 后未漂移;typecheck/build 通过,Vite 转换 2381 个模块,PWA 102 个预缓存条目;Vite dev 模式聚焦 Playwright 3 passed。 +- production preview 首跑 Playwright 的 1 个失败来自 PWA Service Worker 绕过 `page.route` mock 并回到登录页;切回该测试原本适用的 Vite dev 模式后 3/3 通过,因此归类为验证环境问题。 +- 页面操作区只读复核登记 5 类后续 finding:付款、合同、票据权限显隐,资产旧测试交互,以及七页面视觉/合同覆盖不足;该任务继续 `in_progress`,未虚报完成。 +- `docs/` 五份现行入口/手册已改为 Trellis-first,并区分 `df26922` 历史部署来源、7 月本地未部署基线、旧试运行中断和未来 Day 1 重启。 +- 最终 reviewer 指出的 3 组治理阻断已清除:现行手册不再要求创建修复/数据库治理 Issue,状态矩阵的 IDX/REG、OAOPS1/OALAUNCH1 与 2026-05 历史门禁语义已校正,当前 task 的两个归档任务引用和 validate 命令均使用 `archive/2026-07` 实际路径。 +- 当前 task 的 `implement.jsonl` / `check.jsonl` 已各登记 4 条真实 spec/research 上下文;四个相关 task validate 全部通过。 +- process baseline 与 Trellis governance 通过,无 warning/error;文档 registry 无 error,未登记文档由 24 降为 22。 +- 当前事实源敏感内容门禁扫描 30 个文件、0 finding;新增登记手册暴露出的一条历史个人工作区绝对路径已改为脱敏用户级引用。 +- 稳定治理经验已写入 `project-governance.md`:中断/被替代任务的 `completed` 只表示生命周期关闭,归档前必须记录未完成事实、缺口和替代路线,未满足验收不得勾选。 +- 文档 full audit 保留 19 个非阻断启发式 warning:22 个未登记文件汇总、5 份文档的历史/当前状态词复核,以及 13 个 QA 脚本敏感字面量风险提示;本轮不为清零数字批量改写历史证据或无关脚本。 +- 最终复跑 `git diff --check` 通过;上述流程、治理、文档和敏感内容门禁均为 2026-07-16 当前工作树结果。 +- 本轮生成的 `client/dist`、`client/test-results` 和 Playwright report 已清理;`output/playwright/r103` 的三份历史截图已在审查后原样恢复并核对哈希。 +- 未 fetch、push、部署、运行带凭据公网测试或执行任何业务/数据库/企业微信写入。 + +## Feasible Approaches + +### 方案 1:显式关闭历史任务并建立新起点(推荐) + +- 把旧 7 天任务写明为“历史运行中断、原目标未完成、后续由新连续试运行替代”,然后归档。 +- 优点:活动任务列表与真实状态一致,后续新任务从 Day 1 开始,证据链清晰。 +- 代价:Trellis 的归档状态是生命周期 `completed`,必须在 PRD/task notes 中明确这不代表原目标达成。 + +### 方案 2:保留旧任务为进行中 + +- 更新说明但不归档,等新试运行真正启动后再处理。 +- 优点:不会把归档状态误读为目标完成。 +- 缺点:继续保留已经过期的活动任务和状态债,后续审查仍需特殊解释。 + +### 方案 3:沿用旧任务续跑 Day 5–Day 7 + +- 不推荐。日期已经中断,且旧 runner 结论存在可信度缺陷,无法形成连续 7 天证据。 + +## Decision (ADR-lite) + +**Context**:旧试运行已中断一个多月,缺少连续天数、人工闭环和 Go/No-Go;继续显示 `in_progress` 会污染后续系统审查,直接标为成功又会伪造证据。 + +**Decision**:采用方案 1。先在旧任务正文和 notes 中写明未完成事实与替代路线,再执行归档。Trellis 的 `completed` 只解释为生命周期关闭,不能解释为原试运行目标达成。 + +**Consequences**:活动任务列表恢复真实;未来正式试运行必须新建任务并从 Day 1 连续执行。代价是阅读归档元数据时必须结合 PRD 的 closeout 结论,不能只看状态字段。 + +## Out of Scope + +- 业务功能、页面布局、交互或设计修复。 +- 新的连续 7 天真实试运行执行。 +- push、部署、公网检查、真实 OCR、真实业务写入、恢复演练或生产配置变更。 +- 删除历史 Issue CSV、归档 task、迁移或运行证据。 +- PWA、Postman、冻结模块、ERP 等第二批清理。 + +## Technical Notes + +- 收口证据见 `research/closeout-status-audit.md`。 +- 项目治理:`.trellis/spec/hyb-oa/project-governance.md`。 +- 文档与证据:`.trellis/spec/hyb-oa/docs-and-evidence.md`。 +- 部署边界:`.trellis/spec/hyb-oa/deployment-trialrun.md`。 +- 当前现行入口:`docs/文档索引.md`、`docs/文档事实源状态矩阵.md`、`docs/试运行与自动化验证手册.md`。 +- 页面操作区后续修复必须在独立 task 中处理,不能在本收口任务修改业务代码。 diff --git a/.trellis/tasks/07-16-legacy-task-runbook-closeout/research/closeout-status-audit.md b/.trellis/tasks/07-16-legacy-task-runbook-closeout/research/closeout-status-audit.md new file mode 100644 index 00000000..b2719eba --- /dev/null +++ b/.trellis/tasks/07-16-legacy-task-runbook-closeout/research/closeout-status-audit.md @@ -0,0 +1,49 @@ +# 遗留任务与运行手册状态审计 + +## Summary + +当前主要问题不是缺少业务功能,而是任务生命周期、运行手册和部署事实未同步。三个活跃任务分别属于“已完成待归档”“已实现待验收”“历史运行中断”;7 月可信度修复只在本地,当前公网仍只能按最后有证据的 5 月部署基线解释。 + +## Active Task Classification + +### 业务编辑模板与首批台账工具移除 + +- PRD 验收项全部完成。 +- 实现提交为 `1428cc4`,部署证据提交为 `46fa609`。 +- typecheck/build、静态检查、两组 Playwright、Trellis 门禁和公网定向复检均有记录。 +- 当前只缺生命周期归档,不需要重新开发或部署。 + +### 统一页面右上角操作区 + +- 实现提交为 `dcf34d7`,覆盖采购、合同、项目、资产、付款、应付账款、票据和共享操作组件。 +- 相关实现文件在该提交后没有继续改变。 +- PRD 7 项验收仍未勾选,也没有验证结果段;任务明确未包含公网部署。 +- 2026-07-16 当前基线 typecheck/build 通过,Vite dev 模式的 `r103-cross-page-ui-consistency` 为 3 passed。 +- 静态复核发现付款批次、合同和票据写动作存在权限显隐缺口,资产两处测试仍按旧直接按钮交互,且缺项目/资产列表视觉证据和七页面统一合同断言。 +- 因此只回填已证实的 6 项验收,保留视觉覆盖项未完成;任务继续 `in_progress`,后续另建修复 task。 + +### OA 7 天真实试运行 + +- 预计时间为 2026-05-26 至 2026-06-01,实际只有 Day 1–Day 4 证据。 +- 缺 Day 5–Day 7、人工真实业务闭环和最终 Go/No-Go。 +- 7 月可信度审计确认旧 readiness 会把部分 `SKIP` 聚合成 clean `PASS`,历史零 finding 不能用来补证最终启用。 +- 不可续写或补造历史日期;后续若需要正式启用证据,应在部署当前可信基线后新建连续试运行任务。 + +## Deployment And Documentation Facts + +- 最后有证据的公网部署基线为 `df26922`。 +- 当前 `main` 比该基线多 14 个提交、涉及前端页面、Node/依赖、readiness、seed、防敏感和部署来源追溯;7 月任务明确未部署。 +- 当前本地 remote-tracking 视图显示 `main` 领先 `origin/main` 74 个提交;实际远端状态需在获批发布前刷新确认。 +- 文档审计无 error,但存在 24 个未登记文档及旧状态词 warning。 +- 当前试运行手册、发布准备清单和真机清单仍有 5 月旧状态或 Issue-first 入口,与 Trellis-first 和当前部署事实漂移。 + +## Safety Boundaries + +- 归档历史中断任务前必须在任务正文和 notes 中明确“生命周期关闭不代表原目标完成”。 +- 收口任务不修改业务代码;验证失败只登记 finding。 +- 不执行 push、部署、带凭据公网检查、真实 OCR、真实数据写入、企业微信写入或恢复演练。 +- 历史 Issue CSV、归档任务、迁移和审计证据保持只读。 + +## Follow-up Audit Boundary + +收口完成后另建多维系统审查任务,至少覆盖功能完整性与业务闭环、权限/状态机/数据一致性、页面信息架构、PC/移动/企微体验、视觉与交互设计、可访问性与响应式、测试/安全/性能/运维、文档与培训。审查阶段先输出 P0/P1/P2 finding、证据、复现方式和修复建议,不自动把全部 finding 混入一批实施。 diff --git a/.trellis/tasks/07-16-legacy-task-runbook-closeout/task.json b/.trellis/tasks/07-16-legacy-task-runbook-closeout/task.json new file mode 100644 index 00000000..85be6b9c --- /dev/null +++ b/.trellis/tasks/07-16-legacy-task-runbook-closeout/task.json @@ -0,0 +1,36 @@ +{ + "id": "legacy-task-runbook-closeout", + "name": "legacy-task-runbook-closeout", + "title": "收口遗留任务与运行手册状态", + "description": "在多维系统审查前,收口已完成、待验收和历史中断的遗留任务,并同步现行运行手册与部署事实。", + "status": "in_progress", + "dev_type": null, + "scope": "governance/docs", + "package": null, + "priority": "P1", + "creator": "shunli", + "assignee": "shunli", + "createdAt": "2026-07-16", + "completedAt": null, + "branch": null, + "base_branch": "main", + "worktree_path": null, + "commit": null, + "pr_url": null, + "subtasks": [], + "children": [], + "parent": null, + "relatedFiles": [ + ".trellis/tasks/archive/2026-07/05-26-oa-seven-day-trial-live-ops", + ".trellis/tasks/archive/2026-07/05-31-business-edit-template-remove-ledger-tools-wave1", + ".trellis/tasks/05-31-unified-page-header-actions", + ".trellis/spec/hyb-oa/project-governance.md", + "docs/文档索引.md", + "docs/文档事实源状态矩阵.md", + "docs/试运行与自动化验证手册.md", + "docs/trialrun/发布试运行准备清单.md", + "docs/trialrun/真机公网测试清单.md" + ], + "notes": "用户批准方案 1;已归档正常完成的业务编辑任务和明确未完成的旧 7 天任务,页面操作区保留权限显隐/测试覆盖 finding,五份现行手册已同步 Trellis-first 与当前部署事实。未 push、部署或写真实数据。", + "meta": {} +} diff --git a/docs/trialrun/发布试运行准备清单.md b/docs/trialrun/发布试运行准备清单.md index 48deb903..e775564e 100644 --- a/docs/trialrun/发布试运行准备清单.md +++ b/docs/trialrun/发布试运行准备清单.md @@ -1,24 +1,25 @@ # 发布试运行准备清单 -**文档状态**:当前操作手册,用于首轮主线发布候选、live smoke 和小范围试运行准备。 -**适用范围**:`hyb-oa` MVP 首轮主线 A1-A8 之后,部署前和部署后试运行前。 +**文档状态**:当前操作手册,用于发布候选、live smoke 和连续试运行准备。 +**适用范围**:`hyb-oa` 当前发布候选的部署前、部署后和连续试运行前。 -**当前状态(2026-05-14 / R7E)**:本清单保留 A1-A8、R5、R6 和 MIF7TD 的历史证据;当前事实已经推进到 R7E,`5491e92` 真机反馈修复已部署到试运行环境。R7E 浏览器业务线已通过,企业微信消息 deeplink、移动真机反馈和最终验收结论仍未关闭。 +**当前状态(2026-07-16)**:最后有部署和公网复检证据的来源基线为 `df26922`;7 月 P0 可信度修复只在本地 `main`,尚未 push、部署或完成公网复检。旧 7 天试运行只有 Day 1–Day 4 后中断,原目标未完成。新连续试运行必须等当前可信基线部署并完成公网来源/功能复核后,新建 Trellis task,从 Day 1 启动。 -本文不替代 PRD、模块规约或 Issue CSV;它只回答“当前是否可以从本地可回归进入公网/企业微信/真实 OCR 验收”。 +本文不替代当前 Trellis task、PRD、模块规约或测试规约;旧 Issue CSV 只作历史审计。它只回答“当前是否可以从本地可回归进入公网/企业微信/真实 OCR 验收”。 ## 1. 当前结论 -- 首轮本地 release candidate:`537e608 A8 完成首轮主线总回归门禁`。 -- 当前公网 R5 运行代码:`b1ae41f W1-W3 实现企业微信个人应用消息通知`。 +- 2026-05 首轮本地 release candidate:`537e608 A8 完成首轮主线总回归门禁`。 +- 最后确认公网部署来源:`df26922`;未做当前公网只读检查时,不据此断言服务器此刻仍运行该提交。 +- 当前本地候选:含 7 月 P0 可信度修复的 `main`;发布前必须重跑 release gate,并核对 source/build SHA。 - 主开发合同:`issues/2026-05-09_20-57-19-mvp-mainline-dev-kickoff.csv`,A1-A8 已全部 `DONE/DONE/DONE`。 - 剩余主线批次合同:`issues/2026-05-10_10-48-03-mvp-remaining-mainline-closeout.csv`,B1-B5 已全部 `DONE/DONE/DONE`。 -- 当前状态:本地门禁已闭环;R4 部署预检、D3 受控同步、D4 只读复检、R5 公网 live smoke、真实 PDF OCR、PC/自动化审批链、企业微信真机入口、个人应用消息和 deeplink 均已完成。 -- 当前最大缺口:MIF7-7 已收口;若要启动 R7,必须另建 R7E 执行合同,固定试运行名单、时间窗口、回滚联系人和问题登记规则后再开始。 +- 历史状态:R4 部署预检、D3 受控同步、D4 只读复检、R5 公网 live smoke、真实 PDF OCR、PC/自动化审批链、企业微信真机入口、个人应用消息和 deeplink 均形成过证据。 +- 当前最大缺口:7 月本地可信基线尚未发布;旧 7 天任务中断。未来启动前必须新建 Trellis task,固定试运行名单、时间窗口、回滚联系人、问题负责人和暂停条件。 本清单中的 A1-A8/R5/R6/R7E 证据保留当时路线:OA 是首轮主业务系统和正式审批中心,企业微信只做入口、身份、通知、deeplink 和打卡原始采集边界。当前最新产品口径已由 WFOC/DBWFOC/WFDG/WDRG 覆盖:HR/考勤员工日常审批优先复用企业微信,OA 做按域镜像、人工接管、恢复回写、财务闭环和审计中台;财务、报销、采购、合同、项目、付款批次、AP、代账交接和高敏附件仍由 OA 主办。后续正式迁移前先读 [企微优先开发路线图](../企微优先开发路线图.md),再做 `WECOM-CAPABILITY-POC-V1`,不直接大规模开发。 -## 2. 已完成证据 +## 2. 2026-05 历史已完成证据 | 范围 | 证据 | 结论 | | --- | --- | --- | @@ -76,7 +77,7 @@ node scripts/qa/check-live-smoke-env.mjs | 财务 | 报销复核、付款、导出、发票相关页面 | 管理员配置、员工敏感档案 | 财务能力可用,不越权到系统管理 | | 管理员 | 系统配置、权限、审计、企业微信配置 | 真实凭据和密钥明文 | 可配置系统,但接口不得返回 secret 明文 | -如发现服务端权限缺口,必须停止部署并拆独立修复 Issue;不得用前端隐藏临时绕过。 +如发现服务端权限缺口,必须停止部署并拆独立修复 Trellis task;不得用前端隐藏临时绕过。 R3 审计执行记录见 [`权限直连审计记录.md`](权限直连审计记录.md)。2026-05-10 本地自动化直连审计已通过,未发现权限泄漏;R4/D3/D4 旧部署预检长记录已在 DCL7 中从当前树移除,如需审计可从 `5da05eb` 的 git 历史恢复查看。 @@ -88,7 +89,7 @@ R3 审计执行记录见 [`权限直连审计记录.md`](权限直连审计记 - 当前生产 commit、部署目录和本地 release candidate 是否一致。 - 生产 `.env` 必需项是否完整;检查时不得打印 secret。 -- 数据库迁移状态是否干净;若存在 drift,先备份并拆数据库治理 Issue。 +- 数据库迁移状态是否干净;若存在 drift,先备份并拆独立数据库治理 Trellis task。 - 对象存储、附件目录、OCR provider、IM provider、企业微信回调域名是否与试运行目标一致。 - Caddy/systemd 或既有部署脚本状态是否健康。 - `/ready`、前端资源、企业微信 config 探活是否正常。 @@ -128,7 +129,7 @@ LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readine 2026-05-10 R5 credentialed 复查: - 执行合同:`issues/2026-05-10_16-39-17-r5-credentialed-live-smoke.csv`。 -- `/home/shunli/.hyb-oa/live-smoke.env` 不存在,未执行 `source`。 +- 用户级 `~/.hyb-oa/live-smoke.env` 不存在,未执行 `source`。 - `node scripts/qa/check-live-smoke-env.mjs`:`publicReady=true`,`wecom=ready`,`liveSmokeReady=false`,`liveOcrReady=false`。 - `node scripts/qa/check-live-smoke-env.mjs --strict`:仍失败,缺公网 smoke 账号和 OCR live 文件或目录。 - 结论:H3 公网自动化业务 smoke、H4 企业微信真机验收和 R6 小范围试运行仍不能开始。 @@ -172,7 +173,16 @@ LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readine - `liveOcrReady=false` 时只能记录真实 OCR 条件缺失。 - 手机企业微信入口必须用真实企业微信客户端补测;普通浏览器 UA 不等于真机通过。 -## 7. 小范围试运行 +## 7. 连续试运行 + +当前规则: + +- 旧 7 天任务不能从 Day 5 续跑,也不能补造缺失日期、人工闭环或 Go/No-Go。 +- 先部署并复核当前可信基线,再创建新的连续试运行 Trellis task。 +- 新任务必须固定参与人、连续窗口、回滚联系人、问题负责人、暂停条件和 Day 7 决策人,并从新的 Day 1 开始。 +- 每日 finding 回填当前 task;跨域或阻断问题另建最小修复 task,不在现场扩大范围。 + +以下为 2026-05 历史小范围试运行准备记录: R5 已完成。R6 准备合同已创建:`issues/2026-05-11_10-23-41-r6-small-trialrun-prep.csv`。R6-2 已固定名单、窗口、回滚联系人和问题登记负责人;R6-3 自动检查已通过,且 WZ6 已创建真实财务候选账号 `wangzhiling`,只读核验为 `active`、角色 `employee,finance`。主 R6 仍保持 `TODO/TODO/TODO`,因为 R6-4 到 R6-6 的真实小范围流程、每日收口和结论尚未执行;不能直接把 R5/R6-3 通过解释为“自动进入正式试运行完成”。 @@ -185,15 +195,15 @@ R5 已完成。R6 准备合同已创建:`issues/2026-05-11_10-23-41-r6-small-t 试运行规则: - 每日固定收集问题,按阻断、重要、体验、后续需求分级。 -- 问题先登记到新 Issue CSV,不在试运行现场扩大范围。 +- 问题先登记到当前 Trellis task;跨域或阻断问题另建修复 task,不在试运行现场扩大范围。 - P2 的预算、ERP、AI、完整差旅、复杂 BPM 继续不进入首轮试运行。 - 出现权限泄漏、付款状态错乱、真实 OCR 大面积失败、企业微信入口无法进入时,应暂停试运行并回滚或修复。 -## 8. QAOPS8 Go/No-Go 清单 +## 8. 2026-05 QAOPS8 历史 Go/No-Go 清单 -本节是 `QAOPS8-17` 的上线和扩大试运行门禁。它只给当前时点结论,不替代 R7E 真实人工验收。 +本节是 `QAOPS8-17` 当时的上线和扩大试运行门禁,只保留历史结论,不替代未来新连续试运行的人工验收。 -当前结论:`No-Go/Pause`。 +当时结论:`No-Go/Pause`。 | 门禁 | 当前状态 | 结论 | | --- | --- | --- | diff --git a/docs/trialrun/真机公网测试清单.md b/docs/trialrun/真机公网测试清单.md index b39e9d9f..10972b75 100644 --- a/docs/trialrun/真机公网测试清单.md +++ b/docs/trialrun/真机公网测试清单.md @@ -2,7 +2,7 @@ **文档状态**:当前操作手册,用于真实手机、企业微信和移动浏览器人工验收。 -**当前状态(2026-05-13 / MIF7TD)**:R6 已通过;`ME6-3` 代表性企业微信真机门禁已由 iPhone 12、iPhone 14、Redmi K60 企业微信主流程反馈关闭。MIF7/MIF7T 已完成本地整改、公网部署、公网匿名复检和带凭据 live smoke/OCR 复检。R7 未真实启动;R7 草案、OPS7 Runbook 和 DOC7 用户材料不代表已启动或已上线。 +**当前状态(2026-07-16)**:最后有部署和公网复检证据的来源基线为 `df26922`;7 月 P0 可信度修复只在本地 `main`,尚未 push、部署或完成公网复检。旧 7 天试运行只有 Day 1–Day 4 后中断。新连续试运行必须等当前可信基线部署并复核后,新建 Trellis task,从 Day 1 启动。下文 2026-05 的设备、账号和通过结果只对当时部署来源有效。 适用范围:使用真实手机访问 `https://oa.hyinda.com`,重点验证企业微信工作台、手机浏览器、PDF 发票上传、真实 OCR 状态反馈和移动核心流程。 @@ -10,7 +10,12 @@ - 测试日期: - 测试人: +- 当前 Trellis task: - 公网地址:`https://oa.hyinda.com` +- 预期部署来源 commit: +- `/ready` observed build SHA: +- 公网 bundle build marker: +- 是否确认覆盖当前候选基线:是 / 否 / 阻塞 - 验收状态:`TODO` / `PASS` / `FAIL` / `BLOCKED` / `PAUSED` - 账号角色:专用测试员工 / 测试主管 / 测试负责人 / 测试财务 / 测试财务主管 / 测试管理员 - 设备:iPhone / Android @@ -20,6 +25,8 @@ - 网络:公司 Wi-Fi / 4G / 5G / 其他 - 测试发票样本:PDF +执行前置:必须核对实际部署来源。若公网仍只能证明 `df26922`,本轮结论只能覆盖该历史部署基线,不能宣称已验证 7 月 P0 修复;新连续试运行不得借用旧真机结论补作新的 Day 1–Day 7 证据。 + ## 企业微信入口 - 从企业微信工作台点击海音达工作台应用。 @@ -81,7 +88,9 @@ - 企业微信真机验收只覆盖工作台入口、绑定/免登录、移动布局、待办、详情、PDF 上传入口和通知 deeplink;当前 `oa_smoke_01 -> SMOKE002` 与 `oa_smoke_02 -> SMOKE101` 足够覆盖“提交人 + 审批人”的核心移动体验。 - 负责人、财务、财务主管深层链路需改用当前 active 角色账号或新建带企微绑定的测试账号;旧 `SMOKE201/301/302` 只保留为 2026-05-10 自动化历史证据,不再作为当前验收入口。 -### PC/自动化审批链验收矩阵 +以下账号、角色和结果为 2026-05 历史基线。新一轮必须按当前 Trellis task 重新核验账号 active、角色、绑定和可见范围,不直接复用“当前账号”结论。 + +### 2026-05 PC/自动化审批链历史验收矩阵 | 验收项 | 验收方式 | 账号角色 | 提交或处理 | 期望结果 | 结果 | 证据位置 | | --- | --- | --- | --- | --- | --- | --- | @@ -92,7 +101,7 @@ | 系统管理员无业务审批权 | PC/自动化 | 当前 active admin | 尝试审批测试单据 | 不允许仅凭 `admin` 审批 | 需按 WOUA-FIX 后账号重跑 | 后续新证据 | | 财务复核与付款/导出 | PC/自动化 | 当前 active 财务角色账号 | 处理已批准测试单据 | 按财务与财务主管权限处理 | 需按 WOUA-FIX 后账号重跑 | 后续新证据 | -### 企业微信/移动体验验收矩阵 +### 2026-05 企业微信/移动体验历史验收矩阵 | 验收项 | 企业微信测试成员 | OA 账号 | 期望结果 | 当前结果 | 截图或录屏位置 | | --- | --- | --- | --- | --- | --- | @@ -135,6 +144,7 @@ - 记录失败时间、账号角色、设备、企业微信版本、页面 URL、操作步骤。 - 对 OCR 问题记录发票文件名、文件类型、上传时间、终态、耗时。 - 对企业微信入口问题记录是否从工作台进入、是否已绑定、回跳 URL。 +- 记录预期来源 commit、`/ready` observed build SHA 和公网 bundle marker;通过结论只对实际核对的来源基线有效。 ## 通过标准 @@ -143,3 +153,4 @@ - 报销、票据、审批、我的、通知主流程可完成。 - PDF 发票上传和真实 OCR 有明确状态变化和终态反馈。 - 已知问题文案和原始码值不再出现。 +- 来源 commit、`/ready` build SHA 和公网 bundle marker 一致;缺失或不一致时不得给出当前候选通过结论。 diff --git a/docs/文档事实源状态矩阵.md b/docs/文档事实源状态矩阵.md index 78c272f4..daf65c41 100644 --- a/docs/文档事实源状态矩阵.md +++ b/docs/文档事实源状态矩阵.md @@ -2,12 +2,19 @@ **文档状态**:当前文档治理事实源。 **分类**:文档台账。 -**适用时间**:DCL7 之后。 -**关联 Issue**:`GOV8`。 -**最近审计**:2026-05-18。 +**适用时间**:TRELLIS2 及 2026-07-16 状态收口之后。 +**关联治理**:当前 Trellis task;`GOV8` 只作历史治理来源。 +**最近审计**:2026-07-16。 **不得误读**:本文登记文档权威性和状态,不替代具体 Trellis task、PRD、模块规约或测试规约。 **治理口径**:中文优先,物理精简,优先复用已有文档。历史资料不建 `docs/archive/`,已确认不用的文档从当前树移除,通过 git 历史恢复。 +## 当前可信基线(2026-07-16) + +- 最后有部署和公网复检证据的来源基线为 `df26922`;未做当前公网只读检查时,不据此断言服务器此刻仍运行该提交。 +- 7 月 P0 可信度修复只在本地 `main`,尚未 push、部署或完成公网复检,不能视为线上生效。 +- 旧 OAOPS1 只执行 Day 1–Day 4 后中断,原目标未完成;归档只表示生命周期关闭。 +- 未来真实连续试运行必须在当前可信基线部署并复核后,由新 Trellis task 从 Day 1 启动。 + ## 冲突优先级 当前 Trellis task PRD/设计 > 当前 PRD/模块规约 > 产品体验事实和业务规约 > 当前操作手册 > 技术参考 > 历史证据 > git 历史。前端视觉与交互裁决优先使用 `frontend-design`。 @@ -16,14 +23,16 @@ | Status | 含义 | 是否可直接指导开发 | | --- | --- | --- | -| `CURRENT` | 当前事实源或当前执行合同 | 可以 | +| `CURRENT` | 当前事实源;只有当前 Trellis task 可作为新工作的执行合同 | 事实源可以,旧 Issue 不可以直接派工 | | `DRAFT` | 草案或准备材料,未完成启动确认 | 不可以 | | `EVIDENCE` | 试运行、测试、审计或验收证据 | 不可以 | | `HISTORICAL` | 历史快照或旧合同 | 不可以 | | `SUPERSEDED` | 已被新文档或新合同替代 | 不可以 | | `REMOVED` | 已从当前树物理移除,只能从 git 历史恢复 | 不可以 | -## 当前活跃治理流 +## 治理流状态台账 + +当前执行必须从 Trellis task 进入。下表中的 Issue 路径主要承担历史来源和规则追溯;`CURRENT` 不表示旧 Issue 可以直接续写或派工。 | Stream | Contract | Status | 用途 | | --- | --- | --- | --- | @@ -108,10 +117,10 @@ | `WTCLOSE2F` | `issues/2026-05-22_11-10-06-wecom-test-account-closeout-remote-only-v1.csv` | `CURRENT` | WTCLOSE2 远端可信 IP 执行口径修正:企微 API 只能由部署服务器访问,WTCLOSE2 真实运行必须使用 `--remote` 在 server 容器内执行;本地直接执行默认阻断,只保留静态门禁用途 | | `WREMOTE1` | `issues/2026-05-22_12-34-41-wecom-remote-closeout-and-full-smoke-v1.csv` | `CURRENT` | 远端可信 IP 收口、WFULLSMOKE2 全域 smoke 和 WEXT1-FORMAL 正式模板外出/加班测试合同:先远端 WTCLOSE2,再远端全域 smoke;外出/加班不自动建模板,改为 `SMOKE002` 正式模板人工提交、`SMOKE101` 审批后系统只读补偿/归档/WRULE1 | | `WEXT1F` | `issues/2026-05-22_14-23-19-wecom-formal-outing-overtime-evidence-v1.csv` | `CURRENT` | 正式模板外出/加班证据脚本合同:`SMOKE002` 人工提交、`SMOKE101` 先看详情再审批后,使用 `WEXT1F_MANUAL_CONFIRMATION=SMOKE002_SUBMITTED_SMOKE101_REVIEWED bash scripts/qa/run-wecom-formal-outing-overtime-evidence.sh --remote` 从部署服务器只读拉取 outing/overtime;补偿拉取必须按 `creator=SMOKE002` 过滤,只写 OA 留存、离线读取和 WRULE1;不创建模板、不自动提交审批、不写企业微信 | -| `OAOPS1` | `issues/2026-05-22_20-09-22-oa-real-use-stabilization-v1.csv` | `CURRENT` | 当前 OA 主办域真实使用稳定化合同:企微 HR/考勤先冻结在企微主办 + OA 留存/审计完成态;公网 OA 进入 7 天小团队全员真实使用,允许真实业务数据,覆盖报销/PDF OCR、审批、采购/费用、合同台账、项目、付款批次、银行回单、AP 台账、代账交接、移动/企微入口和审计;新增 `scripts/qa/run-oa-real-use-daily.sh` 默认只读巡检,真实业务写入由人工完成;P2 冻结项继续冻结 | +| `OAOPS1` | `issues/2026-05-22_20-09-22-oa-real-use-stabilization-v1.csv` | `HISTORICAL` | 7 天真实使用任务只执行 Day 1–Day 4 后中断,缺 Day 5–Day 7、人工业务闭环和 Day 7 Go/No-Go,原目标未完成;旧 readiness 曾存在 `SKIP` 假绿风险。2026-07-16 按用户决定关闭生命周期,归档不代表目标完成;未来待当前可信基线部署并复核后,由新 Trellis task 从 Day 1 连续重启 | | `ASSET1` | `issues/2026-05-22_21-18-33-oa-asset-governance-v1.csv` | `CURRENT` | 当前统一资产台账 V1 合同:复用现有资产模块统一管理固定资产和电子资产索引;编号族为 `FA/EA-DOC/EA-SYS/EA-REPO/EA-BKP`,`EA-ACC` 暂缓;代码仓库由 Git 管源码,OA 只登记元数据;历史公司目录只允许脱敏索引 dry-run 或受控写入 | | `OSMOKE1` | `issues/2026-05-23_13-59-52-oa-only-smoke-account-governance-v1.csv` | `CURRENT` | 当前 OA-only smoke 账号治理合同:企微账号有限时不再为 OA 全域自动化额外申请企微账号;admin/finance/hr/ceo 等回归账号作为 OA-only smoke,可不绑定企微;新增修复脚本、`oaOnlySmokeExempted` 审计豁免和公网角色 readiness 检查,豁免命中限于私有 env、显式员工号 allowlist 或 `SMOKE*`/`smoke-*`/测试命名;默认 dry-run,真实修复需 `OA_ONLY_SMOKE_REPAIR_APPLY=1` | -| `OALAUNCH1` | `issues/2026-05-23_16-49-39-oa-final-launch-readiness-v1.csv` | `CURRENT` | 当前最终启用前收口与 Go/No-Go 门禁合同:在 OAOPS1/ASSET1D/OSMOKE1 之上增加真实业务闭环、7 天稳定化、权限矩阵、备份恢复演练、数据治理培训、运营支持和 Day 7 人工决策;新增 `scripts/qa/run-oa-final-launch-readiness.sh` 默认只读汇总证据;未达到 `PASS_OA_LAUNCH_READY` 前不得宣布最终正式启用完成 | +| `OALAUNCH1` | `issues/2026-05-23_16-49-39-oa-final-launch-readiness-v1.csv` | `EVIDENCE` | 历史最终启用门禁来源;真实业务闭环、连续 7 天、权限矩阵、备份恢复、数据治理培训、运营支持和 Day 7 人工决策要求仍可复用,但未来实际执行必须由新 Trellis task 承接。未取得新任务完整证据前不得宣布最终正式启用完成 | | `OMAT1` | `issues/2026-05-23_17-20-00-oa-maturity-gap-review-v1.csv` | `CURRENT` | 当前成熟度缺口审查台账:按 MAGI 审视/执行/提升轮次调查 hyb-oa 是否成熟,并对标国内主流 OA/协同/低代码/财务/资产系统;已补充国内对标来源、小团队取舍原则、用户决策回填和成熟度证据视图;所有问题和建议先记录为待用户采纳、暂缓或否决,不直接改业务代码 | | `OPOLICY1` | `issues/2026-05-24_01-20-52-oa-policy-system-alignment-v1.csv` | `CURRENT` | 当前制度与 OA 对齐合同:先调整外部制度包为小团队 V1,再回写 OA 事实源和启用门禁;制度参数、资料留存、用印台账、审批异常 SOP、制度签收和 P2 冻结进入 OALAUNCH1 数据治理门禁;现有合同台账、资产台账和公告能力可承载 V1,不立即做 schema 或业务代码改造 | | `OAFLOW1` | `issues/2026-05-24_19-03-07-oa-owner-application-fallback-approval-v1.csv` | `CURRENT` | 当前负责人本人申请兜底审批合同:`wangshunli/HYD000006` 本人报销不配置假直属主管、不允许自审、不把 `admin` 当业务审批权;报销审批规则新增 `ownerSelfFallbackRole`,首版只允许 `finance_mgr` 或置空,现有启用规则默认 `finance_mgr`,提交时生成新单审批快照并移除本人 `ceo` 节点和重复兜底角色;公网低风险验证需另行批准 | @@ -128,8 +137,8 @@ | Doc_ID | Path | Category | Authority | Status | Owner | Related_Issues | Evidence | Supersedes | Last_Audited | Audit_Method | Risk | Notes | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| `IDX` | `docs/文档索引.md` | 入口索引 | 最高文档入口 | `CURRENT` | product/dev | `GOV8,QAOPS9,P2D,P2-ORG,P2-FIN-DECISION,P2-FIN-V1,P2-OCR-SAMPLE,P2Q,P2AUTO,P2AF,P2-FIN-LIVE-DECISION,P2-FIN-LIVE,PRELAUNCH,CASHIER-VOUCHER-V1,LAUNCH-DEPLOY-FINANCE,FIN-PROD-ENABLE,ACCOUNTING-HANDOFF-V1,SYSTEM-COMPLETE-GATE,LAUNCH-OPS-V1,REQ-COMPLETE-AUDIT,ATTV1,LAUNCH-AUTO-OPS-V1,AUTO-REMAINING-CLOSEOUT,HR-WECOM-DIRECTORY-V1,WFOC,DBWFOC,WFDG,WDRG,WCP1,WCPC,WHMS,WHMSLIVE,WOUA,WAPI,WRRA,WOUAFIX,WRV1,WRA1,WMSG1,WAPC1,WAPC2,WPROC1,WPROC2,WAPC2F,WAPC2FLIVE,WCBK1,WEGOV1,WARCH1,WARCH2,WROAD2,WARCH3,WCHECK1,WEXT1,WOPS1,WROAD2C,WROAD2B,WAPPR1,WRULE1,WAUTO1,WEXT1LD,WFULLSMOKE1,WTCLOSE2,WREAL1P,OAOPS1,ASSET1,OSMOKE1,OALAUNCH1,OMAT1,OPOLICY1,OAFLOW1,OAFRONT6,OAKISS1,PCDESIGN1,TRELLIS2` | `rg` | none | 2026-05-26 | `node scripts/qa/audit-docs.mjs --check-registry` | medium | 判断当前该读什么;TRELLIS2 后新开发先读当前 Trellis task,旧 Issue CSV 只追溯;仍优先读取 OALAUNCH1、OMAT1、OPOLICY1、OAFLOW1、OAFRONT6、OAKISS1、PCDESIGN1 等业务事实源 | -| `REG` | `docs/文档事实源状态矩阵.md` | 文档台账 | 文档分类和状态事实源 | `CURRENT` | product/dev | `GOV8,QAOPS9,P2D,P2-ORG,P2-FIN-DECISION,P2-FIN-V1,P2-OCR-SAMPLE,P2Q,P2AUTO,P2AF,P2-FIN-LIVE-DECISION,P2-FIN-LIVE,PRELAUNCH,CASHIER-VOUCHER-V1,LAUNCH-DEPLOY-FINANCE,FIN-PROD-ENABLE,ACCOUNTING-HANDOFF-V1,SYSTEM-COMPLETE-GATE,LAUNCH-OPS-V1,REQ-COMPLETE-AUDIT,ATTV1,LAUNCH-AUTO-OPS-V1,AUTO-REMAINING-CLOSEOUT,HR-WECOM-DIRECTORY-V1,WFOC,DBWFOC,WFDG,WDRG,WCP1,WCPC,WHMS,WHMSLIVE,WOUA,WAPI,WRRA,WOUAFIX,WRV1,WRA1,WMSG1,WAPC1,WAPC2,WPROC1,WPROC2,WAPC2F,WAPC2FLIVE,WCBK1,WEGOV1,WARCH1,WARCH2,WROAD2,WARCH3,WCHECK1,WEXT1,WOPS1,WROAD2C,WROAD2B,WAPPR1,WRULE1,WAUTO1,WEXT1LD,WFULLSMOKE1,WTCLOSE2,WREAL1P,OAOPS1,ASSET1,OSMOKE1,OALAUNCH1,OMAT1,OPOLICY1,OAFLOW1,OAFRONT6,OAKISS1,PCDESIGN1,TRELLIS2` | `audit-docs` | none | 2026-05-26 | `audit-docs --check-registry` | medium | 判断文档权威性;登记 TRELLIS2 官方 task-first 口径,以及当前 OALAUNCH1、OMAT1、OPOLICY1、OAFLOW1、OAFRONT6、OAKISS1、PCDESIGN1、OAOPS1、ASSET1、OSMOKE1、每日巡检、阻断即修和冻结项事实 | +| `IDX` | `docs/文档索引.md` | 入口索引 | 最高文档入口 | `CURRENT` | product/dev | `GOV8,QAOPS9,P2D,P2-ORG,P2-FIN-DECISION,P2-FIN-V1,P2-OCR-SAMPLE,P2Q,P2AUTO,P2AF,P2-FIN-LIVE-DECISION,P2-FIN-LIVE,PRELAUNCH,CASHIER-VOUCHER-V1,LAUNCH-DEPLOY-FINANCE,FIN-PROD-ENABLE,ACCOUNTING-HANDOFF-V1,SYSTEM-COMPLETE-GATE,LAUNCH-OPS-V1,REQ-COMPLETE-AUDIT,ATTV1,LAUNCH-AUTO-OPS-V1,AUTO-REMAINING-CLOSEOUT,HR-WECOM-DIRECTORY-V1,WFOC,DBWFOC,WFDG,WDRG,WCP1,WCPC,WHMS,WHMSLIVE,WOUA,WAPI,WRRA,WOUAFIX,WRV1,WRA1,WMSG1,WAPC1,WAPC2,WPROC1,WPROC2,WAPC2F,WAPC2FLIVE,WCBK1,WEGOV1,WARCH1,WARCH2,WROAD2,WARCH3,WCHECK1,WEXT1,WOPS1,WROAD2C,WROAD2B,WAPPR1,WRULE1,WAUTO1,WEXT1LD,WFULLSMOKE1,WTCLOSE2,WREAL1P,OAOPS1,ASSET1,OSMOKE1,OALAUNCH1,OMAT1,OPOLICY1,OAFLOW1,OAFRONT6,OAKISS1,PCDESIGN1,TRELLIS2` | `rg` | none | 2026-07-16 | `node scripts/qa/audit-docs.mjs --check-registry` | medium | 判断当前该读什么;2026-07-16 由 `07-16-legacy-task-runbook-closeout` 完成状态收口,后续新开发先读当前 Trellis task,旧 Issue CSV 只作追溯 | +| `REG` | `docs/文档事实源状态矩阵.md` | 文档台账 | 文档分类和状态事实源 | `CURRENT` | product/dev | `GOV8,QAOPS9,P2D,P2-ORG,P2-FIN-DECISION,P2-FIN-V1,P2-OCR-SAMPLE,P2Q,P2AUTO,P2AF,P2-FIN-LIVE-DECISION,P2-FIN-LIVE,PRELAUNCH,CASHIER-VOUCHER-V1,LAUNCH-DEPLOY-FINANCE,FIN-PROD-ENABLE,ACCOUNTING-HANDOFF-V1,SYSTEM-COMPLETE-GATE,LAUNCH-OPS-V1,REQ-COMPLETE-AUDIT,ATTV1,LAUNCH-AUTO-OPS-V1,AUTO-REMAINING-CLOSEOUT,HR-WECOM-DIRECTORY-V1,WFOC,DBWFOC,WFDG,WDRG,WCP1,WCPC,WHMS,WHMSLIVE,WOUA,WAPI,WRRA,WOUAFIX,WRV1,WRA1,WMSG1,WAPC1,WAPC2,WPROC1,WPROC2,WAPC2F,WAPC2FLIVE,WCBK1,WEGOV1,WARCH1,WARCH2,WROAD2,WARCH3,WCHECK1,WEXT1,WOPS1,WROAD2C,WROAD2B,WAPPR1,WRULE1,WAUTO1,WEXT1LD,WFULLSMOKE1,WTCLOSE2,WREAL1P,OAOPS1,ASSET1,OSMOKE1,OALAUNCH1,OMAT1,OPOLICY1,OAFLOW1,OAFRONT6,OAKISS1,PCDESIGN1,TRELLIS2` | `audit-docs` | none | 2026-07-16 | `audit-docs --check-registry` | medium | 判断文档权威性;2026-07-16 由 `07-16-legacy-task-runbook-closeout` 复核:OAOPS1 已按原目标未完成的生命周期关闭语义归档,OALAUNCH1 只作历史门禁证据,后续试运行由新 Trellis task 承接 | | `PRD-MVP` | `docs/海音达OA-MVP需求规格说明书.md` | 需求事实源 | PRD 主事实源 | `CURRENT` | product | `REQ8,P2T,GOV8,HR-WECOM-DIRECTORY-V1,WFOC,DBWFOC,WFDG,WDRG,WCP1,WCPC,WHMS,WHMSLIVE,WOUA,WAPI,WRRA,WAPC1,WAPC2,WAPC2FLIVE,WCBK1,WEGOV1,WACP3,WACP3R,WARCH1,WARCH2,WROAD2,WARCH3,WCHECK1,WEXT1` | Trellis task / 历史 Issue CSV | `docs/requirements-specification.md` | 2026-05-26 | `rg` | high | WARCH3/WCHECK1/WEXT1/WOPS1 后定义 HR/考勤企微主办、OA 自建留存、受控测试域、只读历史查询、自动巡检、打卡摘要、外出/加班 dry-run、WEXT1-FORMAL、WREAL1 前置和深度镜像边界;ERP 未来不接入 OA | | `PRODUCT-SCOPE` | `docs/产品口径.md` | 需求事实源 | 产品边界事实源 | `CURRENT` | product | `REQ8,P2T,WFDG,WDRG,WCP1,WCPC,WHMS,WHMSLIVE,WOUA,WAPI,WRRA,WAPC1,WAPC2FLIVE,WCBK1,WEGOV1` | `rg` | none | 2026-05-19 | `rg` | high | 记录已拍板产品边界、企微/OA 设计门禁、开发路线图、WCBK1 真实回调事件证据、WEGOV1 混合主办边界和 OA 自建留存策略 | | `DESIGN-UI` | `docs/产品设计规则.md` | 产品体验事实源 | PC/移动/企业微信职责、页面分层、信息语义和验收边界 | `CURRENT` | product/frontend | `MIA7,MIF7,GOV8,DG8,DG9,WFDG` | Playwright/视觉审查/DG8/DG9/WFDG | none | 2026-05-27 | `rg` | high | 视觉与交互裁决以 `frontend-design` 为准;本文只保留业务体验事实、OA/企微主办边界、A/B/C 页面职责和验收边界 | @@ -146,10 +155,12 @@ | `RULE-REIMB` | `docs/报销发票附件规则.md` | 需求事实源 | 报销发票附件规则 | `CURRENT` | product/finance | `RI6,BIZ8` | 报销回归 | none | 2026-05-13 | `rg` | high | 报销、发票、附件细则 | | `REQ-WECOM` | `docs/需求-企业微信基础设施规约.md` | 需求事实源 | 企业微信边界规约 | `CURRENT` | product/backend | `R7E,ORG8,WF8,ATTV1,HR-WECOM-DIRECTORY-V1,WFOC,DBWFOC,WFDG,WCP1,WCPC,WHMS,WHMSLIVE,WOUA,WAPI,WRRA,WRV1,WRA1,WMSG1,WAPC1,WAPC2,WPROC1,WPROC2,WAPC2F,WAPC2FLIVE,WCBK1,WEGOV1,WACP3,WACP3R,WREAD1,WADM1,WARCH1,WARCH2,WROAD2,WARCH3,WCHECK1,WEXT1,WROAD2B,WAPPR1,WAUTO1,WEXT1LD,WFULLSMOKE1,WTCLOSE1,WTCLOSE2` | live smoke / 真机反馈 / Trellis task / 历史 Issue CSV | none | 2026-05-26 | `rg` | high | 企微优先承担 HR/考勤员工日常审批和人事/打卡能力;WARCH2 已提供请假/补卡正式只读历史查询,WARCH3 固定受控上线自动巡检,WCHECK1 固定打卡摘要留存,WEXT1 固定外出/加班 dry-run,WROAD2B 固定三天人工业务冒烟,WAPPR1/WTCLOSE1 固定审批规则规范化和小团队目标 A,WFULLSMOKE1 固定全域主路径测试边界,WTCLOSE2 固定最终测试号自动收口,WEXT1-FORMAL 需收口后另建合同;采购、合同、项目、报销和财务继续 OA 主办 | | `REQ-ASSET` | `docs/需求-资产管理规约.md` | 需求事实源 | 统一资产台账规约 | `CURRENT` | product/backend | `ASSET1,OPOLICY1` | Trellis task / 本地门禁 / 历史 Issue CSV | none | 2026-05-26 | `rg` | high | 固定资产和电子资产统一台账;编号族 `FA/EA-DOC/EA-SYS/EA-REPO/EA-BKP`;`EA-ACC` 暂缓;Git 管源码,OA 只登记仓库元数据;OPOLICY1 后固定资料留存、备份资产、账号凭据禁入和 P2 冻结边界 | -| `RUNBOOK-TRIAL` | `docs/试运行与自动化验证手册.md` | 操作手册 | 试运行验证手册 | `CURRENT` | qa/ops | `R7E,QAOPS8` | live readiness | none | 2026-05-13 | `rg` | medium | 本地、公网、企业微信和真实 OCR 验证 | +| `RUNBOOK-TRIAL` | `docs/试运行与自动化验证手册.md` | 操作手册 | 试运行验证手册 | `CURRENT` | qa/ops | `TRELLIS2,R7E,QAOPS8,OAOPS1,OALAUNCH1` | Trellis task / live readiness | none | 2026-07-16 | `rg` | medium | Trellis-first;区分最后确认公网来源 `df26922`、7 月本地未部署基线和未来新连续试运行 | +| `RUNBOOK-RELEASE` | `docs/trialrun/发布试运行准备清单.md` | 操作手册 | 发布与连续试运行准备 | `CURRENT` | qa/ops | `TRELLIS2,OAOPS1,OALAUNCH1` | Trellis task / release gate | none | 2026-07-16 | `rg` | medium | 当前状态以 2026-07-16 基线说明为准;A1-R7E、QAOPS8 内容保留为历史证据 | +| `RUNBOOK-DEVICE` | `docs/trialrun/真机公网测试清单.md` | 操作手册 | 真机与企业微信验收 | `CURRENT` | qa/ops | `TRELLIS2,OAOPS1,OALAUNCH1` | Trellis task / 真机证据 | none | 2026-07-16 | `rg` | medium | 当前验证必须记录实际部署来源 SHA;2026-05 设备、账号和结果只作历史基线 | | `MANUAL-ADMIN` | `docs/管理员手册.md` | 操作手册 | 管理员手册 | `CURRENT` | ops/admin | `ORG8,R7E,WFOC,DBWFOC,WFDG,WCPC,WHMS,WHMSLIVE,WOUA,WAPI,WRRA,WRV1,WRA1,WMSG1,WAPC1,WAPC2,WPROC1,WPROC2,WAPC2F,WAPC2FLIVE,WCBK1,WEGOV1,WACP3,WACP3R,WREAD1,WADM1,WARCH1,WARCH2,WROAD2,WARCH3,WCHECK1,WEXT1,WOPS1,WROAD2C,WROAD2B,WAPPR1,WAUTO1,WEXT1LD,WFULLSMOKE1,WTCLOSE1,WTCLOSE2,WREAL1P,ASSET1,OALAUNCH1,OPOLICY1,OAFLOW1` | 人工验收 | none | 2026-05-24 | `rg` | medium | 管理员上线、企微优先边界、Secret 矩阵、巡检、HR/考勤门禁、ASSET1、OALAUNCH1、OPOLICY1 和 OAFLOW1;明确制度参数、资料留存、用印台账、审批异常 SOP、制度签收、负责人本人报销兜底、备份恢复、权限矩阵和敏感资料不进公网 OA 的管理口径 | | `MANUAL-EMPLOYEE` | `docs/员工快速上手.md` | 操作手册 | 员工手册 | `CURRENT` | product | `R7E,WFOC,DBWFOC,WFDG,ASSET1,OALAUNCH1,OPOLICY1` | 人工验收 | none | 2026-05-24 | `rg` | low | 员工侧使用说明,HR/考勤优先企业微信,采购/合同/财务仍在 OA;补充统一资产台账、电子资产、涉密资产可见边界、制度签收、资料留存和 OALAUNCH1 收口期问题反馈口径 | -| `R7-DRAFT` | `docs/trialrun/R7扩大试运行草案.md` | 草案 | R7 准备材料 | `DRAFT` | product/qa | `R7E` | R7EP 报告 | none | 2026-05-13 | `rg` | medium | 不代表当前 R7E 执行状态 | +| `R7-DRAFT` | `docs/trialrun/R7扩大试运行草案.md` | 草案 | R7 准备材料 | `DRAFT` | product/qa | `R7E` | R7EP 报告 | none | 2026-07-16 | `rg` | medium | R7E 已是历史证据;未来真实连续试运行由新 Trellis task 从 Day 1 承接 | | `OPS-RUNBOOK` | `docs/trialrun/OPS7运维交接Runbook.md` | 运维草案 | OPS 准备材料 | `DRAFT` | ops | `OPS8,QAOPS8` | 只读检查 | none | 2026-05-13 | `rg` | medium | 不代表恢复演练已执行 | | `TRIAL-REPORT` | `docs/trialrun/人工试运行报告.md` | 证据材料 | 试运行证据入口 | `EVIDENCE` | qa | `R7EP,OPS8,QAF8,WOUA,WAPI,WOUAFIX,WRV1,WRA1,WMSG1,WAPC1,WAPC2,WAPC2F,WAPC2FLIVE,WCBK1,WEGOV1,WROAD2,WARCH3,WCHECK1,WEXT1,WOPS1,WROAD2C,WROAD2B,WAPPR1,WAUTO1,WEXT1LD,WFULLSMOKE1,WTCLOSE1,WRULE1,WTCLOSE2,WREAL1P,ASSET1,OALAUNCH1,OMAT1,OAFLOW1` | artifacts/qa-flow | none | 2026-05-24 | `rg` | medium | 只证明发生过;记录 WAPC2FLIVE live 样件、WCBK1 真实回调事件、企微路线证据、WTCLOSE2 测试号最终收口、WREAL1 准备、ASSET1 统一资产台账、OALAUNCH1 最终启用门禁、OMAT1 成熟度验收摘要、OAFLOW1 负责人本人报销兜底审批、域级能力对标矩阵、人工决策问答清单、审查决策包、状态审计和 MAGI 轮次审视;不直接放行深度镜像或最终正式启用 | | `FBA-AUDIT` | `docs/trialrun/R7E后功能边界审计.md` | 证据材料 | R7E 后功能边界审计 | `EVIDENCE` | product/dev/qa | `FBA,R7E,QAOPS8,P2T` | 历史 Issue CSV | none | 2026-05-26 | `rg` | medium | 只作为功能边界、P2 候选和后续候选草案证据,不直接派工 | @@ -198,7 +209,7 @@ | 路径 | 分类 | 当前口径 | | --- | --- | --- | -| `docs/trialrun/R7扩大试运行草案.md` | 草案 | 当前执行状态以 R7E CSV 为准 | +| `docs/trialrun/R7扩大试运行草案.md` | 草案 | R7E 只作历史证据;未来执行以新连续试运行 Trellis task 为准 | | `docs/trialrun/OPS7运维交接Runbook.md` | 草案 | 不代表已执行生产配置或恢复演练 | | `docs/trialrun/R7用户手册与FAQ.md` | 草案 | 不承诺未实现能力 | | `docs/历史功能状态矩阵.md` | 历史证据 | 轻量索引,旧大表从 git 历史恢复 | @@ -238,11 +249,13 @@ | `docs/trialrun/deployment-preflight-2026-05-10.md` | 旧部署预检记录 | | `docs/requirements-specification.md` | 旧 PRD 跳转入口 | -## 当前门禁 +## 2026-05 历史门禁摘要 + +以下内容是 2026-05 当时的门禁与证据快照,仅用于历史追溯;其中“已完成”“阻断为 0”等表述不得解释为 2026-07 当前系统结论。当前状态以上文“当前可信基线”和当前 Trellis task 为准。 - `ME6-3` 代表性企业微信真机门禁已关闭。 - MIF7-1..7 与 MIF7T 已完成本地整改、公网部署、公网匿名复检和带凭据 live smoke/OCR 复检。 -- R7E 真实扩大试运行阶段验收、P2 排序、R7E 收口、QAOPS8 上线硬化阶段收口、QAOPS9 上线硬化连续合同、PRELAUNCH 正式启用前公网预回归、CASHIER-VOUCHER-V1 财务闭环与银行回单附件、LAUNCH-DEPLOY-FINANCE 部署复检、FIN-PROD-ENABLE 正式常开、ACCOUNTING-HANDOFF-V1 代账交接 SOP、SYSTEM-COMPLETE-GATE 系统完成门禁、LAUNCH-OPS-V1 首周运营保障、REQ-COMPLETE-AUDIT 需求完成度复核、ATTV1 考勤统一入口、AUTO-REMAINING-CLOSEOUT 剩余自动化收口、HRWD-CONTACT-LIVE-TEST 公网企微通讯录真实写入闭环、WFOC 需求重构、DBWFOC 数据边界修正、WFDG 设计门禁、WDRG 路线图门禁、WCPC 配置复跑、WHMSLIVE、WAPI、WRRA、WOUA-FIX、WRA1、WMSG1、WAPC1、WAPC2、WPROC1、WPROC2、WAPC2F dry-run、WAPC2FLIVE、WCBK1 代码部署、WEGOV1 路线治理、WACP3/WACP3R 补偿拉取 POC、WREAD1/WREAD1F 请假/补卡可读性门禁、WADM1 自建留存模型设计、WARCH1 最小历史留存实现、WARCH2 正式只读查询和 WROAD2 受控上线合同均已完成或建立,当前 P0/P1 阻断为 0;P2D 已完成决策分流,P2-ORG 只读巡检已完成且无需写修复合同。LAUNCH-AUTO-OPS-V1 发现的公网 `payment_batch_v1=force_off` 漂移已由 AUTOREM 恢复为 `force_on`,正式自动巡检结论为 `GO_TO_OPERATE`;`erp_sync=force_off`,ERP 未来不接入 OA,正式支付接口、图片 OCR 和银行流水导入继续不进入当前路线。WCP1 已完成企业微信能力 QA-only 只读 POC,历史结论为 `PAUSE_FOR_CONFIG`;WCPC 使用既有在职测试号 `SMOKE002/测试员工`(脱敏 `oa_smoke***`)完成远端只读复跑,报告 `/tmp/wecom-capability-poc-wcpc-smoke002/summary.json`,结论 `GO_TO_HR_MASTER_SYNC`,`nextStageAllowed=true`,`blockingCapabilities=[]`。WHMS 已实现并部署验证 `wecom_hr_master_sync_v1`、同步批次/逐员工记录、dry-run/apply、管理员 API、People 管理入口和 QA-only runner;默认和最终均为 `force_off`,公网 `SMOKE002` 因缺手机号、邮箱和部门按 `missing_required_field` 跳过,未执行生产真实员工批量 apply。WAPI 已将企微官方 API 能力目录、Secret 矩阵和运行优先路线落为当前事实源:通讯录读取使用 `WECOM_CONTACT_SECRET` 和 `user/list_id`,成员详情只作可选富化,人事助手/花名册、打卡、消息、OAuth 和审批读取默认使用 `WECOM_AGENT_SECRET`,`WECOM_CHECKIN_SECRET` 只作专用打卡 override,`WECOM_HR_ASSISTANT_SECRET` 不参与默认读取;后续企微能力不清楚时先查官方 API 和 [企微 API 能力目录](./企微API能力目录.md),不得靠运行时多个 Secret 试错。WOUA-FIX 已按用户确认执行受控写入并复检:7 个 OA active 缺企微测试账号软归档,`T0000` seed 复活问题修正,`SMOKE201` 测试主管和待办副作用已转交,最终 WOUA 报告 `/app/artifacts/qa-flow/wecom-oa-user-consistency-20260518T161716Z/summary.json` 为 `PASS_WITH_FINDINGS`,但 OA active 5、企微 active 5、匹配 5、OA active 缺企微 0;剩余 5 个企微缺字段先接受不补,`HRWDTEST-20260517214548` 归档绑定保留审计。WRV1 原始报告 `/app/artifacts/qa-flow/wecom-runtime-ready-20260518T173402Z/summary.json` 曾因同步开关误阻断;WRA1 已修正并公网复跑,报告 `/app/artifacts/qa-flow/wecom-runtime-ready-20260518T180506Z/summary.json` 为 `PASS_WITH_CONFIG_GAPS`,入口/OAuth、Secret 矩阵、OA active 绑定、通讯录、人事助手、消息 dry-run 和打卡只读链路均通过,打卡记录 `readable_sync_disabled`。WMSG1 已证明企业微信应用消息和 Deeplink 可用;WAPC1 已固定首批审批模板(请假、补卡、外出、加班)、低风险 `sp_no`、真实回调配置项、验签/解密/幂等/重试和补偿拉取准入清单;WAPC2 已新增请假/补卡模板详情和审批详情只读 POC runner;WPROC1 已固定后续自动化优先、非自审和三层门禁,WPROC2 已将其升级为 `check-process-contract` process gate;WAPC2F 已新增审批样件 runner并公网 dry-run 通过;WAPC2FLIVE 已在用户批准后修正 `create_template` payload,创建 OA-POC 请假/补卡测试模板和低风险测试审批单,报告 `/app/artifacts/qa-flow/wecom-approval-fixtures-20260519T053400Z/summary.json` 为 `PASS_FIXTURE_CREATED`,自动复跑 WAPC2 为 `PASS_APPROVAL_POC`。WCBK1 已新增并部署只读 `GET/POST /api/wecom/approval/callback`、验签/AES 解密/归一化服务和 synthetic runner,远端报告 `/app/artifacts/qa-flow/wecom-approval-callback-poc-20260519T083422Z/summary.json` 为 `PASS_CALLBACK_URL_VERIFIED`;`SMOKE101` 同意现有 OA-POC 补卡测试单后复跑 `/app/artifacts/qa-flow/wecom-approval-callback-poc-20260519T092648Z/summary.json` 为 `PASS_CALLBACK_EVENT_CONFIRMED`。WEGOV1 固定混合架构:HR/考勤日常流程优先复用企业微信,OA 做自建数据留存、审计、入口、消息和应急兜底;采购、费用、合同、项目、报销、付款、AP、代账交接、审计和高敏附件继续 OA 主办。WACP3R 已按 `SMOKE002` creator 自动发现请假/补卡 OA-POC 模板并公网复跑补偿拉取,报告 `/app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T115944Z/summary.json` 为 `PASS_WITH_FINDINGS`,请假/补卡各拉到 1 条详情,finding 为回调证据文件未持久化。WREAD1F 后用户确认请假/补卡消息卡片、列表和详情页可看清,远端报告 `/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T133628Z/summary.json` 为 `PASS_READABLE`,同意单击即通过作为后续提示和审计设计风险。WADM1 已固定回调事件、补偿拉取和审批历史入库模型;WARCH1/WARCH2 已实现请假/补卡最小历史留存和正式只读查询,WROAD2/WARCH3/WCHECK1/WEXT1/WOPS1 已完成受控巡检、自动巡检、打卡摘要、外出/加班 dry-run 和告警降噪;WROAD2-CLOSEOUT 三天验收、WROAD2-BIZ1 三天业务冒烟、WAPPR1 审批规则规范化和 WEXT1-FORMAL 正式模板外出/加班测试 仍在后续门禁内,完整考勤/审批镜像、OA 应急接管、恢复回写和 RuleOps 尚未实现;HR 写接口仍需后续独立合同处理;不得以 WARCH1/WARCH2/WROAD2 或未通过审批规则门禁的测试号证据直接进入 `wecom_attendance_approval_mirror_v1`、`oa_hr_emergency_mode_v1`、`wecom_recovery_writeback_v1` 或 `wecom_ruleops_v1`。HRWD 已完成 OA 驱动企业微信通讯录同步,并通过 `HRWDTEST-20260517214548` 真实公网 create/update/disable 验证;测试成员按审计要求保留离职/禁用状态。 +- R7E 真实扩大试运行阶段验收、P2 排序、R7E 收口、QAOPS8 上线硬化阶段收口、QAOPS9 上线硬化连续合同、PRELAUNCH 正式启用前公网预回归、CASHIER-VOUCHER-V1 财务闭环与银行回单附件、LAUNCH-DEPLOY-FINANCE 部署复检、FIN-PROD-ENABLE 正式常开、ACCOUNTING-HANDOFF-V1 代账交接 SOP、SYSTEM-COMPLETE-GATE 系统完成门禁、LAUNCH-OPS-V1 首周运营保障、REQ-COMPLETE-AUDIT 需求完成度复核、ATTV1 考勤统一入口、AUTO-REMAINING-CLOSEOUT 剩余自动化收口、HRWD-CONTACT-LIVE-TEST 公网企微通讯录真实写入闭环、WFOC 需求重构、DBWFOC 数据边界修正、WFDG 设计门禁、WDRG 路线图门禁、WCPC 配置复跑、WHMSLIVE、WAPI、WRRA、WOUA-FIX、WRA1、WMSG1、WAPC1、WAPC2、WPROC1、WPROC2、WAPC2F dry-run、WAPC2FLIVE、WCBK1 代码部署、WEGOV1 路线治理、WACP3/WACP3R 补偿拉取 POC、WREAD1/WREAD1F 请假/补卡可读性门禁、WADM1 自建留存模型设计、WARCH1 最小历史留存实现、WARCH2 正式只读查询和 WROAD2 受控上线合同均已完成或建立,当时登记的 P0/P1 阻断为 0;P2D 已完成决策分流,P2-ORG 只读巡检已完成且无需写修复合同。LAUNCH-AUTO-OPS-V1 发现的公网 `payment_batch_v1=force_off` 漂移已由 AUTOREM 恢复为 `force_on`,正式自动巡检结论为 `GO_TO_OPERATE`;`erp_sync=force_off`,ERP 未来不接入 OA,正式支付接口、图片 OCR 和银行流水导入继续不进入当前路线。WCP1 已完成企业微信能力 QA-only 只读 POC,历史结论为 `PAUSE_FOR_CONFIG`;WCPC 使用既有在职测试号 `SMOKE002/测试员工`(脱敏 `oa_smoke***`)完成远端只读复跑,报告 `/tmp/wecom-capability-poc-wcpc-smoke002/summary.json`,结论 `GO_TO_HR_MASTER_SYNC`,`nextStageAllowed=true`,`blockingCapabilities=[]`。WHMS 已实现并部署验证 `wecom_hr_master_sync_v1`、同步批次/逐员工记录、dry-run/apply、管理员 API、People 管理入口和 QA-only runner;默认和最终均为 `force_off`,公网 `SMOKE002` 因缺手机号、邮箱和部门按 `missing_required_field` 跳过,未执行生产真实员工批量 apply。WAPI 已将企微官方 API 能力目录、Secret 矩阵和运行优先路线落为当前事实源:通讯录读取使用 `WECOM_CONTACT_SECRET` 和 `user/list_id`,成员详情只作可选富化,人事助手/花名册、打卡、消息、OAuth 和审批读取默认使用 `WECOM_AGENT_SECRET`,`WECOM_CHECKIN_SECRET` 只作专用打卡 override,`WECOM_HR_ASSISTANT_SECRET` 不参与默认读取;后续企微能力不清楚时先查官方 API 和 [企微 API 能力目录](./企微API能力目录.md),不得靠运行时多个 Secret 试错。WOUA-FIX 已按用户确认执行受控写入并复检:7 个 OA active 缺企微测试账号软归档,`T0000` seed 复活问题修正,`SMOKE201` 测试主管和待办副作用已转交,最终 WOUA 报告 `/app/artifacts/qa-flow/wecom-oa-user-consistency-20260518T161716Z/summary.json` 为 `PASS_WITH_FINDINGS`,但 OA active 5、企微 active 5、匹配 5、OA active 缺企微 0;剩余 5 个企微缺字段先接受不补,`HRWDTEST-20260517214548` 归档绑定保留审计。WRV1 原始报告 `/app/artifacts/qa-flow/wecom-runtime-ready-20260518T173402Z/summary.json` 曾因同步开关误阻断;WRA1 已修正并公网复跑,报告 `/app/artifacts/qa-flow/wecom-runtime-ready-20260518T180506Z/summary.json` 为 `PASS_WITH_CONFIG_GAPS`,入口/OAuth、Secret 矩阵、OA active 绑定、通讯录、人事助手、消息 dry-run 和打卡只读链路均通过,打卡记录 `readable_sync_disabled`。WMSG1 已证明企业微信应用消息和 Deeplink 可用;WAPC1 已固定首批审批模板(请假、补卡、外出、加班)、低风险 `sp_no`、真实回调配置项、验签/解密/幂等/重试和补偿拉取准入清单;WAPC2 已新增请假/补卡模板详情和审批详情只读 POC runner;WPROC1 已固定后续自动化优先、非自审和三层门禁,WPROC2 已将其升级为 `check-process-contract` process gate;WAPC2F 已新增审批样件 runner并公网 dry-run 通过;WAPC2FLIVE 已在用户批准后修正 `create_template` payload,创建 OA-POC 请假/补卡测试模板和低风险测试审批单,报告 `/app/artifacts/qa-flow/wecom-approval-fixtures-20260519T053400Z/summary.json` 为 `PASS_FIXTURE_CREATED`,自动复跑 WAPC2 为 `PASS_APPROVAL_POC`。WCBK1 已新增并部署只读 `GET/POST /api/wecom/approval/callback`、验签/AES 解密/归一化服务和 synthetic runner,远端报告 `/app/artifacts/qa-flow/wecom-approval-callback-poc-20260519T083422Z/summary.json` 为 `PASS_CALLBACK_URL_VERIFIED`;`SMOKE101` 同意现有 OA-POC 补卡测试单后复跑 `/app/artifacts/qa-flow/wecom-approval-callback-poc-20260519T092648Z/summary.json` 为 `PASS_CALLBACK_EVENT_CONFIRMED`。WEGOV1 固定混合架构:HR/考勤日常流程优先复用企业微信,OA 做自建数据留存、审计、入口、消息和应急兜底;采购、费用、合同、项目、报销、付款、AP、代账交接、审计和高敏附件继续 OA 主办。WACP3R 已按 `SMOKE002` creator 自动发现请假/补卡 OA-POC 模板并公网复跑补偿拉取,报告 `/app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T115944Z/summary.json` 为 `PASS_WITH_FINDINGS`,请假/补卡各拉到 1 条详情,finding 为回调证据文件未持久化。WREAD1F 后用户确认请假/补卡消息卡片、列表和详情页可看清,远端报告 `/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T133628Z/summary.json` 为 `PASS_READABLE`,同意单击即通过作为后续提示和审计设计风险。WADM1 已固定回调事件、补偿拉取和审批历史入库模型;WARCH1/WARCH2 已实现请假/补卡最小历史留存和正式只读查询,WROAD2/WARCH3/WCHECK1/WEXT1/WOPS1 已完成受控巡检、自动巡检、打卡摘要、外出/加班 dry-run 和告警降噪;WROAD2-CLOSEOUT 三天验收、WROAD2-BIZ1 三天业务冒烟、WAPPR1 审批规则规范化和 WEXT1-FORMAL 正式模板外出/加班测试 仍在后续门禁内,完整考勤/审批镜像、OA 应急接管、恢复回写和 RuleOps 尚未实现;HR 写接口仍需后续独立合同处理;不得以 WARCH1/WARCH2/WROAD2 或未通过审批规则门禁的测试号证据直接进入 `wecom_attendance_approval_mirror_v1`、`oa_hr_emergency_mode_v1`、`wecom_recovery_writeback_v1` 或 `wecom_ruleops_v1`。HRWD 已完成 OA 驱动企业微信通讯录同步,并通过 `HRWDTEST-20260517214548` 真实公网 create/update/disable 验证;测试成员按审计要求保留离职/禁用状态。 - WMSG1 已完成企微应用消息实发与 Deeplink 真机验证:远端报告 `/app/artifacts/qa-flow/wecom-runtime-ready-20260518T234431Z/summary.json` 显示 `checks.message.status=OK`、`errcode=0`、`recipientCount=1`,用户确认收到“OA 运行就绪检查”并可点击进入 OA 通知页面;本证据只证明消息和 Deeplink 可用,不放行审批模板、测试 `sp_no`、真实回调或深度镜像。 - WAPC1 已完成企微审批配置准备清单:首批只准备请假、补卡、外出、加班模板;每个模板需准备模板 ID、适用范围、字段项、审批人规则、可见范围和自建应用权限;测试 `sp_no` 必须低风险且不得含采购、合同、报销、发票、银行回单或高敏附件;真实回调 Token/EncodingAESKey 不写入仓库或文档。本证据只代表配置准备口径已固化,不代表真实回调、审批镜像、应急接管、恢复回写或 RuleOps 已实现。 - WAPC2 已完成企微审批模板与低风险 `sp_no` 只读 POC 本地实现、部署和公网只读复跑:范围只包括请假和补卡,固定 `WECOM_AGENT_SECRET`,远端报告为 `PARTIAL_APPROVAL_POC_NEEDS_CONFIG`;本证据只代表模板详情/审批详情只读 runner 已具备且远端 Secret 可用,不代表模板 ID、测试 `sp_no`、真实回调或深度镜像已配置完成。 diff --git a/docs/文档索引.md b/docs/文档索引.md index c2b0cdeb..08bd26d6 100644 --- a/docs/文档索引.md +++ b/docs/文档索引.md @@ -2,9 +2,9 @@ **文档状态**:当前唯一文档入口。 **分类**:入口索引。 -**适用时间**:DCL7 之后。 -**关联 Issue**:`GOV8`。 -**最近审计**:2026-05-18。 +**适用时间**:TRELLIS2 及 2026-07-16 状态收口之后。 +**关联治理**:当前 Trellis task;`GOV8` 只作历史治理来源。 +**最近审计**:2026-07-16。 **不得误读**:本文只指示当前事实源和读取顺序;历史 Issue CSV 只能用于追溯,不直接生成新开发任务。 **治理口径**:中文优先,物理精简,优先复用已有文档。已确认不用的历史文档不放 `docs/archive/`,直接从当前工作树移除;需要时从 git 历史恢复。 @@ -18,7 +18,14 @@ - 新需求或试运行反馈:优先创建或更新当前同类型 Trellis task;只有跨业务域、跨风险等级或阶段收口后,才新建下一版 task。 - 新增说明、方案、审计或证据:优先补充现有事实源、模块规约、操作手册、证据文档或当前 Trellis task;只有现有文档无法承载、需要独立审计证据或用户明确要求时,才新建文档并登记本索引和事实源矩阵。 -## 最近事实源链 +## 当前可信基线(2026-07-16) + +- 最后有部署和公网复检证据的来源基线为 `df26922`;这是一条历史部署来源证据,未做当前公网只读检查时,不据此断言服务器此刻仍运行该提交。 +- 当前本地 `main` 包含 7 月 P0 可信度修复和后续本地收口,尚未 push、部署或完成公网复检,不能视为线上已生效。 +- 旧 OAOPS1 7 天真实试运行只有 Day 1–Day 4,后续中断,缺 Day 5–Day 7、现场人工业务闭环和 Day 7 Go/No-Go;归档只表示生命周期关闭,不代表目标完成。 +- 下一轮真实连续试运行必须等待当前可信基线部署并完成公网复核,再新建 Trellis task,从新的 Day 1 连续启动。 + +## 历史事实源链(截至 2026-05) R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> MIF7/MIF7T(公网部署与带凭据公网复检已收口) -> DG8 -> DG9 -> R7E -> FBA -> QAOPS9/P2D -> P2-ORG -> P2-FIN-DECISION -> P2-FIN-V1 -> P2-OCR-SAMPLE -> P2Q -> P2AUTO -> P2AF -> P2-FIN-LIVE-DECISION -> P2-FIN-LIVE -> PRELAUNCH -> CASHIER-VOUCHER-V1 -> LAUNCH-DEPLOY-FINANCE -> FIN-PROD-ENABLE -> ACCOUNTING-HANDOFF-V1 -> SYSTEM-COMPLETE-GATE -> LAUNCH-OPS-V1 -> REQ-COMPLETE-AUDIT -> ATTV1 -> LAUNCH-AUTO-OPS-V1 -> AUTO-REMAINING-CLOSEOUT -> HR-WECOM-DIRECTORY-V1 -> HRWD-CONTACT-LIVE-TEST -> WCFB -> WFOC -> DBWFOC -> WFDG -> WDRG -> WCP1 -> WCPC -> WHMS -> WHMSLIVE -> WOUA -> WAPI -> WRRA -> WOUA-FIX -> WRV1 -> WRA1 -> WMSG1 -> WAPC1 -> WAPC2 -> WPROC1 -> WPROC2 -> WAPC2F dry-run -> WAPC2FLIVE -> WCBK1 -> WEGOV1 -> WACP3/WACP3R -> WREAD1 自动汇总 -> WREAD1F 新样例 -> WREAD1 真机确认 -> WADM1 自建留存模型设计 -> WARCH1 最小审批历史留存 -> WARCH2 正式只读历史查询 -> WROAD2+OPS 受控上线与每日巡检 -> WARCH3 归档稳定化自动巡检 -> WCHECK1 打卡摘要留存 -> WEXT1 外出/加班 dry-run -> WOPS1 巡检告警降噪 -> WROAD2-CLOSEOUT 三天验收 -> WROAD2-BIZ1 三天业务冒烟 -> WAPPR1 审批规则规范化 -> WRULE1 审批链校验器 POC -> WAUTO1 自动证据汇总 -> WEXT1LD live 前 dry-run -> WFULLSMOKE1 三天全域最终目标测试 -> WROUTE2 测试号收口到最小镜像路线锁定 -> WTCLOSE1 小团队自动审批规则与测试号全域收口 dry-run -> WTCLOSE2 测试号最终收口与证据复核 -> WTCLOSE2F 远端可信 IP 执行口径修正 -> WREMOTE1 远端可信 IP 收口 -> WFULLSMOKE2 全域 smoke -> WEXT1-FORMAL/WEXT1F 正式模板外出/加班测试 -> OAOPS1 小团队全员真实使用稳定化 -> ASSET1 电子资产与固定资产统一台账 -> OSMOKE1 OA-only smoke 账号治理与公网自动化恢复 -> OALAUNCH1 最终启用前收口与 Go/No-Go 门禁 -> OMAT1 成熟度缺口审查 -> OPOLICY1 制度与 OA 对齐 -> OAFRONT6 前端成熟化小步收口(标题/资产/移动/合同/长编号已部署并公网复测通过)-> OAKISS1 全业务流程 KISS 审查 -> PCDESIGN1 PC 全页面设计审查 -> TRELLIS1 Trellis 主导开发流程迁移 -> TRELLIS2 官方 Trellis task 执行合同 -> 后续再按需问答 WREAL1/最小镜像。 @@ -81,7 +88,7 @@ R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> M - WARCH2 是 WARCH1 后的正式只读历史查询合同:新增只读 OA DB 查询 API 和 PC/移动历史页,只覆盖请假/补卡已归档历史;页面不提供审批动作,不进入待办语境;已完成 `SYNC_ENV=0` 公网部署、`/ready`、未登录 401 和远端离线归档复跑。 - WROAD2+OPS 是 WARCH2 后的受控上线与每日巡检合同:范围固定测试账号 `SMOKE002 -> SMOKE101`,管理员观察和告警员工号使用 `HYD000006`(`wangshunli` 的员工号),3 天每日触发脚本;巡检可用 `WECOM_ARCHIVE_WRITE=1` 写 OA 自建留存库,不写企业微信、不创建模板或审批单。Day 0 公网报告 `/app/artifacts/qa-flow/wroad2-ops-20260520-041941/summary.json` 为 `PASS_WITH_FINDINGS`,主链路通过并保留可解释 finding。后续优先 WOPS1 告警降噪、WROAD2-CLOSEOUT 三天验收;验收后先问答是否进入 WEXT1-FORMAL 正式模板外出/加班测试,再由四类测试号证据决定是否询问真实小范围试用。 -## 当前活跃治理流 +## 治理流台账(历史 Issue 只作追溯) 后续不再为每次聊天、小反馈或单点修正单独创建 Issue CSV。同类型、同目标、同风险域的任务优先进入同一个 Trellis task 或子任务,直到该治理流完成明确阶段。 @@ -168,10 +175,10 @@ R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> M | `WTCLOSE2F` | `issues/2026-05-22_11-10-06-wecom-test-account-closeout-remote-only-v1.csv` | 当前 WTCLOSE2 远端可信 IP 执行口径修正 | WTCLOSE2 真实运行命令改为 `bash scripts/qa/run-wecom-test-account-final-closeout.sh --remote`,由部署服务器 server 容器执行;本地直接执行默认拒绝跑企微链路 | 本地只做合同、语法、文档和静态门禁;此前本地缺 env/DB 的 WTCLOSE2 输出不作为企微业务阻断证据 | | `WREMOTE1` | `issues/2026-05-22_12-34-41-wecom-remote-closeout-and-full-smoke-v1.csv` | 当前远端收口、全域 smoke 和正式模板外出/加班测试路线 | WFULLSMOKE2 必须使用 `--remote` 在部署服务器执行;外出/加班使用正式模板由 `SMOKE002` 人工提交、`SMOKE101` 审批,系统只读补偿、归档和 WRULE1 | 允许 OA `TEST-SMOKE-WFULL` 测试数据;不写企业微信、不自动创建外出/加班模板或审批单;真实员工信息只通过 `/tmp/hyb-oa-wreal1.env` 临时文件 | | `WEXT1F` | `issues/2026-05-22_14-23-19-wecom-formal-outing-overtime-evidence-v1.csv` | 当前正式模板外出/加班证据脚本:人工提交后从部署服务器只读收证据 | 新增 `WEXT1F_MANUAL_CONFIRMATION=SMOKE002_SUBMITTED_SMOKE101_REVIEWED bash scripts/qa/run-wecom-formal-outing-overtime-evidence.sh --remote`;显式拉取 `outing/overtime` 且按 `creator=SMOKE002` 过滤,写 OA 留存仅限 `WECOM_ARCHIVE_WRITE=1` + `--persist-to-db`;随后做离线归档读取和 WRULE1 | 不创建模板、不自动提交审批、不写企业微信、不启用真实员工;未有人工作业或缺确认标记时只可得到人工缺口结论 | -| `OAOPS1` | `issues/2026-05-22_20-09-22-oa-real-use-stabilization-v1.csv` | 当前 OA 主办域真实使用稳定化:7 天小团队全员边用边修 | 新增 `scripts/qa/run-oa-real-use-daily.sh`,每日只读核验公网 ready、live smoke、feature flag、报销/PDF OCR、审批、采购/费用、合同台账、项目、付款批次、AP、移动/企微入口和隐私边界 | 允许真实业务数据进入公网 OA 并按审计保留;真实写入由人工完成;涉密合同正文、敏感报价、成本细节、银行流水原件、未脱敏票面不进仓库/聊天/报告;图片 OCR、复杂 BPM、预算、ERP、银行流水导入、真实支付直连、企微 HR 深镜像、应急接管、恢复回写、RuleOps 继续冻结 | +| `OAOPS1` | `issues/2026-05-22_20-09-22-oa-real-use-stabilization-v1.csv` | 历史运行中断:计划 7 天,实际只有 Day 1–Day 4,缺人工业务闭环和 Day 7 Go/No-Go;任务归档只表示生命周期关闭,不代表目标完成 | `scripts/qa/run-oa-real-use-daily.sh` 及 Day 1–Day 4 记录保留为历史证据;旧 runner 曾存在 `SKIP` 假绿风险,不能据此补证最终启用 | 未来由新的 Trellis task 在当前可信基线部署并复核后从 Day 1 连续重启;不得补造 Day 5–Day 7;冻结项继续冻结 | | `ASSET1` | `issues/2026-05-22_21-18-33-oa-asset-governance-v1.csv` | 当前统一资产台账 V1:电子资产 + 固定资产共用现有资产模块 | 扩展 `AssetCard` 为 `FA/EA-DOC/EA-SYS/EA-REPO/EA-BKP`,新增资产大类、敏感级别、负责人/保管人、归档位置、外部引用、hash、历史验证编号、最近验证时间和脱敏索引 dry-run;前端资产页支持类型/敏感级别/编号搜索 | 代码仓库仍由 Git 管理;`EA-ACC` 暂缓;不保存密码、token、Secret、源码包、完整配置、涉密正文、真实完整路径、敏感报价、银行流水原件或未脱敏票面 | | `OSMOKE1` | `issues/2026-05-23_13-59-52-oa-only-smoke-account-governance-v1.csv` | 当前 OA-only smoke 账号治理:恢复公网 OA 自动化高权限测试账号,不再额外申请企微账号 | 新增 OA-only smoke 修复脚本、企微/OA 一致性审计豁免 `oaOnlySmokeExempted`、公网角色 readiness 检查,并接入 OAOPS1 每日巡检 | 只处理私有 env、显式员工号 allowlist 或 `SMOKE*`/`smoke-*`/测试命名命中的 smoke 标识;默认 dry-run,apply 必须 `OA_ONLY_SMOKE_REPAIR_APPLY=1`;不写企业微信、不重置密码、不影响真实员工、不执行 EA-DOC live 导入 | -| `OALAUNCH1` | `issues/2026-05-23_16-49-39-oa-final-launch-readiness-v1.csv` | 当前最终启用前收口与 Go/No-Go 门禁:在 OAOPS1/ASSET1D 之上增加业务闭环、权限、备份恢复、数据治理、培训和 Day 7 决策 | 新增 `scripts/qa/run-oa-final-launch-readiness.sh`,默认只读聚合 OAOPS1、ASSET1D、权限矩阵、备份恢复演练和人工 Go/No-Go 证据,输出 `PASS_OA_LAUNCH_READY` / `PASS_WITH_FINDINGS` / `PAUSED_MANUAL_CONFIRMATION` / `SKIP/BLOCKED_BY_EXTERNAL_CONFIG` | 不创建业务数据、不执行付款、不写企业微信、不恢复数据库;未达到 `PASS_OA_LAUNCH_READY` 前不得宣布最终正式启用完成 | +| `OALAUNCH1` | `issues/2026-05-23_16-49-39-oa-final-launch-readiness-v1.csv` | 历史最终启用门禁来源:业务闭环、权限、备份恢复、数据治理、培训和 Day 7 决策要求仍可复用;未来实际执行由新 Trellis task 承接 | `scripts/qa/run-oa-final-launch-readiness.sh` 默认只读聚合相关证据,输出 `PASS_OA_LAUNCH_READY` / `PASS_WITH_FINDINGS` / `PAUSED_MANUAL_CONFIRMATION` / `SKIP/BLOCKED_BY_EXTERNAL_CONFIG` | 不创建业务数据、不执行付款、不写企业微信、不恢复数据库;未取得新任务完整证据前不得宣布最终正式启用完成 | | `OMAT1` | `issues/2026-05-23_17-20-00-oa-maturity-gap-review-v1.csv` | 当前成熟度缺口审查台账:按 MAGI 审视/执行/提升轮次,对标国内主流 OA、协同、低代码、财务和资产系统,记录每个问题或建议供用户逐项采纳、暂缓或否决 | 已登记最终启用、真实业务闭环、权限、备份恢复、运营支持、流程配置、报表、财务月结、合同、采购、资产、HR 镜像、移动体验、数据治理、SLO、集成、知识档案、主数据、UX、AI 边界、国内对标来源、小团队取舍原则、用户决策回填、成熟度证据视图和最低非功能基线等候选项 | 本台账只做审查和决策,不直接触发业务代码实现;采纳项必须另建或延续对应 Trellis task,并满足 OALAUNCH1 门禁 | | `OPOLICY1` | `issues/2026-05-24_01-20-52-oa-policy-system-alignment-v1.csv` | 当前制度与 OA 对齐合同:先把外部制度包裁剪为小团队 V1,再回写 OA 事实源和启用门禁 | 已固化制度参数、资料留存、用印台账、审批异常 SOP、制度签收和 P2 冻结边界;预算硬控、复杂招采、电子签章、完整电子档案系统、ERP/银行深集成和 AI 自动改规则不作为正式启用前置条件 | 本合同优先制度和事实源调整;现有合同台账/资产台账/公告能力可承载 V1,不立即做 schema 或业务代码改造 | | `OAFRONT6` | `issues/2026-05-25_12-29-03-oa-frontend-maturity-small-step-v1.csv` | 当前前端成熟化小步收口:承接 OAFRONT5 部署后 PC 硬问题清零和设计审计;审批规则路由标题、资产台账详情分区、移动视觉矩阵稳定等待、合同台账表单分组和长编号压缩均已实施部署,公网 PC 只读视觉矩阵复测 `PASS_PC_READONLY_VISUAL_READY` 且 `findingCount=0`;Portal 继续后置观察 | 页面改动使用 `frontend-design` 做视觉裁决,并读取 `docs/产品设计规则.md` 的产品体验事实和 OALAUNCH1 启用门禁;后续 Portal 仍需按真实使用反馈推进 | 不写公网业务数据;不替代真实业务闭环、备份恢复、7 天稳定化或 Day 7 Go/No-Go | @@ -236,7 +243,7 @@ R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> M | 文档 | 边界 | | --- | --- | -| [R7 扩大试运行草案](./trialrun/R7扩大试运行草案.md) | 只做 R7 准备草案;真实执行看 R7E 连续合同 | +| [R7 扩大试运行草案](./trialrun/R7扩大试运行草案.md) | 只作历史准备材料;R7E 也已是历史证据,未来真实连续试运行由新 Trellis task 从 Day 1 承接 | | [OPS7 运维交接 Runbook](./trialrun/OPS7运维交接Runbook.md) | 不代表已执行生产配置变更、恢复演练或回滚 | | [R7 用户手册与 FAQ](./trialrun/R7用户手册与FAQ.md) | 只描述已实现能力,不承诺预算、ERP、AI、完整差旅或复杂 BPM | diff --git a/docs/试运行与自动化验证手册.md b/docs/试运行与自动化验证手册.md index 0eba3b97..c342e49e 100644 --- a/docs/试运行与自动化验证手册.md +++ b/docs/试运行与自动化验证手册.md @@ -2,7 +2,7 @@ **文档状态**:当前操作手册,用于本地、公网、企业微信和真实 OCR 试运行验证。 -**当前状态(2026-05-17 / SYSTEM-COMPLETE-GATE)**:R7E、PRELAUNCH、FIN-PROD-ENABLE、ACCOUNTING-HANDOFF-V1、SYSTEM-COMPLETE-GATE 和 LAUNCH-OPS-V1 均已收口;公网 `payment_batch_v1=force_on`,`erp_sync=force_off`。当前正式能力保持 PDF-only OCR,不接真实支付、不接 ERP、不开放图片 OCR、不导入银行流水。后续新增移动或企业微信门禁仍必须保留真机证据,自动化、公网视觉矩阵和 live smoke 不能替代未来新增真机验收。 +**当前状态(2026-07-16)**:最后有部署和公网复检证据的来源基线为 `df26922`;未做当前公网只读检查时,不据此断言服务器此刻仍运行该提交。7 月 P0 可信度修复只在本地 `main`,尚未 push、部署或完成公网复检。旧 7 天试运行只有 Day 1–Day 4 后中断,缺人工业务闭环和 Day 7 Go/No-Go;下一轮必须待当前可信基线部署并复核后,新建 Trellis task,从 Day 1 连续启动。正式能力继续保持 PDF-only OCR,不接真实支付、不接 ERP、不开放图片 OCR、不导入银行流水。 本文用于 hyb-oa 本地、企业微信和公网试运行。默认策略是:能自动化的先自动化,自动化无法覆盖的才请求人工配合。 @@ -10,13 +10,14 @@ ## 入口顺序 -1. 读取 `AGENTS.md`。 -2. 读取最新 `issues/*.csv`。 -3. 按任务读取事实源: +1. 读取 `.trellis/workflow.md` 和当前 Trellis task 的 PRD/设计。 +2. 读取 `.trellis/spec/hyb-oa/` 与任务对应的业务事实源。 +3. 读取 `AGENTS.md` 并检查 `git status --short`,保护已有改动。 +4. 按任务读取事实源: - 页面体验事实:`docs/产品设计规则.md`;视觉与交互裁决使用 `frontend-design` - 报销发票:`docs/报销发票附件规则.md` - Agent 交付:`docs/Agent开发交付实践.md` -4. 检查 `git status --short`,保护用户已有改动。 +5. 旧 `issues/*.csv` 只在需要历史追溯或外部导出时读取,不作为新任务执行合同。 ## 本地验证 @@ -58,7 +59,7 @@ cd client && npm run build - PC viewport: 1440x960。 - mobile viewport: 基础 390x844;涉及移动布局、企业微信或 R6 移动反馈时必须扩展到 320x568、360x740、375x667、390x844、393x873、414x896、430x932。 - 企业微信 UA 使用 iPhone + `wxwork` 标识。 -- 截图放在 `output/playwright//`。 +- 截图放在 `output/playwright//`。 移动端必须检查: @@ -93,7 +94,7 @@ node scripts/qa/create-real-device-report.mjs - `PASS`:代表性真机和必要人工确认均通过。 - `FAIL`:真机复现阻断或严重问题,必须登记设备、账号、URL、步骤和证据位置。 - `BLOCKED`:缺少测试账号、企业微信后台配置、样票或网络等前置条件。 -- `PAUSED`:用户或现场条件暂停验证;自动化通过也不能据此关闭真机门禁或把相关 Issue 标为完成。 +- `PAUSED`:用户或现场条件暂停验证;自动化通过也不能据此关闭真机门禁或把当前 task 验收标为完成。 ### WF8 通知渠道验收矩阵 @@ -103,7 +104,7 @@ WF8 阶段采用“两渠道验收 + 邮件冻结说明”:站内通知和企 | --- | --- | --- | --- | --- | | 站内通知 | 测试用户、审批或业务事件、OA 登录态 | 触发待办或状态变化;目标用户进入 OA 通知或目标业务页;核对未读、标题、目标类型和目标 ID | 通知存在,deeplink 指向具体 OA 目标,权限拦截正确,非目标用户不可见 | 只跑后端单测不能替代 PC 或移动页面可达性 | | 企业微信个人应用消息 | `IM_NOTIFIER_ENABLED=true`、个人应用消息渠道启用、员工已绑定企业微信 userId、应用可见范围正确、公网域名可访问 | 触发待办;管理员检查 delivery;审批人在手机企业微信收到消息并点击回 OA | delivery 成功且无 `invaliduser`、`unlicenseduser`、可见范围错误;手机端能进入 OA 移动审批或业务详情 | 企业微信 UA 自动化不能替代代表性真机消息接收和点击回流 | -| 邮件通道 | 用户确认邮件为正式通道、SMTP provider 和发件域确定、密钥存放和退信处理方案批准 | 当前 WF8 不执行;Issue 和规约记录冻结原因及解锁条件 | 当前结论为冻结或 SKIP,不参与 Go/No-Go PASS 统计 | 站内或企业微信成功不能证明邮件通道成功 | +| 邮件通道 | 用户确认邮件为正式通道、SMTP provider 和发件域确定、密钥存放和退信处理方案批准 | 当前 WF8 不执行;当前或独立 Trellis task 及对应规约记录冻结原因和解锁条件 | 当前结论为冻结或 SKIP,不参与 Go/No-Go PASS 统计 | 站内或企业微信成功不能证明邮件通道成功 | | 失败追溯 | 通知 provider 可模拟失败或测试渠道返回失败 | 模拟发送失败;检查 `notificationDelivery` 摘要、错误类型、重试次数和管理员可见性;确认主业务不回滚 | 失败可追溯、敏感字段不外泄、业务状态保持正确 | 日志片段不能替代投递记录或管理员查询证据 | 验收结论必须区分四类环境: @@ -120,7 +121,13 @@ node scripts/qa/check-live-smoke-env.mjs LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readiness.sh ``` -### SYSTEM-COMPLETE-GATE 完成门禁 +### 当前可信度判定 + +- 聚合状态为 `PASS` 时仍必须检查必要子项和 `findingCount`;必要 live smoke、真实 OCR、权限、来源校验出现 `SKIP`、`PARTIAL`、`MISSING` 或 SHA 不匹配时,不得给出最终 clean PASS。 +- 本地 runner 通过只证明当前代码;必须核对部署来源 commit、`/ready` observed build SHA 和公网 bundle marker,才能证明公网使用了同一基线。 +- 新连续试运行前必须确认部署 runner 已包含 7 月 P0 修复;旧 Day 1–Day 4 报告不得补证新的正式启用结论。 + +### 2026-05 SYSTEM-COMPLETE-GATE 历史完成门禁 系统开发完成收口采用以下最小门禁: @@ -133,7 +140,7 @@ cd client && E2E_BASE_URL=https://oa.hyinda.com npx playwright test tests/e2e/dg 完成门禁只核验系统可正式使用,不扩展功能边界。`payment_batch_v1` 应保持 `force_on`,`erp_sync` 应保持 `force_off`。图片发票 OCR、真实支付接口、ERP 实时凭证、银行流水导入、复杂 BPM、审批设计器和重预算控制继续冻结。 -### LAUNCH-OPS-V1 首周运营检查 +### 2026-05 LAUNCH-OPS-V1 历史首周运营检查 正式使用首周每日检查: @@ -143,7 +150,7 @@ cd client && E2E_BASE_URL=https://oa.hyinda.com npx playwright test tests/e2e/dg - 出纳上传银行回单后再执行 OA 已付款标记;银行流水和回单原件由出纳从银行侧导出给代账,不导入 OA。 - 当天问题按时间、角色、页面、步骤、影响等级和处理结论登记。 -无法登录、无法审批、无法提交核心单据、付款状态错误、权限越权、`/ready` 异常或冻结项被误开启时,结论应为 Pause,并另建最小修复 Issue;不得用重置数据库或生产恢复临时绕过。 +无法登录、无法审批、无法提交核心单据、付款状态错误、权限越权、`/ready` 异常或冻结项被误开启时,结论应为 Pause,并另建或更新最小修复 Trellis task;不得用重置数据库或生产恢复临时绕过。 发布候选进入公网或小范围试运行前,先按 [`docs/trialrun/发布试运行准备清单.md`](trialrun/发布试运行准备清单.md) 完成证据整理、权限直连审计、部署预检、live smoke 和试运行分级。 @@ -275,8 +282,10 @@ PROJECT_CLOSURE_CHECKLIST_ENABLED=true 每轮交付收口至少包含: -- Issue CSV 状态真实。 -- 自动化命令和结果记录在最终回复。 -- 视觉截图路径记录。 +- 当前 Trellis task 的 PRD、验收、状态和提交引用真实。 +- 明确区分本地 commit、部署来源 commit 和公网复检结果。 +- 自动化命令、结果和必要视觉证据路径记录完整。 - 已知阻塞明确归类为代码、测试、环境、数据或人工配置。 +- task validate、Trellis governance 和任务要求的必要门禁通过。 +- 历史 Issue CSV 保持审计可追溯,但不要求作为当前状态合同。 - 中文分批 commit。