From d20cbc31e6b58b245cfa862ddff66b3709b89e94 Mon Sep 17 00:00:00 2001 From: shunli Date: Tue, 26 May 2026 13:26:20 +0800 Subject: [PATCH] =?UTF-8?q?oalaunch1-final-readiness-closeout=20=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=9C=80=E7=BB=88=E5=90=AF=E7=94=A8=E5=8F=AA=E8=AF=BB?= =?UTF-8?q?=E5=B7=AE=E8=B7=9D=E7=9B=98=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../check.jsonl | 6 + .../implement.jsonl | 6 + .../implement.md | 40 ++ .../info.md | 60 +++ .../prd.md | 104 +++++ .../initial-readiness/manual-gates.md | 22 + .../research/initial-readiness/summary.json | 400 ++++++++++++++++++ .../research/initial-readiness/summary.txt | 6 + .../task.json | 34 ++ 9 files changed, 678 insertions(+) create mode 100644 .trellis/tasks/05-26-oalaunch1-final-readiness-closeout/check.jsonl create mode 100644 .trellis/tasks/05-26-oalaunch1-final-readiness-closeout/implement.jsonl create mode 100644 .trellis/tasks/05-26-oalaunch1-final-readiness-closeout/implement.md create mode 100644 .trellis/tasks/05-26-oalaunch1-final-readiness-closeout/info.md create mode 100644 .trellis/tasks/05-26-oalaunch1-final-readiness-closeout/prd.md create mode 100644 .trellis/tasks/05-26-oalaunch1-final-readiness-closeout/research/initial-readiness/manual-gates.md create mode 100644 .trellis/tasks/05-26-oalaunch1-final-readiness-closeout/research/initial-readiness/summary.json create mode 100644 .trellis/tasks/05-26-oalaunch1-final-readiness-closeout/research/initial-readiness/summary.txt create mode 100644 .trellis/tasks/05-26-oalaunch1-final-readiness-closeout/task.json diff --git a/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/check.jsonl b/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/check.jsonl new file mode 100644 index 00000000..e7b26d42 --- /dev/null +++ b/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/check.jsonl @@ -0,0 +1,6 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Check Trellis task metadata, approvals, commit and legacy Issue CSV boundaries."} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Check evidence handling and documentation scope."} +{"file": ".trellis/spec/hyb-oa/deployment-trialrun.md", "reason": "Check that readiness work did not cross deployment, public write or payment boundaries."} +{"file": ".trellis/spec/hyb-oa/security-privacy.md", "reason": "Check privacy and sensitive-data exclusions in reports and task notes."} +{"file": ".trellis/spec/hyb-oa/wecom-boundary.md", "reason": "Check Enterprise WeChat live/write actions remain out of scope."} +{"file": ".trellis/tasks/05-26-oalaunch1-final-readiness-closeout/research/initial-readiness/summary.json", "reason": "Check extracted open gates against the generated readiness summary."} diff --git a/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/implement.jsonl b/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/implement.jsonl new file mode 100644 index 00000000..80f661aa --- /dev/null +++ b/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/implement.jsonl @@ -0,0 +1,6 @@ +{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Trellis task contract, approval boundaries and legacy Issue CSV treatment for OALAUNCH1 closeout."} +{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "Rules for storing generated evidence and updating current Trellis task instead of creating unnecessary docs."} +{"file": ".trellis/spec/hyb-oa/deployment-trialrun.md", "reason": "Public OA, deployment, real data write and payment boundaries for readiness validation."} +{"file": ".trellis/spec/hyb-oa/security-privacy.md", "reason": "Sensitive data exclusion rules for reports, task notes and chat summaries."} +{"file": ".trellis/spec/hyb-oa/wecom-boundary.md", "reason": "Enterprise WeChat write/live-trial boundaries that remain out of scope for OALAUNCH1."} +{"file": ".trellis/tasks/05-26-oalaunch1-final-readiness-closeout/research/initial-readiness/summary.json", "reason": "Initial read-only readiness report used to derive current blocking gates."} diff --git a/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/implement.md b/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/implement.md new file mode 100644 index 00000000..1d5d7df3 --- /dev/null +++ b/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/implement.md @@ -0,0 +1,40 @@ +# OALAUNCH1 Closeout Implementation Notes + +## Approved Plan + +The user approved the read-only implementation plan on 2026-05-26. + +Planned work: + +1. Run shell syntax checks for OALAUNCH1 and OAOPS1 readiness scripts. +2. Run OALAUNCH1 readiness aggregation in default read-only mode. +3. Store the generated report under this Trellis task. +4. Extract open gates into a concise gap list. +5. Run Trellis governance, docs registry and diff checks. + +## Execution + +- Activated task with `task.py start 05-26-oalaunch1-final-readiness-closeout`. +- Loaded `trellis-before-dev` and relevant `.trellis/spec/hyb-oa/` rules. +- Ran syntax checks for: + - `scripts/qa/run-oa-final-launch-readiness.sh` + - `scripts/qa/run-oa-real-use-daily.sh` +- Ran the final readiness aggregation with: + - `OALAUNCH_REPORT_DIR=.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/research/initial-readiness bash scripts/qa/run-oa-final-launch-readiness.sh` + +## Result + +The initial readiness run concluded `PAUSED_MANUAL_CONFIRMATION`. + +No business script change was required in this pass. The blocker is missing manual evidence and Day 7 decision data, not an executable-code defect. + +See `info.md` for the current gap list. + +## Spec Update Decision + +No `.trellis/spec/` update is needed for this task. The run confirmed existing project rules rather than discovering a new reusable contract: + +- Trellis task remains the execution contract. +- Historical Issue CSV files remain audit inputs only. +- Readiness reports store status, counts and paths only, without raw sensitive business content. +- Public deployment, real writes, payment actions, Enterprise WeChat writes and database restore remain separately approved operations. diff --git a/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/info.md b/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/info.md new file mode 100644 index 00000000..ec1d6561 --- /dev/null +++ b/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/info.md @@ -0,0 +1,60 @@ +# OALAUNCH1 Readiness Execution Notes + +## 2026-05-26 Initial Read-Only Run + +Commands run: + +- `bash -n scripts/qa/run-oa-final-launch-readiness.sh` +- `bash -n scripts/qa/run-oa-real-use-daily.sh` +- `OALAUNCH_REPORT_DIR=.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/research/initial-readiness bash scripts/qa/run-oa-final-launch-readiness.sh` + +Result: + +- Shell syntax checks passed. +- Readiness report privacy smoke passed. +- Report: `.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/research/initial-readiness/summary.json` +- Current conclusion: `PAUSED_MANUAL_CONFIRMATION` +- Open gate count: 13 +- Finding count: 0 + +This run did not enable `OALAUNCH_RUN_OAOPS1_DAILY`, did not execute deployment, did not write public OA business data, did not write Enterprise WeChat, did not execute payments and did not perform database restore. + +## Current Blocking Gates + +| Gate | Current State | Blocks `PASS_OA_LAUNCH_READY` | Next Action | +| --- | --- | --- | --- | +| `OAOPS1-3` | Historical OAOPS1 audit row still `TODO/TODO/TODO` | Yes | Complete or attach脱敏真实业务闭环 evidence; otherwise keep launch paused | +| `OAOPS1-4` | Historical OAOPS1 audit row still `TODO/TODO/TODO` | Yes | Complete or attach daily real-use stabilization evidence | +| `OAOPS1-5` | Historical OAOPS1 audit row still `TODO/TODO/TODO` | Yes | Complete or attach permissions/audit evidence from real use | +| `OAOPS1-6` | Historical OAOPS1 audit row still `TODO/TODO/TODO` | Yes | Complete or attach operations handoff evidence | +| `OALAUNCH1-3` | Historical OALAUNCH1 audit row still `TODO/TODO/TODO` | Yes | Backfill launch-readiness evidence after manual work is complete | +| `OALAUNCH1-4` | Historical OALAUNCH1 audit row still `TODO/TODO/TODO` | Yes | Backfill permission matrix / negative permission evidence | +| `OALAUNCH1-6` | Historical OALAUNCH1 audit row still `TODO/TODO/TODO` | Yes | Backfill backup restore drill evidence | +| `OALAUNCH1-7` | Historical OALAUNCH1 audit row still `TODO/TODO/TODO` | Yes | Backfill Day 7 Go/No-Go and operations acceptance evidence | +| `SEVEN_DAY_STABILIZATION` | Missing `OALAUNCH_STABILIZATION_START_DATE` | Yes | Provide the 7-day window start date and ensure seven consecutive daily summaries exist | +| `BACKUP_RESTORE_DRILL` | Missing脱敏 backup/restore evidence path | Yes | Perform approved non-production restore drill and pass `OALAUNCH_BACKUP_EVIDENCE` | +| `PERMISSION_MATRIX` | Missing final permission matrix evidence path | Yes | Produce role/negative-permission evidence and pass `OALAUNCH_PERMISSION_EVIDENCE` | +| `BUSINESS_ACCEPTANCE_EVIDENCE` | Missing real business loop evidence path | Yes | Produce脱敏 real business closure summary and pass `OALAUNCH_BUSINESS_EVIDENCE` | +| `DAY7_GO_NO_GO` | Missing manual launch decision | Yes | After evidence is complete, set `OALAUNCH_MANUAL_ACCEPT=PASS_OA_LAUNCH_READY` or `PASS_WITH_FINDINGS` | + +## Separate Approval Required + +The following actions are not authorized by this task alone: + +- Public deployment or production config changes. +- Public OA real business writes or automatic test data creation. +- Enterprise WeChat writes, template creation, approval creation or real-user trial. +- Real payment actions, payment-provider integration, ERP writes or bank-statement import. +- Production database reset, migration drift, restore drill against the public production database. + +## Current Recommendation + +Do not announce final launch readiness yet. The next business step is to gather the missing manual evidence in this order: + +1. Finish/identify the OAOPS1 seven-day real-use window and daily summaries. +2. Produce脱敏 real business loop evidence for reimbursement/PDF OCR/approval/payment/AP, procurement/expense/project or contract, and contract registry/archive/permission checks. +3. Produce permission matrix evidence with negative cases. +4. Complete a controlled backup restore drill outside the public production database and record RTO/RPO/owner. +5. Record OPOLICY1/data-governance/training acceptance and Day 7 Go/No-Go. + +Only after those are available should the readiness script be re-run with the relevant `OALAUNCH_*_EVIDENCE`, `OALAUNCH_STABILIZATION_START_DATE` and `OALAUNCH_MANUAL_ACCEPT` environment variables. diff --git a/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/prd.md b/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/prd.md new file mode 100644 index 00000000..9ceff28e --- /dev/null +++ b/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/prd.md @@ -0,0 +1,104 @@ +# OALAUNCH1 final launch readiness closeout + +## Goal + +把 OALAUNCH1 最终启用门禁从历史 Issue CSV 口径过渡到当前 Trellis task 执行合同:先做只读差距盘点和证据清单,明确哪些条件已经满足、哪些仍阻断 `PASS_OA_LAUNCH_READY`,再决定是否需要补脚本、补文档或补人工证据。 + +本任务不直接宣布正式启用完成。只有 `scripts/qa/run-oa-final-launch-readiness.sh` 聚合证据后输出 `PASS_OA_LAUNCH_READY`,且 Day 7 人工 Go/No-Go 接受,才能进入小团队正式启用。 + +## Scope + +本任务范围限定为 OALAUNCH1 最终启用前的只读收口: + +- 读取现有事实源、Trellis spec、历史审计 CSV 和只读 QA 报告。 +- 运行本地只读脚本语法检查和 OALAUNCH1 汇总脚本。 +- 把当前阻断门禁、证据缺口和后续动作记录到当前 Trellis task。 +- 仅在必要时做脚本或文档的最小治理修正。 + +## What I Already Know + +- 当前没有活动 Trellis task;本任务从 Phase 1 planning 开始。 +- TRELLIS2 后,新任务以 `.trellis/tasks//` 为执行合同;历史 `issues/*.csv` 只作为审计证据和脚本兼容输入,不再作为新开发的默认前置合同。 +- OALAUNCH1 是 OAOPS1/ASSET1D/OSMOKE1 之后的最终启用 Go/No-Go 门禁。 +- OALAUNCH1 的硬条件包括真实业务闭环、连续 7 天稳定化、权限矩阵、备份恢复演练、数据治理培训、运营支持和 Day 7 人工决策。 +- 现有 `scripts/qa/run-oa-final-launch-readiness.sh` 默认只读:不创建业务数据、不执行付款、不写企业微信、不做数据库恢复。 +- 现有最终启用脚本仍读取历史 OAOPS1/OALAUNCH1/OPOLICY1/ASSET1D CSV 状态,并允许通过环境变量指定脱敏证据路径。 +- OAOPS1 每日巡检脚本 `scripts/qa/run-oa-real-use-daily.sh` 默认只读,真实业务写入由人工在公网 OA 内完成。 +- WREAL1/企业微信真实小范围试用不是当前主线;当前只按 OALAUNCH1 收口 OA 主办域。 + +## Assumptions + +- 这轮先做只读差距盘点、证据映射和必要的脚本/文档小修,不执行部署、不写公网数据、不写企业微信、不执行付款、不重置或恢复生产数据库。 +- 如果发现需要公网只读巡检、备份恢复演练或真实业务补录,会先列为人工/单独批准事项,不在本任务里静默执行。 +- 如果最终脚本仍因人工证据缺失输出 `PAUSED_MANUAL_CONFIRMATION`,这不是失败,而是当前真实状态。 + +## Requirements + +- 梳理 OALAUNCH1 当前门禁状态,覆盖: + - OAOPS1 真实业务闭环和每日巡检证据。 + - ASSET1D 资产台账部署、试录和脱敏导入证据。 + - OSMOKE1 OA-only smoke 账号治理边界。 + - OPOLICY1 制度参数、资料留存、用印台账、审批异常 SOP、制度签收和 P2 冻结证据。 + - OAFLOW1 负责人本人报销兜底审批边界。 + - OMAT1/OAKISS1/PCDESIGN1 中已采纳或待决策但影响 OALAUNCH1 的建议。 +- 形成一份当前任务内的缺口清单,至少包含每个缺口的: + - 门禁名称。 + - 当前证据来源。 + - 是否阻断 `PASS_OA_LAUNCH_READY`。 + - 下一步动作类型:只读验证、人工证据、另建修复 task、另行批准操作。 +- 复核现有最终启用脚本是否仍符合 Trellis-only 治理: + - 不把历史 Issue CSV 作为新任务合同。 + - 可解释地读取历史 CSV 作为审计证据。 + - 输出中不泄露 Secret、token、完整账号、完整本地路径、合同正文、银行资料或原始 payload。 +- 如需修改脚本或文档,保持范围最小,只做 OALAUNCH1 收口必要改动。 + +## Acceptance Criteria + +- [ ] 当前任务记录 OALAUNCH1 的硬门禁、证据来源和阻断状态。 +- [ ] 明确列出不能宣布 `PASS_OA_LAUNCH_READY` 的所有当前缺口。 +- [ ] 明确哪些动作需要用户另行批准,例如公网巡检、生产配置、真实业务写入、备份恢复演练、企业微信写入或真实付款。 +- [ ] 若修改脚本,脚本仍默认只读,且不会执行业务写入、付款、企业微信写入或数据库恢复。 +- [ ] 若修改文档,优先更新现有事实源或当前 Trellis task,不新增不必要文档。 +- [ ] 验证命令完成并记录结果;若最终 readiness 只能到 `PAUSED_MANUAL_CONFIRMATION`,原因必须清楚。 + +## Definition Of Done + +- 当前 Trellis task 的 PRD 和必要执行记录完整。 +- 用户确认实施方案后才进入 Phase 2。 +- 相关脚本或文档改动通过质量门禁。 +- 不把未脱敏业务数据、Secret、完整账号、合同正文、银行资料、完整本地路径或原始 payload 写入仓库、任务或聊天。 +- 任务结束前判断是否需要更新 `.trellis/spec/`,并按 Trellis finish 流程提交/归档。 + +## Out Of Scope + +- 不部署。 +- 不写公网业务数据。 +- 不创建、审批或付款真实单据。 +- 不写企业微信。 +- 不做生产数据库恢复、重置或迁移。 +- 不启用 WREAL1 真实员工试用。 +- 不推进企微深度镜像、应急接管、恢复回写或 RuleOps。 +- 不做 P2 冻结功能:图片 OCR、复杂 BPM、预算、复杂招采、电子签章、完整电子档案系统、ERP/银行深集成、AI 自动改规则。 + +## Test Plan + +- `bash -n scripts/qa/run-oa-final-launch-readiness.sh` +- `bash -n scripts/qa/run-oa-real-use-daily.sh` +- `bash scripts/qa/run-oa-final-launch-readiness.sh`,默认只读,预期可能是 `PAUSED_MANUAL_CONFIRMATION`。 +- `node scripts/qa/check-trellis-governance.mjs` +- `node scripts/qa/audit-docs.mjs --check-registry` +- `git diff --check` + +如果后续代码改动触及前后端: + +- Backend: `cd server && npm run prisma:validate`,必要时补充 focused `node --check` 或 Vitest。 +- Frontend: `cd client && npm run typecheck && npm run build`。 + +## Technical Notes + +- 文档读取入口:`docs/文档索引.md`。 +- 状态矩阵:`docs/文档事实源状态矩阵.md`,其中 OALAUNCH1 当前事实说明未达到 `PASS_OA_LAUNCH_READY` 前不得宣布最终正式启用完成。 +- 管理员手册:`docs/管理员手册.md` 的 OAOPS1/OALAUNCH1/OPOLICY1 小节定义人工动作、门禁和证据变量。 +- 最终启用脚本:`scripts/qa/run-oa-final-launch-readiness.sh`。 +- 每日真实使用只读巡检:`scripts/qa/run-oa-real-use-daily.sh`。 +- 相关 Trellis spec:`.trellis/spec/hyb-oa/`,尤其是 `project-governance.md`、`docs-and-evidence.md`、`deployment-trialrun.md`、`security-privacy.md`、`wecom-boundary.md`。 diff --git a/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/research/initial-readiness/manual-gates.md b/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/research/initial-readiness/manual-gates.md new file mode 100644 index 00000000..9e424e02 --- /dev/null +++ b/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/research/initial-readiness/manual-gates.md @@ -0,0 +1,22 @@ +# OALAUNCH1 最终启用人工门禁 + +## Day 7 Go/No-Go +- A:接受 `PASS_OA_LAUNCH_READY`,进入小团队正式启用。 +- B:接受 `PASS_WITH_FINDINGS`,但必须指定 owner、处理日期和接受理由。 +- C:暂停启用,先整改。 + +## 阻断处理 +- A:当天新建修复合同并修复。 +- B:临时人工绕行,记录风险、补录责任人和补录方式。 +- C:暂停对应流程。 + +## 备份恢复演练 +- A:接受恢复演练结果,进入 Go/No-Go。 +- B:修复后重跑恢复演练。 +- C:暂停正式启用。 + +## 必须补齐的业务证据 +- 至少 1 条真实报销 PDF OCR -> 审批 -> 付款批次 -> 银行回单 -> 已付款 -> AP 导出。 +- 至少 1 条采购/费用审批并关联项目或合同。 +- 至少 1 条合同台账含归档位置和权限检查。 +- 资产台账 ASSET1D 已完成后,补真实资产责任人或保管人抽查。 diff --git a/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/research/initial-readiness/summary.json b/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/research/initial-readiness/summary.json new file mode 100644 index 00000000..ee1b27e4 --- /dev/null +++ b/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/research/initial-readiness/summary.json @@ -0,0 +1,400 @@ +{ + "issueId": "OALAUNCH1", + "mode": "oa-final-launch-readiness", + "status": "PAUSED_MANUAL_CONFIRMATION", + "conclusion": "PAUSED_MANUAL_CONFIRMATION", + "baseURL": "https://oa.hyinda.com", + "commit": "e10fb4a", + "checkedAt": "2026-05-26T05:19:31.444Z", + "reportRef": ".trellis/tasks/05-26-oalaunch1-final-readiness-closeout/research/initial-readiness", + "scope": { + "launchScope": "P0 + light P1", + "stabilizationDaysRequired": 7, + "smallTeamFormalUse": true, + "wecomHrAttendanceStatus": "frozen_at_wecom_owned_oa_archive_audit" + }, + "evidence": { + "latestOaops": { + "name": "oa-real-use-daily-20260525-205848", + "reportRef": "artifacts/qa-flow/oa-real-use-daily-20260525-205848/summary.json", + "status": "PASS_OA_REAL_USE_DAILY_READY", + "findingCount": 0 + }, + "latestAssetTrial": { + "name": "asset1d-public-trial-20260523-155346", + "reportRef": "artifacts/qa-flow/asset1d-public-trial-20260523-155346/summary.json", + "status": "PASS_ASSET_UI_TRIAL_READY", + "findingCount": 0 + }, + "latestAssetImport": { + "name": "asset-redacted-index-import-live-20260523-162358", + "reportRef": "artifacts/qa-flow/asset-redacted-index-import-live-20260523-162358/summary.json", + "status": "PASS_EA_DOC_IMPORT_READY", + "findingCount": 0 + }, + "backupEvidence": null, + "permissionEvidence": null, + "businessEvidence": null, + "policyEvidence": { + "provided": true, + "exists": true, + "ref": "issues/2026-05-24_01-20-52-oa-policy-system-alignment-v1.csv" + }, + "stabilization": { + "status": "MISSING_START_DATE", + "startDay": null, + "requiredDays": [], + "observedDays": [ + "20260522", + "20260523", + "20260524", + "20260525" + ], + "dayReports": {} + } + }, + "issueStatus": { + "oaopsRequired": { + "OAOPS1-3": { + "title": "报销 PDF OCR 与付款闭环真实使用门禁", + "dev": "TODO", + "review": "TODO", + "regression": "TODO", + "done": false + }, + "OAOPS1-4": { + "title": "采购费用与项目关联真实使用门禁", + "dev": "TODO", + "review": "TODO", + "regression": "TODO", + "done": false + }, + "OAOPS1-5": { + "title": "合同台账与合同归档真实使用门禁", + "dev": "TODO", + "review": "TODO", + "regression": "TODO", + "done": false + }, + "OAOPS1-6": { + "title": "每日问题登记与阻断即修机制", + "dev": "TODO", + "review": "TODO", + "regression": "TODO", + "done": false + } + }, + "oalaunchRequired": [ + "OALAUNCH1-0", + "OALAUNCH1-1", + "OALAUNCH1-2", + "OALAUNCH1-3", + "OALAUNCH1-4", + "OALAUNCH1-5", + "OALAUNCH1-6", + "OALAUNCH1-7", + "OALAUNCH1-8" + ], + "oalaunchStatuses": { + "OALAUNCH1-0": { + "title": "建立最终启用 Go/No-Go 合同", + "dev": "DONE", + "review": "DONE", + "regression": "DONE", + "done": true + }, + "OALAUNCH1-1": { + "title": "新增最终启用证据汇总脚本", + "dev": "DONE", + "review": "DONE", + "regression": "DONE", + "done": true + }, + "OALAUNCH1-2": { + "title": "回写最终启用事实源和操作清单", + "dev": "DONE", + "review": "DONE", + "regression": "DONE", + "done": true + }, + "OALAUNCH1-3": { + "title": "OAOPS1 真实业务闭环收口门禁", + "dev": "TODO", + "review": "TODO", + "regression": "TODO", + "done": false + }, + "OALAUNCH1-4": { + "title": "7 天稳定化与每日巡检门禁", + "dev": "TODO", + "review": "TODO", + "regression": "TODO", + "done": false + }, + "OALAUNCH1-5": { + "title": "权限矩阵最终验收", + "dev": "DONE", + "review": "DONE", + "regression": "DONE", + "done": true + }, + "OALAUNCH1-6": { + "title": "备份恢复演练门禁", + "dev": "TODO", + "review": "TODO", + "regression": "TODO", + "done": false + }, + "OALAUNCH1-7": { + "title": "数据治理培训与运营支持门禁", + "dev": "TODO", + "review": "TODO", + "regression": "TODO", + "done": false + }, + "OALAUNCH1-8": { + "title": "OALAUNCH1 本地门禁与收口", + "dev": "DONE", + "review": "DONE", + "regression": "DONE", + "done": true + } + }, + "opolicyRequired": [ + "OPOLICY1-0", + "OPOLICY1-1", + "OPOLICY1-2", + "OPOLICY1-3", + "OPOLICY1-4", + "OPOLICY1-5", + "OPOLICY1-6", + "OPOLICY1-7" + ], + "opolicyStatuses": { + "OPOLICY1-0": { + "title": "建立制度与 OA 启用门禁对齐合同", + "dev": "DONE", + "review": "DONE", + "regression": "DONE", + "done": true + }, + "OPOLICY1-1": { + "title": "审视制度合理性和小团队裁剪口径", + "dev": "DONE", + "review": "DONE", + "regression": "DONE", + "done": true + }, + "OPOLICY1-2": { + "title": "调整制度包为小团队 V1 试运行口径", + "dev": "DONE", + "review": "DONE", + "regression": "DONE", + "done": true + }, + "OPOLICY1-3": { + "title": "回写 hyb-oa 事实源和员工/管理员口径", + "dev": "DONE", + "review": "DONE", + "regression": "DONE", + "done": true + }, + "OPOLICY1-4": { + "title": "制度参数和人工问答门禁清单", + "dev": "DONE", + "review": "DONE", + "regression": "DONE", + "done": true + }, + "OPOLICY1-5": { + "title": "评估 OA 必要小改范围", + "dev": "DONE", + "review": "DONE", + "regression": "DONE", + "done": true + }, + "OPOLICY1-6": { + "title": "OALAUNCH1 数据治理证据接入", + "dev": "DONE", + "review": "DONE", + "regression": "DONE", + "done": true + }, + "OPOLICY1-7": { + "title": "本地门禁与文档审计", + "dev": "DONE", + "review": "DONE", + "regression": "DONE", + "done": true + } + }, + "assetDone": true + }, + "gates": { + "openCount": 13, + "openGates": [ + { + "gate": "OAOPS1-3", + "reason": "OAOPS1 真实业务闭环仍未完成", + "state": { + "title": "报销 PDF OCR 与付款闭环真实使用门禁", + "dev": "TODO", + "review": "TODO", + "regression": "TODO", + "done": false + } + }, + { + "gate": "OAOPS1-4", + "reason": "OAOPS1 真实业务闭环仍未完成", + "state": { + "title": "采购费用与项目关联真实使用门禁", + "dev": "TODO", + "review": "TODO", + "regression": "TODO", + "done": false + } + }, + { + "gate": "OAOPS1-5", + "reason": "OAOPS1 真实业务闭环仍未完成", + "state": { + "title": "合同台账与合同归档真实使用门禁", + "dev": "TODO", + "review": "TODO", + "regression": "TODO", + "done": false + } + }, + { + "gate": "OAOPS1-6", + "reason": "OAOPS1 真实业务闭环仍未完成", + "state": { + "title": "每日问题登记与阻断即修机制", + "dev": "TODO", + "review": "TODO", + "regression": "TODO", + "done": false + } + }, + { + "gate": "OALAUNCH1-3", + "reason": "OALAUNCH1 本轮合同/脚本/事实源/门禁尚未全部回填 DONE", + "state": { + "title": "OAOPS1 真实业务闭环收口门禁", + "dev": "TODO", + "review": "TODO", + "regression": "TODO", + "done": false + } + }, + { + "gate": "OALAUNCH1-4", + "reason": "OALAUNCH1 本轮合同/脚本/事实源/门禁尚未全部回填 DONE", + "state": { + "title": "7 天稳定化与每日巡检门禁", + "dev": "TODO", + "review": "TODO", + "regression": "TODO", + "done": false + } + }, + { + "gate": "OALAUNCH1-6", + "reason": "OALAUNCH1 本轮合同/脚本/事实源/门禁尚未全部回填 DONE", + "state": { + "title": "备份恢复演练门禁", + "dev": "TODO", + "review": "TODO", + "regression": "TODO", + "done": false + } + }, + { + "gate": "OALAUNCH1-7", + "reason": "OALAUNCH1 本轮合同/脚本/事实源/门禁尚未全部回填 DONE", + "state": { + "title": "数据治理培训与运营支持门禁", + "dev": "TODO", + "review": "TODO", + "regression": "TODO", + "done": false + } + }, + { + "gate": "SEVEN_DAY_STABILIZATION", + "reason": "缺 7 天稳定化起始日期;设置 OALAUNCH_STABILIZATION_START_DATE=YYYY-MM-DD 后按连续 7 天检查", + "stabilization": { + "status": "MISSING_START_DATE", + "startDay": null, + "requiredDays": [], + "observedDays": [ + "20260522", + "20260523", + "20260524", + "20260525" + ], + "dayReports": {} + } + }, + { + "gate": "BACKUP_RESTORE_DRILL", + "reason": "缺备份恢复演练或影子库恢复证据;可用 OALAUNCH_BACKUP_EVIDENCE 指定脱敏证据路径" + }, + { + "gate": "PERMISSION_MATRIX", + "reason": "缺最终权限矩阵负例/角色入口证据;可用 OALAUNCH_PERMISSION_EVIDENCE 指定脱敏证据路径" + }, + { + "gate": "BUSINESS_ACCEPTANCE_EVIDENCE", + "reason": "缺真实业务闭环证据;可用 OALAUNCH_BUSINESS_EVIDENCE 指定脱敏证据路径" + }, + { + "gate": "DAY7_GO_NO_GO", + "reason": "缺 Day 7 人工 Go/No-Go 接受结论;可用 OALAUNCH_MANUAL_ACCEPT=PASS_OA_LAUNCH_READY 或 PASS_WITH_FINDINGS 指定" + } + ], + "findings": [] + }, + "manualGates": { + "day7GoNoGo": [ + "A:接受 PASS_OA_LAUNCH_READY,进入小团队正式启用。", + "B:接受 PASS_WITH_FINDINGS,但指定 owner 和完成日期后启用。", + "C:暂停启用,先整改。" + ], + "blockerHandling": [ + "A:当天新建修复合同并修复。", + "B:临时人工绕行,记录风险。", + "C:暂停对应流程。" + ], + "backupDrill": [ + "A:接受恢复演练结果,进入 Go/No-Go。", + "B:修复后重跑恢复演练。", + "C:暂停正式启用。" + ] + }, + "boundaries": { + "defaultReadOnly": true, + "noBusinessWritesByThisScript": true, + "noWeComWrites": true, + "noPaymentExecution": true, + "noDbResetOrRestore": true, + "frozenItems": [ + "image_ocr", + "complex_bpm", + "budget_control", + "complex_procurement", + "e_signature", + "full_e_archive", + "erp_write", + "bank_statement_import", + "ai_rule_writes", + "real_payment_provider", + "wecom_hr_deep_mirror", + "emergency_takeover", + "recovery_writeback", + "ruleops" + ] + }, + "privacy": "Report keeps paths/status/counts only; no passwords, tokens, Secrets, full accounts, contract bodies, bank statements, raw invoice images, or raw payloads." +} diff --git a/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/research/initial-readiness/summary.txt b/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/research/initial-readiness/summary.txt new file mode 100644 index 00000000..5fdafa7a --- /dev/null +++ b/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/research/initial-readiness/summary.txt @@ -0,0 +1,6 @@ +[oalaunch1] mode=oa-final-launch-readiness +[oalaunch1] default=no live writes, no business writes, no DB restore +[oalaunch1][SKIP] oaops1-daily-readonly:默认不跑公网巡检;需要时设置 OALAUNCH_RUN_OAOPS1_DAILY=1 +[oalaunch1][PASS] report-privacy-smoke +[oalaunch1][PASS] report-privacy-smoke +[oalaunch1] report=.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/research/initial-readiness diff --git a/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/task.json b/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/task.json new file mode 100644 index 00000000..bfb6706d --- /dev/null +++ b/.trellis/tasks/05-26-oalaunch1-final-readiness-closeout/task.json @@ -0,0 +1,34 @@ +{ + "id": "oalaunch1-final-readiness-closeout", + "name": "oalaunch1-final-readiness-closeout", + "title": "OALAUNCH1 final launch readiness closeout", + "description": "OALAUNCH1 final launch readiness read-only closeout: summarize current gates, evidence gaps and next approved actions before final Go/No-Go.", + "status": "in_progress", + "dev_type": null, + "scope": "docs-evidence-readiness", + "package": null, + "priority": "P2", + "creator": "shunli", + "assignee": "shunli", + "createdAt": "2026-05-26", + "completedAt": null, + "branch": null, + "base_branch": "main", + "worktree_path": null, + "commit": null, + "pr_url": null, + "subtasks": [], + "children": [], + "parent": null, + "relatedFiles": [ + ".trellis/tasks/05-26-oalaunch1-final-readiness-closeout/prd.md", + ".trellis/tasks/05-26-oalaunch1-final-readiness-closeout/info.md", + "scripts/qa/run-oa-final-launch-readiness.sh", + "scripts/qa/run-oa-real-use-daily.sh", + "docs/文档索引.md", + "docs/文档事实源状态矩阵.md", + "docs/管理员手册.md" + ], + "notes": "", + "meta": {} +}