trellis-governance-closeout 收口旧任务并统一 Trellis-only 治理

这个提交包含在:
2026-05-26 12:38:19 +08:00
父节点 7ce23d74a4
当前提交 48da0d8b42
共修改 39 个文件,包含 328 行新增和 148 行删除
@@ -0,0 +1,4 @@
{"file": ".trellis/spec/hyb-oa/index.md", "reason": "hyb-oa spec entry point for verification"}
{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "verify Trellis task contract and closeout rules"}
{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "verify docs registry and historical evidence consistency"}
{"file": ".trellis/spec/hyb-oa/security-privacy.md", "reason": "verify no sensitive data is introduced"}
@@ -0,0 +1,4 @@
{"file": ".trellis/spec/hyb-oa/index.md", "reason": "hyb-oa spec entry point for Trellis-only governance closeout"}
{"file": ".trellis/spec/hyb-oa/project-governance.md", "reason": "Trellis task contract and commit/approval rules"}
{"file": ".trellis/spec/hyb-oa/docs-and-evidence.md", "reason": "docs registry and historical evidence boundaries"}
{"file": ".trellis/spec/hyb-oa/security-privacy.md", "reason": "privacy rules for governance documents and reports"}
@@ -0,0 +1,31 @@
# Implementation Notes
## Scope
This task closes the governance migration after TRELLIS2 and the removal of
the project-local delivery skill. It only changes Trellis task records, current
governance docs, process wording and QA governance scripts.
## Approach
1. Archive superseded setup tasks after marking their PRDs as historical or
superseded.
2. Keep historical `issues/*.csv` files untouched.
3. Update current-facing docs so new non-trivial work starts from a Trellis
task PRD and not from a new Issue CSV.
4. Preserve Issue CSV references only where they are explicitly historical,
audit evidence or legacy/export compatibility.
5. Keep `.trellis/spec/hyb-oa/` as the stable project rule entry point.
## Boundaries
- No backend or frontend business-code changes.
- No deployment, production config, database, Enterprise WeChat or payment
writes.
- No deletion or bulk rewrite of historical `issues/*.csv`.
- No resurrection of `.agents/skills/hyb-oa-delivery`.
## Verification
Run the task validation, Trellis governance gate, process contract baseline,
docs registry audit, stale wording search and `git diff --check` before commit.
@@ -0,0 +1,79 @@
# Close Out Legacy Trellis Tasks And Trellis-Only Governance Wording
## Goal
Finish the governance migration by closing stale Trellis setup tasks and
removing current Issue CSV-first wording from active governance documents, so
new hyb-oa work consistently starts from Trellis tasks/specs while historical
Issue CSVs remain audit evidence.
## Scope
- Review and close out the old active Trellis setup tasks:
- `00-bootstrap-guidelines`
- `05-26-trellis1-pilot`
- `05-26-trellis2-official-task-contract`
- Update current governance documents that still describe Issue CSV as the
default development contract.
- Preserve historical Issue CSV files and historical references.
- Keep `.trellis/spec/hyb-oa/` as the project-specific spec entry point.
- Run governance, docs and task validation after edits.
## Out Of Scope
- No backend or frontend business-code changes.
- No public deployment or live OA verification.
- No database, Enterprise WeChat, payment, production config or real-data write.
- No deletion, migration or bulk rewrite of historical `issues/*.csv` files.
- No implementation of OAOPS1, OALAUNCH1, WREAL1 or Enterprise WeChat mirror
features in this task.
## Requirements
- Active Trellis task list should no longer contain completed historical setup
tasks after this task is done.
- Current governance docs must say Trellis task is the default execution
contract for new non-trivial work.
- Issue CSVs must be described only as historical audit evidence or optional
external/export format unless a user explicitly requests legacy output.
- Existing docs fact sources and Trellis specs must remain registered and
validated.
- Historical issue references may remain when clearly historical.
## Acceptance
- `task.py list` shows no stale active setup task for bootstrap, TRELLIS1 or
TRELLIS2 after closeout.
- `docs/开发交付与变更管理规约.md` no longer instructs current work to start
from Issue CSV by default.
- `docs/文档索引.md`, `docs/文档事实源状态矩阵.md` and
`docs/Agent开发交付实践.md` remain aligned with Trellis-only governance.
- Governance scripts pass.
- Working tree is committed and clean when the task is finished.
## Test Plan
- `python3 ./.trellis/scripts/task.py validate 05-26-trellis-governance-closeout`
- `python3 ./.trellis/scripts/task.py list`
- `node --check scripts/qa/check-trellis-governance.mjs`
- `node --check scripts/qa/check-process-contract.mjs`
- `node --check scripts/qa/audit-docs.mjs`
- `node scripts/qa/check-trellis-governance.mjs`
- `node scripts/qa/check-process-contract.mjs --baseline --json`
- `node scripts/qa/audit-docs.mjs --check-registry`
- `rg -n "开发必须围绕最新 Issue CSV|先有 Issue CSV|Issue CSV.*默认|Skill quick_validate|hyb-oa-delivery|单功能 Issue CSV|最新 Issue CSV|不得跳过 Issue CSV" AGENTS.md docs scripts .trellis/spec .trellis/workflow.md`
- `git diff --check`
## Privacy
Do not write passwords, token, Secret, real invoice originals, contract bodies,
bank materials, full accounts, complete local paths or raw payloads in Trellis
tasks, docs, reports or chat.
## Implementation Plan
1. Confirm the old Trellis setup tasks are completed or superseded.
2. Update only current governance wording that still implies Issue CSV-first
execution.
3. Archive stale setup tasks after validation.
4. Run the test plan and commit the governance closeout.
@@ -0,0 +1,38 @@
{
"id": "trellis-governance-closeout",
"name": "trellis-governance-closeout",
"title": "Close out legacy Trellis tasks and Trellis-only governance wording",
"description": "Close out legacy in-progress Trellis setup tasks and remove current Issue CSV-first governance wording now that Trellis-only delivery is established.",
"status": "in_progress",
"dev_type": "docs",
"scope": "trellis-governance",
"package": "docs",
"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/00-bootstrap-guidelines/",
".trellis/tasks/05-26-trellis1-pilot/",
".trellis/tasks/05-26-trellis2-official-task-contract/",
"docs/开发交付与变更管理规约.md",
"docs/文档索引.md",
"docs/文档事实源状态矩阵.md",
"docs/Agent开发交付实践.md",
".trellis/spec/hyb-oa/"
],
"notes": "No business code, no deployment, no production data writes. Historical Issue CSV files remain audit evidence and are not deleted.",
"meta": {
"contractMode": "trellis_task",
"intent": "governance_closeout"
}
}
@@ -53,6 +53,15 @@ the rest conversationally.
## Status (update the checkboxes as you complete each item)
- [x] Superseded by `.trellis/spec/hyb-oa/` project-specific specs.
- [x] Bootstrap task retained only as historical setup evidence.
The generated backend/frontend placeholder checklist below is no longer the
active project guideline contract. hyb-oa uses `.trellis/spec/hyb-oa/` plus
domain docs as the current spec entry point.
### Historical generated checklist
- [ ] Fill backend guidelines
- [ ] Fill frontend guidelines
- [ ] Add code examples
@@ -3,7 +3,7 @@
"name": "00-bootstrap-guidelines",
"title": "Bootstrap Guidelines",
"description": "Fill in project development guidelines for AI agents",
"status": "in_progress",
"status": "completed",
"dev_type": "docs",
"scope": null,
"package": null,
@@ -11,7 +11,7 @@
"creator": "shunli",
"assignee": "shunli",
"createdAt": "2026-05-26",
"completedAt": null,
"completedAt": "2026-05-26",
"branch": null,
"base_branch": null,
"worktree_path": null,
@@ -1,3 +1,3 @@
{"file":".trellis/spec/hyb-oa/project-governance.md","reason":"Defines Trellis-first flow and Issue CSV binding rules."}
{"file":".trellis/spec/hyb-oa/project-governance.md","reason":"Defines Trellis-first flow and legacy Issue CSV boundaries."}
{"file":".trellis/spec/hyb-oa/docs-and-evidence.md","reason":"Defines docs/evidence reuse and registration requirements."}
{"file":".trellis/spec/hyb-oa/security-privacy.md","reason":"Defines redaction and sensitive-data exclusions for Trellis task files."}
@@ -32,3 +32,9 @@ binding to Issue CSV and project documentation.
- `python3 ./.trellis/scripts/task.py validate 05-26-trellis1-pilot`
- `node scripts/qa/check-trellis-governance.mjs`
## Closeout
TRELLIS1 is complete as historical migration evidence. TRELLIS2 replaced the
dual Trellis task plus Issue CSV binding with official Trellis task-first
governance for new work.
@@ -3,7 +3,7 @@
"name": "trellis1-pilot",
"title": "TRELLIS1 low-risk pilot",
"description": "Low-risk task used to prove the Trellis task -> Issue CSV -> governance check path without changing business code.",
"status": "in_progress",
"status": "completed",
"dev_type": "docs",
"scope": "trellis-governance",
"package": "docs",
@@ -11,7 +11,7 @@
"creator": "shunli",
"assignee": "shunli",
"createdAt": "2026-05-26",
"completedAt": null,
"completedAt": "2026-05-26",
"branch": null,
"base_branch": "main",
"worktree_path": null,
@@ -11,8 +11,8 @@ holds the PRD, implementation context, verification context and finish record.
- Make Trellis task the execution contract for new work.
- Keep `docs/` as the business fact source.
- Keep historical `issues/*.csv` files for audit and legacy lookup only.
- Update AGENTS, Trellis workflow, project governance spec, governance check,
project documentation and the hyb-oa delivery skill.
- Update AGENTS, Trellis workflow, project governance spec, governance check
and project documentation.
## Out Of Scope
@@ -46,3 +46,8 @@ holds the PRD, implementation context, verification context and finish record.
Do not store passwords, token, Secret, real invoice originals, contract bodies,
bank materials, full accounts, complete local paths or raw payloads in Trellis
tasks, docs, reports or chat.
## Closeout
TRELLIS2 is complete as the official task-first governance contract. Subsequent
cleanup and stale-task archival is handled by `trellis-governance-closeout`.
@@ -3,7 +3,7 @@
"name": "trellis2-official-task-contract",
"title": "TRELLIS2 official task contract",
"description": "Migrate hyb-oa development governance from Issue CSV binding to official Trellis task contracts.",
"status": "in_progress",
"status": "completed",
"dev_type": "docs",
"scope": "trellis-governance",
"package": "docs",
@@ -11,7 +11,7 @@
"creator": "shunli",
"assignee": "shunli",
"createdAt": "2026-05-26",
"completedAt": null,
"completedAt": "2026-05-26",
"branch": null,
"base_branch": "main",
"worktree_path": null,
+1 -1
查看文件
@@ -24,7 +24,7 @@ Trellis 的定位是“开发执行合同和上下文组织层”,不是业务
- Trellis task:承载本轮需求 PRD、范围边界、验收、测试计划、上下文和复盘。
- Trellis spec:沉淀稳定开发规则和高频工程边界。
- Issue CSV:保留为历史审计材料或特殊外部交付导出格式,不再作为新任务默认前置合同。
- Issue CSV:历史审计材料或特殊外部交付导出格式,不作为新任务前置合同。
- `docs/`:仍是业务事实源、产品规则、操作手册和证据入口。
- `AGENTS.md`:只保留 Trellis-first 入口和不可违反硬约束。
+3 -3
查看文件
@@ -11,9 +11,9 @@
- R7E 阶段验收已通过,当前 P0/P1 阻断为 0;2026-05-16 已完成 `R7E-19/R7E-20` 的 P2 排序与阶段收口,以及 `QAOPS8-19/QAOPS8-20` 的上线硬化阶段收口。
- 当前全端功能边界已经从“能跑主链路”进入“明确哪些是可验收主线、哪些是低频备用、哪些只做 P2 候选、哪些冻结”的阶段。
- 代码中存在差旅、ERP、AI、预算、付款批次、资产扫描等历史实现或开关,不等于当前 MVP/R7E 必须验收;当前边界仍以最新 Issue CSV、PRD、模块规约和产品口径为准。
- 代码中存在差旅、ERP、AI、预算、付款批次、资产扫描等历史实现或开关,不等于当前 MVP/R7E 必须验收;当前边界仍以当前 Trellis task、PRD、模块规约和产品口径为准。
- 付款批次、图片 OCR、组织账号主数据持续治理、测试数据/公网业务流稳定化、UX8 真机体验池、备份恢复演练和上线硬化,是 R7E 后最应优先整理的优化候选。
- 本轮只做审计和 Issue 草案,不改业务代码、不改 API/schema、不部署、不启用 `payment_batch_v1`、不开放图片 OCR。
- 本轮只做审计和后续候选草案,不改业务代码、不改 API/schema、不部署、不启用 `payment_batch_v1`、不开放图片 OCR。
## 2. 事实源和入口盘点
@@ -87,7 +87,7 @@
| 新 P2 OCR 合同 | 图片 OCR、批量样票、OFD/多票种能力评估 | 样票授权和脱敏先行;无授权样票不得写 PASS |
| 新 P2 组织治理合同 | 主管缺失、停用审批人、角色混授、企业微信绑定异常巡检 | 先只读审计,再按批准方案修复 |
## 7. 建议 Issue 草案
## 7. 建议候选草案
后续如果启动 P2,可按以下顺序拆分:
+9 -9
查看文件
@@ -19,7 +19,7 @@ DCL7 已删除本文件中 R70-R91 的长流水历史,避免旧环境、旧开
- R7/OPS7/DOC7 是准备材料;R7EP 自动门禁和 OPS8 只读检查已完成;R7E 已于 2026-05-15 23:35 CST 由用户确认阶段验收通过,并于 2026-05-16 完成 R7E-19/R7E-20 和 QAOPS8-19/QAOPS8-20 阶段收口。
- 2026-05-13 后续计划调整直接回写现有 R7EP、OPS8、QAF8、UX8、P2T 合同,不新建专门调整 Issue;调整后 R7EP 门禁可并行执行,OPS8-1/2/4 纳入 R7EP Go/No-Go,UX8 和 P2T 候选按真实反馈并行推进。
- ORG8 组织账号与权限主数据已完成本地代表性角色验收和阶段收口;后续组织主数据治理只作为 P2 只读巡检候选,不自动进入写修复。
- 2026-05-16 已建立并细化 QAOPS9 上线硬化连续合同和 P2D 功能决策合同;QAOPS9 固定隔离本地业务流与公网 flag-off 证据分离,P2D 固定 `GO_TO_CONTRACT`、`HOLD_FOR_PREREQ`、`FREEZE` 三类结论;本次只更新 Issue CSV、既有事实源和 QA 脚本过滤参数,未改业务代码、API/schema、feature flag 或前端功能,未部署,公网运行状态不变。
- 2026-05-16 已建立并细化 QAOPS9 上线硬化连续合同和 P2D 功能决策合同;QAOPS9 固定隔离本地业务流与公网 flag-off 证据分离,P2D 固定 `GO_TO_CONTRACT`、`HOLD_FOR_PREREQ`、`FREEZE` 三类结论;本次只更新历史执行合同、既有事实源和 QA 脚本过滤参数,未改业务代码、API/schema、feature flag 或前端功能,未部署,公网运行状态不变。
- 2026-05-16 QAOPS9 已完成隔离核心业务流稳定化、恢复演练 dry-run checklist、公网 live smoke、真实 OCR 和公网移动矩阵复核;`pending OCR` 因本地未注入 `DATABASE_URL` 继续按规则记非阻断 `SKIP`。P2D 已完成分流:`P2-ORG` 只读巡检可进入独立合同,其余 P2 候选先保持前置条件等待。
- 2026-05-16 P2D 旧口径已修正:live smoke 凭据、员工 OCR 凭据和授权 PDF 样票已具备,不再作为 P2-FIN/P2-OCR 的 HOLD 原因。P2-ORG 已完成只读巡检:当前连接数据源 high=0、medium=0、low=9,建议 `NO_WRITE_FIX_NEEDED`;低风险项为 CEO/root 无直属主管观察 1 和 active 员工无企业微信绑定 8。
- 2026-05-16 P2-FIN-DECISION 已完成付款批次启用决策准备:只读核对代码/flag/空态、角色账号、导出字段、审计事件、公网 readiness 和 flag off 回滚口径,结论为 `GO_TO_IMPLEMENT`,后续可另建 `P2-FIN-V1`;当前仍不启用 `payment_batch_v1`、不写付款批次业务数据、不部署。
@@ -36,7 +36,7 @@ DCL7 已删除本文件中 R70-R91 的长流水历史,避免旧环境、旧开
- 2026-05-17 FIN-PROD-ENABLE 已完成公网付款批次正式常开:未重新部署业务代码;新增 QA-only 正式启用 runner 后,公网测试报销 `BX-20260517-0026` 完成审批、付款批次创建/复核、无回单执行阻断、回单上传/下载、付款执行、报销 `paid`、票据 `archived`、AP 台账 `paid`、AP 导出和审计核验;公网移动矩阵 6 passed、企业微信渲染矩阵 8 passed。最终 `payment_batch_v1=force_on`,`erp_sync=force_off`;不接真实支付、不接 ERP、不开放图片 OCR、不导入银行流水。
- 2026-05-17 ACCOUNTING-HANDOFF-V1 已固化月度代账交接 SOP:OA 侧导出 AP 台账、报销、票据中心、付款批次/回单附件清单和审计日志;银行流水和银行回单原件由 `wangzhiling` 从银行渠道导出,交给代账人工核对。公网只读/导出核对显示付款批次清单、回单附件列表/下载、AP 导出、报销导出、票据导出和审计日志导出均返回 200;不开发银行流水导入或一键 zip 包。
- 2026-05-17 SYSTEM-COMPLETE-GATE 已完成系统开发完成门禁:公网 `/ready`、public bundle、live smoke `3 passed`、PDF live OCR `1 passed`,只读 flag 核验显示 `payment_batch_v1=force_on`、`erp_sync=force_off`;公网移动/企业微信 UA 矩阵 `14 passed`;结论 `GO_TO_USE`。当前首批正式能力为员工报销、PDF OCR、审批、请假、采购、通知、移动/企业微信入口、财务台账、付款批次、银行回单附件和代账交接。
- 2026-05-17 LAUNCH-OPS-V1 已固定首周正式使用运营口径:`wangshunli` 为上线拍板、管理员复核和回滚决策人,`wangzhiling` 为出纳/付款执行和代账资料准备人;首周问题登记、每日巡检、暂停条件、代账交接节奏和 UX8/可选功能冻结口径已回写现有手册。后续新增功能只按真实反馈和业务频次另建 Issue CSV。
- 2026-05-17 LAUNCH-OPS-V1 已固定首周正式使用运营口径:`wangshunli` 为上线拍板、管理员复核和回滚决策人,`wangzhiling` 为出纳/付款执行和代账资料准备人;首周问题登记、每日巡检、暂停条件、代账交接节奏和 UX8/可选功能冻结口径已回写现有手册。后续新增功能只按真实反馈和业务频次另建 Trellis task。
- 2026-05-17 REQ-COMPLETE-AUDIT 已完成需求完成度复核和考勤边界校正:首批正式能力保持 `GO_TO_USE` 结论不变;企业微信打卡作为原始采集和风控底座,OA 不重造定位、人脸、Wi-Fi、排班、设备和防作弊。
- 2026-05-17 ATTV1 已完成考勤统一入口实现并部署到公网:历史 OA 自建打卡 `attendance_v1` 关闭;OA 新增企微打卡摘要同步、补卡/外出/加班修正审批和月度考勤解释;所有审批继续统一在 OA,企业微信只负责打卡原始采集和风控。公网复检显示旧打卡 API 返回 409、统一考勤月度汇总和修正列表可读、移动/企业微信矩阵 14 passed;企微 live 同步依赖已授权调用打卡 API 的自建应用 Secret 和企微权限,`WECOM_CHECKIN_SECRET` 可显式覆盖,未配置时复用已授权工作台应用的 `WECOM_AGENT_SECRET`,缺配置时记 `SKIP`。
- 2026-05-17 LAUNCH-AUTO-OPS-V1 已完成正式启用后自动化收口脚本和证据刷新:本地 Prisma/node check/focused 单测、前端 typecheck/build、公网 readiness、PDF live OCR、统一考勤 live 检查、公网移动矩阵和企业微信 UA/渲染矩阵均通过;显式企微打卡同步检查返回 `SKIP wecom_checkin_sync_disabled`;但只读 flag 检查发现当前公网 `payment_batch_v1=force_off`,与 FIN-PROD-ENABLE 记录的正式常开口径不一致,结论为 `PAUSE_FOR_FIX`。runner 已跳过付款批次写入,未切换 flag、未部署、不接真实支付、不接 ERP。
@@ -44,10 +44,10 @@ DCL7 已删除本文件中 R70-R91 的长流水历史,避免旧环境、旧开
- 2026-05-17 HR-WECOM-DIRECTORY-V1 已完成并部署公网:产品口径已调整为 ERP 未来不接入 OA;人事生命周期和考勤同属 HR 大域但分模块实现。OA 继续作为员工、权限、审批和审计主事实源;企业微信作为通讯录、入口、通知和打卡采集基础设施。HRWD 新增企业微信通讯录同步 flag、配置、同步记录、入职创建/资料更新/离职禁用钩子和员工管理重试入口。本地后端/前端/Playwright 通过,部署后公网 readiness、PDF live OCR、HRWD 端点 SKIP 检查和公网移动/企微矩阵通过;部署过程中发现 `seed-config` 会覆盖正式 feature flag,已修正为只创建缺失开关并复部署验证,最终 `payment_batch_v1=force_on`、`erp_sync=force_off`。
- 2026-05-17 HRWD-CONTACT-LIVE-TEST 已完成公网企业微信通讯录真实写入闭环:使用 `HRWDTEST-20260517214548` 测试员工,验证 OA 创建员工后由 onboarding 触发企微 create、资料更新触发企微 update、离职 checklist 完成后禁用 OA 账号并触发企微 disable;三次企微同步均为 `wecom_contact_synced` 且 `errcode=0`。普通员工查看/重试他人同步状态被拒绝,审计日志包含 `WECOM_DIRECTORY_CREATE/UPDATE/DISABLE`;测试成员按约定保留离职/禁用状态,不删除。
- 2026-05-17 WCFB 已完成企微打卡同步 Secret 兼容修正并随 WRV1 部署到公网:用户确认「工作台」就是 OA 企业微信入口应用,且该应用已在企业微信打卡 API「可调用接口的应用」中授权。OA 后端调整为 `WECOM_CHECKIN_SECRET` 显式优先,未配置时复用已授权工作台应用的 `WECOM_AGENT_SECRET`,避免重复维护同一个 Secret;本地语法检查、focused 单测、文档和项目 skill 校验通过。WRA1 已确认此前 WRV1 阻断是 QA-only 门禁误判,正式同步仍由 `WECOM_CHECKIN_SYNC_ENABLED` 控制。
- 2026-05-18 WFOC 已完成“企微优先 + OA 无痛接管”需求重构:用户确认能用企业微信成熟能力就优先使用企业微信,第一批聚焦 HR/考勤员工日常审批;OA 目标调整为镜像、人工接管、恢复回写、RuleOps、财务闭环和审计中台。员工主数据后续以企微/人事助手为主,OA 同步镜像;企微故障时由管理员人工开启 OA 应急模式;企微恢复后 OA 对应急数据 dry-run 并自动回写。本轮只更新需求事实源、手册、索引和 Issue CSV,不改业务代码、不部署、不改公网配置;后续实现需另拆 `wecom_hr_master_sync_v1`、`wecom_native_approval_mirror_v1`、`oa_hr_emergency_mode_v1`、`wecom_recovery_writeback_v1`、`wecom_ruleops_v1`。DBWFOC 后该口径进一步收窄为按域镜像和 OA 主办数据边界。
- 2026-05-18 DBWFOC 已完成“企微能力参考 + OA 主办数据边界”修正:HR/考勤员工日常审批优先复用企业微信;采购、费用、合同、项目、报销、付款、AP、代账交接、审计和高敏附件继续 OA 主办。企业微信成熟功能可作为流程、字段、交互和规则参考,但不默认托管 OA 主办业务数据;企业微信消息只承载脱敏标题、业务类型、编号、状态和 OA deeplink。采购单附件、合同正文、报价、供应商资料、发票、银行回单和代账资料不进入企业微信原生审批或企业微信附件。本轮只更新需求事实源、手册、索引、项目 skill 和 Issue CSV,不改业务代码、不部署、不改公网配置。
- 2026-05-18 WFOC 已完成“企微优先 + OA 无痛接管”需求重构:用户确认能用企业微信成熟能力就优先使用企业微信,第一批聚焦 HR/考勤员工日常审批;OA 目标调整为镜像、人工接管、恢复回写、RuleOps、财务闭环和审计中台。员工主数据后续以企微/人事助手为主,OA 同步镜像;企微故障时由管理员人工开启 OA 应急模式;企微恢复后 OA 对应急数据 dry-run 并自动回写。本轮只更新需求事实源、手册、索引和历史执行合同,不改业务代码、不部署、不改公网配置;后续实现需另拆 `wecom_hr_master_sync_v1`、`wecom_native_approval_mirror_v1`、`oa_hr_emergency_mode_v1`、`wecom_recovery_writeback_v1`、`wecom_ruleops_v1`。DBWFOC 后该口径进一步收窄为按域镜像和 OA 主办数据边界。
- 2026-05-18 DBWFOC 已完成“企微能力参考 + OA 主办数据边界”修正:HR/考勤员工日常审批优先复用企业微信;采购、费用、合同、项目、报销、付款、AP、代账交接、审计和高敏附件继续 OA 主办。企业微信成熟功能可作为流程、字段、交互和规则参考,但不默认托管 OA 主办业务数据;企业微信消息只承载脱敏标题、业务类型、编号、状态和 OA deeplink。采购单附件、合同正文、报价、供应商资料、发票、银行回单和代账资料不进入企业微信原生审批或企业微信附件。本轮只更新需求事实源、手册、索引、项目治理材料和历史执行合同,不改业务代码、不部署、不改公网配置。
- 2026-05-18 WFDG 已完成“企微优先 + OA 主办数据边界”的设计规约门禁:后续开发前必须先判定业务域主办方、主事实源、操作端、镜像方向、附件归属和审计责任;PC/移动页面需区分 `OA 主办`、`企微镜像` 和 `OA 应急接管`;企微同步必须具备幂等、重试、脱敏日志、审计记录和 `SKIP/BLOCKED_BY_EXTERNAL_CONFIG`。下一轮先做 `WECOM-CAPABILITY-POC-V1`,输出 `CAN_REUSE_NOW`、`NEEDS_CONFIG`、`NEEDS_API_POC`、`KEEP_OA_PRIMARY`、`NOT_SUPPORTED_BY_API` 能力矩阵;本轮不改业务代码、不部署、不调用生产写接口。
- 2026-05-18 WDRG 已完成“企微优先后续开发路线图”门禁:新增 `docs/企微优先开发路线图.md`,固定“路线图门禁 + 单功能 Issue CSV”的工程节奏。后续顺序为 `WECOM-CAPABILITY-POC-V1` -> `wecom_hr_master_sync_v1` -> `wecom_attendance_approval_mirror_v1` -> `oa_hr_emergency_mode_v1` -> `wecom_recovery_writeback_v1` -> `wecom_ruleops_v1`;阶段未退出前禁止跳阶段。本轮只更新路线图、交付规约、事实源、手册、项目 skill 和 Issue CSV,不改业务代码、不部署、不调用公网写接口。
- 2026-05-18 WDRG 已完成“企微优先后续开发路线图”门禁:新增 `docs/企微优先开发路线图.md`,固定当时的“路线图门禁 + 单功能执行合同”工程节奏。后续顺序为 `WECOM-CAPABILITY-POC-V1` -> `wecom_hr_master_sync_v1` -> `wecom_attendance_approval_mirror_v1` -> `oa_hr_emergency_mode_v1` -> `wecom_recovery_writeback_v1` -> `wecom_ruleops_v1`;阶段未退出前禁止跳阶段。本轮只更新路线图、交付规约、事实源、手册、项目治理材料和历史执行合同,不改业务代码、不部署、不调用公网写接口。
- 2026-05-18 WCP1 已完成企业微信能力 POC:新增 QA-only 只读 runner `scripts/qa/check-wecom-capability-poc.mjs`,本地不开启 live read 时可解释为 `PAUSE_FOR_API_POC`,本地开启 live read 但无真实 env 时可解释为 `PAUSE_FOR_CONFIG`;部署服务器容器内 live 只读探测报告为远端 `/tmp/wecom-capability-poc-wcp1/summary.json`,历史结论为 `PAUSE_FOR_CONFIG`。该报告继续作为初始配置缺口证据保留,当前 HR 主数据镜像准入以 WCPC 复跑结论为准。
- 2026-05-18 WCPC 已完成 WCP1 配置收口复跑:先完成未补配置前远端基线复跑,报告目录 `/tmp/wecom-capability-poc-wcpc-baseline`,结论为 `PAUSE_FOR_CONFIG`;随后按用户要求自动查找并使用既有在职低风险测试号 `SMOKE002/测试员工`(报告只记录 `oa_smoke***`)复跑,只读报告 `/tmp/wecom-capability-poc-wcpc-smoke002/summary.json` 返回 `PASS / GO_TO_HR_MASTER_SYNC`,`nextStageAllowed=true`,`blockingCapabilities=[]`,状态计数为 `CAN_REUSE_NOW=15`、`NEEDS_CONFIG=3`、`NEEDS_API_POC=1`、`KEEP_OA_PRIMARY=1`。本轮不部署、不改业务代码、不持久写服务器 `.env`;下一步允许规划 `wecom_hr_master_sync_v1`,审批模板/实例、回调配置和 HR 写接口仍留后续合同。
- 2026-05-18 WHMS 已完成企微 HR 主数据镜像本地实现、部署和受控公网验证:新增 `wecom_hr_master_sync_v1` 默认 `force_off`,实现企业微信通讯录/人事助手读取、dry-run/apply、同步批次/逐员工记录、管理员 API、People 管理卡片和 QA-only runner。WHMSLIVE 部署到 `https://oa.hyinda.com` 并应用 migration `20260518184319_wecom_hr_master_sync_v1`;公网临时 `force_on` 后对 `SMOKE002/测试员工`(脱敏 `oa_smoke***`)执行 dry-run 和显式 userids apply,企微读取链路通过,因企微侧缺手机号、邮箱和部门按 `missing_required_field` 跳过,未写 OA 主数据;普通员工访问同步 API 返回 403;最终 `wecom_hr_master_sync_v1=force_off`。未执行生产真实员工批量 apply,不代表考勤/审批镜像、应急接管、恢复回写或 RuleOps 已完成。
@@ -61,12 +61,12 @@ DCL7 已删除本文件中 R70-R91 的长流水历史,避免旧环境、旧开
- 2026-05-19 WAPC2F 新增企微审批 POC 样件自动生成 dry-run:新增 `server/src/scripts/check-wecom-approval-fixtures.js` / `npm run check:wecom-approval-fixtures`,固定 `WECOM_AGENT_SECRET` 构建 OA-POC 请假/补卡最小通用模板候选和低风险审批申请候选;默认 dry-run 不获取写入 token、不调用企微写接口、不创建模板、不提交审批单。已以 `SYNC_ENV=0` 部署并远端执行 dry-run,报告 `/app/artifacts/qa-flow/wecom-approval-fixtures-20260519T045001Z/summary.json` 结论为 `PASS_FIXTURE_DRY_RUN_READY`:`SMOKE002 -> SMOKE101` 均 active、已绑定企微、非自审,payload 脱敏输出通过。live 创建 OA-POC 测试模板和测试审批单仍未批准、未执行;WAPC2 自动复跑需等 live 生成真实模板 ID 和 `sp_no` 后再执行。
- 2026-05-19 WAPC2FLIVE 完成企微审批 OA-POC 样件 live 创建和 WAPC2 自动复跑:用户批准一次 live 创建并选择保留审计后,先以 `SYNC_ENV=0` 部署修正后的 runner,再远端 dry-run 复核 `/app/artifacts/qa-flow/wecom-approval-fixtures-20260519T053335Z/summary.json` 为 `PASS_FIXTURE_DRY_RUN_READY`。首次 live 写入 API 因旧 `create_template` payload 返回 `301086 zh_CN text empty`,未创建任何模板或审批单;随后将 payload 修正为官方 `template_name` + `property` controls 结构并复跑有效 live,报告 `/app/artifacts/qa-flow/wecom-approval-fixtures-20260519T053400Z/summary.json` 为 `PASS_FIXTURE_CREATED`,请假/补卡 OA-POC 测试模板和低风险测试审批单均创建成功,`checks.autoRerun.status=OK` 且结论 `PASS_APPROVAL_POC`。报告只记录脱敏 template_id / `sp_no` 前缀;测试模板和测试审批记录保留审计,不自动删除。本轮不配置真实回调、不做补偿拉取、不建镜像表、不进入 `wecom_attendance_approval_mirror_v1`。
- 2026-05-19 WCBK1 实现并完成企微审批回调只读 POC:新增只读 `GET/POST /api/wecom/approval/callback`、企微回调验签/AES 解密/事件归一化服务、`npm run check:wecom-approval-callback-poc` 和 `wecom-callback` process gate。已以 `SYNC_ENV=0` 部署并复检 `/ready`;初始远端报告 `/app/artifacts/qa-flow/wecom-approval-callback-poc-20260519T065414Z/summary.json` 为 `PARTIAL_CALLBACK_NEEDS_CONFIG`,synthetic 回调验签、解密和审批事件解析通过。配置真实回调后,远端报告 `/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`,脱敏证据记录 1 条已通过审批状态事件。本轮不建镜像表、不写 OA 业务数据、不写企微数据、不创建新模板或审批单。
- 2026-05-19 WEGOV1 完成企微主办治理与 OA 自建留存路线修正:本轮只更新 Issue CSV 和事实源,不改业务代码、不部署、不写 OA/企微数据。结论固定为“企微成熟功能优先上线,OA 做自建数据留存、审计、入口、消息和应急兜底”;HR/考勤日常流程优先企微主办,报销、采购、合同、项目、付款、发票、银行回单、高敏附件和经营审计继续 OA 主办。后续顺序调整为 `WACP3 -> WREAD1 -> WADM1 -> WARCH1 -> wecom_attendance_approval_mirror_v1`,其中 WARCH1 先保证企微不可用时可查看已保存历史,再进入完整镜像增强。
- 2026-05-19 WEGOV1 完成企微主办治理与 OA 自建留存路线修正:本轮只更新历史执行合同和事实源,不改业务代码、不部署、不写 OA/企微数据。结论固定为“企微成熟功能优先上线,OA 做自建数据留存、审计、入口、消息和应急兜底”;HR/考勤日常流程优先企微主办,报销、采购、合同、项目、付款、发票、银行回单、高敏附件和经营审计继续 OA 主办。后续顺序调整为 `WACP3 -> WREAD1 -> WADM1 -> WARCH1 -> wecom_attendance_approval_mirror_v1`,其中 WARCH1 先保证企微不可用时可查看已保存历史,再进入完整镜像增强。
- 2026-05-19 WACP3/WACP3R 完成企微审批补偿拉取只读 POC:新增 `server/src/scripts/check-wecom-approval-compensation-poc.js` / `npm run check:wecom-approval-compensation-poc`,固定 `WECOM_AGENT_SECRET` 调用 `POST /cgi-bin/oa/getapprovalinfo`,按时间窗口和模板过滤拉审批单号,再复用 `getapprovaldetail` 拉详情并与 WCBK1 回调证据脱敏比对。初始公网报告因缺模板 ID 为 `PARTIAL_COMPENSATION_NEEDS_CONFIG`;WACP3R 改为按 `SMOKE002` creator 自动发现 OA-POC 请假/补卡模板并复跑,公网报告 `/app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T115944Z/summary.json` 为 `PASS_WITH_FINDINGS`:请假/补卡各拉到 1 条详情,当时 finding 为回调证据文件未持久化,已由后续 WARCH1 DB 回调事件承接。本轮未写 OA/企微数据,未保存完整模板 ID。
- 2026-05-19 WREAD1 新增企微审批可读性与误审批防护门禁:新增 `server/src/scripts/check-wecom-approval-readability-gate.js` / `npm run check:wecom-approval-readability-gate`,只读汇总 OA-POC 请假/补卡证据并输出真机确认清单。本轮以 `SYNC_ENV=0` 部署,不同步本地 env;部署后先只读复跑 WACP3R 自动发现模板并生成 `/app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T125515Z/summary.json`,再执行 WREAD1,报告 `/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T125532Z/summary.json` 为 `PAUSED_MANUAL_CONFIRMATION`。本轮未新建企微模板或审批单,未写 OA/企微数据;下一步需要审批人真机分别确认请假/补卡消息卡片、列表、详情页和快捷同意/驳回误点风险。
- 2026-05-19 WREAD1F 按用户选择重新生成新样例:复用 `check:wecom-approval-fixtures` 远端 dry-run,`SMOKE002 -> SMOKE101` 预检通过。第一次 live 因企微模板名按日期重复返回 `301086`,未创建模板或审批单;随后将 OA-POC 模板名修正为带时间戳的唯一名称,focused vitest 17 tests 通过并以 `SYNC_ENV=0` 重新部署。第二次 live 报告 `/app/artifacts/qa-flow/wecom-approval-fixtures-20260519T131958Z/summary.json` 为 `PASS_FIXTURE_CREATED`,已创建新的请假/补卡 OA-POC 测试模板和两条低风险测试审批单,自动复跑 WAPC2 为 `PASS_APPROVAL_POC`。随后只读复跑 WACP3R `/app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T132031Z/summary.json` 为 `PASS_WITH_FINDINGS`,并生成 WREAD1 报告 `/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T132054Z/summary.json`,结论仍为 `PAUSED_MANUAL_CONFIRMATION`,等待审批人真机确认。
- 2026-05-19 WREAD1 人工真机确认收口:用户确认请假和补卡在企业微信消息卡片、列表、详情页均可以看清;驳回有二次确认,但同意按钮单击即通过;当前暂无额外字段补充建议。已用 `check:wecom-approval-readability-gate` 录入人工结果,远端报告 `/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T133628Z/summary.json` 为 `PASS_READABLE`,下一阶段允许进入 `WADM1 自建留存/镜像数据模型设计`。同意单击风险需在后续提示、审计留存或操作规程中处理;本轮未写 OA/企微业务数据,未创建新样例。
- 2026-05-19 WADM1 完成企微自建留存/镜像数据模型设计:本轮只更新 Issue CSV 和事实源,不改 Prisma schema、不写业务代码、不部署、不写 OA/企微业务数据。设计固定 `WecomApprovalArchive`、参与人/动作/字段摘要、附件摘要、回调事件、补偿拉取 run/item、对账 finding、打卡/人事快照复用边界、隐私保留、权限和迁移回滚策略。WACP3R “回调证据文件未持久化”的 finding 进入 WARCH1 入库实现;同意单击即通过进入 WARCH1 历史留存、审批轨迹和操作规程提示。该阶段已由下一条 WARCH1 承接,仍不能直接进入完整审批镜像、应急接管、恢复回写或 RuleOps。
- 2026-05-19 WADM1 完成企微自建留存/镜像数据模型设计:本轮只更新历史执行合同和事实源,不改 Prisma schema、不写业务代码、不部署、不写 OA/企微业务数据。设计固定 `WecomApprovalArchive`、参与人/动作/字段摘要、附件摘要、回调事件、补偿拉取 run/item、对账 finding、打卡/人事快照复用边界、隐私保留、权限和迁移回滚策略。WACP3R “回调证据文件未持久化”的 finding 进入 WARCH1 入库实现;同意单击即通过进入 WARCH1 历史留存、审批轨迹和操作规程提示。该阶段已由下一条 WARCH1 承接,仍不能直接进入完整审批镜像、应急接管、恢复回写或 RuleOps。
- 2026-05-19 WARCH1 实现企微审批最小自建历史留存:新增审批留存 Prisma 表、回调事件表、补偿 run/item/finding、`wecomApprovalArchive` 规范化服务、回调 DB 入库默认路径、补偿拉取 `--persist-to-db` + `WECOM_ARCHIVE_WRITE=1` 双开关和 `npm run check:wecom-approval-archive` 离线读取 runner。已以 `SYNC_ENV=0` 部署并应用 migration;远端补偿持久化报告 `/app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T160306Z/summary.json` 为 `PASS_WITH_FINDINGS`,`archivePersistence.status=OK`、`storedCount=2`;离线读取报告 `/app/artifacts/qa-flow/wecom-approval-archive-20260519T160330Z/summary.json` 为 `PASS_WITH_FINDINGS`,可读请假/补卡 2 条已通过历史。finding 是 WARCH1 前旧回调未持久化到 DB 的历史 gap,已作为对账 finding 留存,不是当前写入链路阻断。范围仅请假/补卡;不写企微数据、不创建模板或审批单、不新增正式管理页、不进入完整镜像、应急接管、恢复回写或 RuleOps。报告和日志只输出脱敏 `sp_no`、template、userid 前缀,DB 内保存完整外部键用于审计和补偿。
- 2026-05-20 WARCH2 实现并部署企微审批历史正式只读查询:新增 `/api/wecom/approval-archive` 列表和详情 API、PC/移动共用历史页、备用模块入口和移动考勤卡片入口。查询只读 OA DB,不调用企微 API、不读取企微 Secret;普通员工看本人相关,主管看直属下属和本人相关,HR/admin/* 看全量;`leave.view_all` / `attendance.view_all` 不单独代表全量企微归档权限;申请人未映射、callback-only 或外部-only 记录仅 HR/admin/* 可见。页面固定“企业微信主办,OA 自建留存”“仅已归档记录”,不展示审批按钮或 pending 待办语义。已以 `SYNC_ENV=0` 部署,公网 `/ready` 正常,新 API 未登录返回 401;远端离线归档报告 `/app/artifacts/qa-flow/wecom-approval-archive-20260520T013610Z/summary.json` 为 `PASS_WITH_FINDINGS`,可读 2 条请假/补卡历史,finding 仍为 WARCH1 前旧回调未入库历史 gap。
- 2026-05-20 WROAD2+OPS 建立受控上线与每日巡检合同:当前不直接进入完整镜像,改为测试账号 `SMOKE002 -> SMOKE101` 3 天受控试用,管理员观察和告警员工号使用 `HYD000006`(`wangshunli` 的员工号),每日触发 `scripts/qa/run-wroad2-ops-daily.sh` 或 WARCH3 timer。脚本复用公网 `/ready`、live smoke、feature flag、企微 runtime、审批补偿和 OA 归档离线读取;默认只读,唯一允许写入是补偿归档以进程级 `WECOM_ARCHIVE_WRITE=1` 写 OA 自建留存库,不写企业微信、不创建模板或审批单。Day 0 公网巡检报告 `/app/artifacts/qa-flow/wroad2-ops-20260520-041941/summary.json` 为 `PASS_WITH_FINDINGS`,finding 按 observation 管理。
@@ -659,7 +659,7 @@ Go 结论边界:
## OMAT1 审查决策包
本节把 37 条 OMAT1 压缩成用户评审时的第一轮决策包;未明确选择前,Issue CSV 状态仍保持 `TODO`。
本节把 37 条 OMAT1 压缩成用户评审时的第一轮决策包;未明确选择前,历史 OMAT1 CSV 状态仍保持 `TODO`。
| 决策组 | 推荐选择 | 涉及条目 | 采纳后的处理 |
| --- | --- | --- | --- |
@@ -688,7 +688,7 @@ Q7-Q9:A
| 已形成审查机制 | `OMAT1-22/23/24/25/27/28` | 已有国内对标来源、小团队取舍原则、成熟度验收摘要、域级能力矩阵、人工决策问答清单和本状态审计 | 保持 `TODO`,等待用户 A/B/C 决策;不自动视为采纳 |
| 仍待用户决策 | 全部 P0/P1/P2 建议 | 用户尚未按 Q1-Q9 或逐条给出采纳、暂缓、否决结论 | 不进入开发合同,不回填 DONE |
| 仍缺真实证据 | `OMAT1-1/2/3/4/5/14` 及 OALAUNCH1-3..7 | 最新 OALAUNCH1 汇总仍为 `PAUSED_MANUAL_CONFIRMATION`,缺真实业务闭环、权限矩阵、备份恢复、7 天稳定化和数据治理培训 | 不能宣布最终启用成熟,需先补证据 |
| 后置观察项 | P1/P2 建议 | 已有能力域判断,但价值和优先级应由 7 天真实使用反馈决定 | 先不启动功能开发,必要时另建 Issue CSV |
| 后置观察项 | P1/P2 建议 | 已有能力域判断,但价值和优先级应由 7 天真实使用反馈决定 | 先不启动功能开发,必要时另建 Trellis task |
## OMAT1 第二轮 MAGI 审视
+1 -1
查看文件
@@ -1,5 +1,5 @@
"Domain","Tier","Routes","Primary_Roles","Env_Gates","Feature_Flags","Coverage_Status","Evidence","Validated_Flows","Gaps","Next_Action"
"__DOC_STATUS__","meta","N/A","N/A","N/A","N/A","current_summary","docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/trialrun/人工试运行报告.md","DCL7 后保留的轻量覆盖摘要。历史长表可通过 5da05eb 的 git 历史恢复。","历史缺口不代表当前待办。","当前门禁以最新 Issue CSV 为准。"
"__DOC_STATUS__","meta","N/A","N/A","N/A","N/A","current_summary","docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/trialrun/人工试运行报告.md","DCL7 后保留的轻量覆盖摘要。历史长表可通过 5da05eb 的 git 历史恢复。","历史缺口不代表当前待办。","当前门禁以当前 Trellis task PRD 和模块规约为准。"
"报销请假采购审批","current","/reimbursements|/leave-requests|/purchase-requests|/workflow/tasks","employee|manager|finance","N/A","N/A","done","issues/R6|RI6|LP6|AP6|MIF7T","报销、请假、采购、审批主链路和移动列表/详情体验已在 R6 后批次收口。","R7 真实扩大试运行未启动。","进入 R7E 前先跑自动门禁并确认参与名单、窗口和负责人。"
"移动与企业微信","current","/mobile|/mobile/approvals|/mobile/reimbursements|/mobile/notifications|/mobile/purchase-requests","employee|manager|finance","WECOM_*","wecom_entry_v1","done","issues/ME6|DG7|MIA7|MIF7|MIF7T|MIF7TD","自动化、公网视觉、三台代表性企业微信真机反馈和带凭据 live smoke/OCR 已收口。","后续新增移动体验问题进入 UX8 或专项 Issue。","R7E 前按公网移动矩阵做回归,不重新打开 ME6-3。"
"财务与导出","current","/ap-operations|/payment-batches","finance","N/A","payment_batch_v1","done","issues/FL6|PA6|MIF7T","财务台账、导出、权限、审计和移动财务首页区分已完成一轮。","R7 真实财务用户扩大试运行未启动。","R7 前按草案确认人员、窗口、回滚联系人和财务验收路径。"
1 Domain Tier Routes Primary_Roles Env_Gates Feature_Flags Coverage_Status Evidence Validated_Flows Gaps Next_Action
2 __DOC_STATUS__ meta N/A N/A N/A N/A current_summary docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/trialrun/人工试运行报告.md DCL7 后保留的轻量覆盖摘要。历史长表可通过 5da05eb 的 git 历史恢复。 历史缺口不代表当前待办。 当前门禁以最新 Issue CSV 为准。 当前门禁以当前 Trellis task PRD 和模块规约为准。
3 报销请假采购审批 current /reimbursements|/leave-requests|/purchase-requests|/workflow/tasks employee|manager|finance N/A N/A done issues/R6|RI6|LP6|AP6|MIF7T 报销、请假、采购、审批主链路和移动列表/详情体验已在 R6 后批次收口。 R7 真实扩大试运行未启动。 进入 R7E 前先跑自动门禁并确认参与名单、窗口和负责人。
4 移动与企业微信 current /mobile|/mobile/approvals|/mobile/reimbursements|/mobile/notifications|/mobile/purchase-requests employee|manager|finance WECOM_* wecom_entry_v1 done issues/ME6|DG7|MIA7|MIF7|MIF7T|MIF7TD 自动化、公网视觉、三台代表性企业微信真机反馈和带凭据 live smoke/OCR 已收口。 后续新增移动体验问题进入 UX8 或专项 Issue。 R7E 前按公网移动矩阵做回归,不重新打开 ME6-3。
5 财务与导出 current /ap-operations|/payment-batches finance N/A payment_batch_v1 done issues/FL6|PA6|MIF7T 财务台账、导出、权限、审计和移动财务首页区分已完成一轮。 R7 真实财务用户扩大试运行未启动。 R7 前按草案确认人员、窗口、回滚联系人和财务验收路径。
+1 -1
查看文件
@@ -36,7 +36,7 @@
- 企微能力不清楚时先读 [企微 API 能力目录](./企微API能力目录.md),输出 `CAN_REUSE_NOW`、`NEEDS_CONFIG`、`NEEDS_API_POC`、`KEEP_OA_PRIMARY`、`NOT_SUPPORTED_BY_API` 能力矩阵,再进入正式开发。
### P0-5 WDRG 开发路线图门禁
- WDRG 后采用“路线图门禁 + 单功能 Issue CSV”:路线图只控制阶段顺序、准入/退出门禁、并行规则和禁止跳阶段,具体功能仍单独方案、单独 Issue CSV、单独验证。
- WDRG 后采用“路线图门禁 + 单功能 Trellis task”:路线图只控制阶段顺序、准入/退出门禁、并行规则和禁止跳阶段,具体功能仍单独方案、单独 Trellis task、单独验证。
- 当前企微优先 HR/考勤路线顺序固定为:`WECOM-CAPABILITY-POC-V1` -> `wecom_hr_master_sync_v1` -> `runtime_first_wecom_enablement` -> `WOUA-FIX / WECOM-RUNTIME-READY-V1` -> `WAPC1 审批配置准备` -> `WAPC2 请假/补卡只读 POC` -> `WAPC2F 自动生成 POC 样件` -> `WAPC2FLIVE live 创建与 WAPC2 自动复跑` -> `WCBK1 回调只读 POC(真实事件已确认)` -> `WEGOV1 企微主办治理与自建留存路线修正` -> `WACP3/WACP3R 补偿拉取 POC` -> `WREAD1 审批可读性与误审批防护门禁` -> `WADM1 自建留存/镜像数据模型设计` -> `WARCH1/WARCH2 最小留存和正式只读查询` -> `WROAD2/WARCH3/WCHECK1/WEXT1/WOPS1/WAPPR1/WRULE1` -> `WTCLOSE2/WREMOTE1/WFULLSMOKE2 远端收口` -> `WEXT1-FORMAL 正式模板外出/加班测试` -> `WREAL1 小范围真实试用` -> `wecom_attendance_approval_mirror_v1` -> `oa_hr_emergency_mode_v1` -> `wecom_recovery_writeback_v1` -> `wecom_ruleops_v1`。
- `WECOM-CAPABILITY-POC-V1` 已由 WCPC 收口,WHMS/WHMSLIVE 已完成 HR 主数据镜像实现和受控公网验证,WOUA-FIX 已完成测试账号差异收口;WRV1/WRA1/WMSG1 固定运行入口、OAuth/绑定、脱敏消息、Deeplink、通讯录、人事助手和打卡只读门禁;WACP3R 已证明请假/补卡补偿拉取和详情读取可用。后续不得跳过审批可读性门禁、镜像数据模型设计、最小历史留存、远端收口、正式模板外出/加班测试和真实小范围试用,直接开发考勤/审批镜像、OA 应急接管、恢复回写或 RuleOps 正式写入。
- 线上缺陷、正式使用阻断、真实反馈扫尾和 QA-only 脚本维护可以另开合同并行;采购、合同、报销、付款、AP、代账和高敏附件继续 OA 主办,不混入企微 HR/考勤路线。
+6 -6
查看文件
@@ -18,7 +18,7 @@
## 1. 路线图原则
- 采用“路线图门禁 + 单功能 Issue CSV”的工程流程;路线图管顺序和边界,具体实现仍以每个功能的 Issue CSV 为准。
- 采用“路线图门禁 + 单功能 Trellis task”的工程流程;路线图管顺序和边界,具体实现仍以每个功能的 Trellis task 为准。
- 当前路线只覆盖企微优先 HR/考勤域改造:人事助手、通讯录、打卡、HR/考勤审批、OA 自建留存、OA 镜像、OA 应急接管、恢复回写和 RuleOps。
- 采购、费用、合同、项目、报销、付款批次、AP、代账交接、审计和高敏附件继续 OA 主办;企业微信只做脱敏消息、deeplink、入口和成熟能力参考。
- WEGOV1 后固定四域边界:企微主办域为打卡、请假、补卡、外出、加班、假期余额和人事助手;OA 主办域为报销、采购、合同、项目、付款、发票、银行回单、高敏附件和经营审计;OA 留存域保存企微关键历史和完整外部关联键;OA 应急域只在企微不可用时由管理员人工开启。
@@ -33,7 +33,7 @@
- WTCLOSE1/WTCLOSE2 后小团队审批规则按一层主管/指定审批角色 + 管理员兜底执行;2026-05-21 用户已真机确认请假、补卡、外出、加班四类模板均达到 A;若后续模板回退为 B/C/D,立即暂停 WEXT1-FORMAL 或 WREAL1。
- WRULE1 后,WAPPR1 仍是人工规则门禁;WRULE1 只把已提交审批链和 OA 理论审批人自动对账。`PASS_RULE_MATCH` 或可解释 `PASS_WITH_ADMIN_FALLBACK` 才能继续测试号收口;`FAIL_APPLICANT_CAN_CHOOSE`、`FAIL_SELF_APPROVAL`、`FAIL_APPROVER_MISMATCH` 或 `SKIP/BLOCKED_BY_EXTERNAL_CONFIG` 均阻断 WEXT1-FORMAL、WREAL1 和最小完整镜像。
- 企业微信自建应用不按完整隔离 sandbox 处理;后续默认使用真实企业内受控测试域、本地 synthetic 自动测试、公网 live runner 和少量真机确认。
- 阶段未满足退出条件前不得跳阶段。线上缺陷、安全风险、正式使用阻断或真实反馈可以另开独立 Issue CSV,但不得混入企微 HR/考勤主路线。
- 阶段未满足退出条件前不得跳阶段。线上缺陷、安全风险、正式使用阻断或真实反馈可以另开独立 Trellis task,但不得混入企微 HR/考勤主路线。
- ERP 未来不接入 OA;真实支付、图片 OCR、银行流水导入、复杂 BPM、审批设计器、重预算和其他 P2 大功能继续冻结,试用期只处理阻断和真实反馈。
- WAPI 后所有企微开发必须先读 [企微 API 能力目录](./企微API能力目录.md),先确认官方 API、Secret、权限、可信 IP、回调/模板和读写边界;运行时代码不得靠多个 Secret 试错。
@@ -121,7 +121,7 @@
## 4. 每阶段固定门禁
每个正式阶段必须单独建立 Issue CSV,并至少包含:
每个正式阶段必须单独建立 Trellis task,并至少包含:
- 需求边界:本阶段做什么、不做什么、涉及哪些角色和业务流程。
- 接口边界:新增或复用的企微 API、OA API、schema、feature flag、配置和权限;企微接口必须引用 [企微 API 能力目录](./企微API能力目录.md) 的对应能力行。
@@ -180,7 +180,7 @@ POC 默认只读或低风险探测。任何生产写操作、企微规则写入
当前已完成:
- 建立 WCPC Issue CSV。
- 建立 WCPC 后续 Trellis task 或保留对应历史 Issue CSV 追溯。
- 使用现有远端配置和历史 `HRWDTEST-20260517214548` 做基线复跑,报告目录为远端 `/tmp/wecom-capability-poc-wcpc-baseline`。
- 基线结论仍为 `PAUSE_FOR_CONFIG`,`contact.member_read=wecom_errcode_48009`,`hr.staff_read=wecom_errcode_60021`。
- 使用 `SMOKE002/测试员工` 复跑既有测试号只读 POC,报告为远端 `/tmp/wecom-capability-poc-wcpc-smoke002/summary.json`。
@@ -334,7 +334,7 @@ WADM1 是 `WARCH1` 前的设计门禁,只定义数据模型、状态机、幂
隐私和保留策略:
- OA DB 可保存完整外部关联键和业务必要字段,用于补偿、历史查看、恢复和审计;日志、报告、Issue CSV 和文档只保存脱敏前缀。
- OA DB 可保存完整外部关联键和业务必要字段,用于补偿、历史查看、恢复和审计;日志、报告、Trellis task 和文档只保存脱敏前缀。
- 表单字段默认只保存规范化业务字段和摘要。请假/补卡至少保存申请类型、时间范围、时长或补卡时间、原因摘要、审批状态和审批历史;不保存无治理的整包 payload。
- 附件 V1 只保存数量、类型和外部引用摘要;不下载采购、合同、报销、发票、银行回单或高敏附件。
- 原始 XML、密文、Token、EncodingAESKey、access token、Secret 和完整回调密文永不入库。若后续确需原始 payload,必须另开加密存储、字段级访问审计和保留期限合同。
@@ -347,7 +347,7 @@ WARCH1 最小实现切片:
3. 增加 QA-only backfill/verify runner:断开企微 API 时仍能从 OA DB 读取已保存的请假/补卡历史摘要。
4. 再做只读查询 API 或管理页入口;不在 WARCH1 内开启完整镜像增强、外出/加班正式样例、应急接管、恢复回写或 RuleOps。该正式查询切片已由 WARCH2 承接。
WARCH1 已按独立 Issue CSV 进入最小实现。当前实现边界:
WARCH1 已按独立合同进入最小实现。当前实现边界:
- Prisma 新增 `WecomApprovalArchive`、`WecomApprovalParticipant`、`WecomApprovalAction`、`WecomApprovalFieldSummary`、`WecomApprovalAttachmentSummary`、`WecomApprovalCallbackEvent`、`WecomApprovalCompensationRun`、`WecomApprovalCompensationItem` 和 `WecomApprovalReconcileFinding`,migration 只新增表、索引和外键。
- `GET /POST /api/wecom/approval/callback` 继续只读接收企微回调;POST 验签、解密、规范化后默认写入 OA DB,DB 写入失败返回非 200,让企业微信按官方机制重试;配置文件证据仅作为无 Prisma 时的 fallback。
+44 -44
查看文件
@@ -6,7 +6,7 @@
**关联 Issue**:`GOV8,WDRG,WPROC1,WPROC2,WEGOV1`。
**最近审计**:2026-05-19。
**不得误读**:本文定义开发和变更流程,不替代具体业务 PRD、模块规约或测试规约。
**路线口径**:开发必须围绕最新 Issue CSV 执行;WDRG/WEGOV1 后企微优先 HR/考勤改造必须先读 [企微优先开发路线图](./企微优先开发路线图.md),再按单功能 Issue CSV 实施。企微成熟功能优先上线,OA 做自建留存、审计、入口、消息和应急兜底;采购、合同、报销、财务、AP、代账和高敏附件继续 OA 主办,ERP 未来不接入 OA。
**路线口径**:TRELLIS2 后,非微小开发默认围绕当前 Trellis task 执行;WDRG/WEGOV1 后企微优先 HR/考勤改造必须先读 [企微优先开发路线图](./企微优先开发路线图.md),再由当前或新建 Trellis task 明确单功能范围。企微成熟功能优先上线,OA 做自建留存、审计、入口、消息和应急兜底;采购、合同、报销、财务、AP、代账和高敏附件继续 OA 主办,ERP 未来不接入 OA。历史 Issue CSV 只作审计追溯或外部导出格式。
本文回答“一个变更怎么开始、怎么审查、什么时候提交、怎么交付”。测试细节以 [测试规约与回归门禁](./测试规约与回归门禁.md) 为准。
@@ -14,37 +14,37 @@
标准循环固定为:
`需求事实源 -> Issue CSV -> 方案批准 -> 开发实现 -> 自查 / review -> 测试回归 -> 状态回填 -> commit -> 部署准备 / 验收`
`需求事实源 -> Trellis task PRD -> 方案批准 -> 开发实现 -> 自查 / review -> 测试回归 -> 任务复盘 / docs 回填 -> commit -> 部署准备 / 验收`
不得跳过 Issue CSV 直接开发非微小变更。需求、方案或验收口径不清时,先澄清或补文档。
不得跳过 Trellis task 直接开发非微小变更。需求、方案或验收口径不清时,先澄清或补文档。
WDRG 后,企微优先 HR/考勤改造增加一层路线图门禁;WAPI/WRRA 后,运行优先和 WOUA 差异收口成为深度镜像前置:
`需求事实源 -> 设计门禁 -> 路线图门禁 -> 企微能力 POC -> 单功能 Issue CSV -> 方案批准 -> 开发实现 -> review -> QA 回归 -> 部署 / 公网验证`
`需求事实源 -> 设计门禁 -> 路线图门禁 -> 企微能力 POC -> 单功能 Trellis task -> 方案批准 -> 开发实现 -> review -> QA 回归 -> 部署 / 公网验证`
路线图只控制顺序、边界、准入和退出条件;具体接口、schema、页面、权限、审计和测试仍必须在单功能 Issue CSV 中声明。阶段未退出前不得跳阶段:WOUA-FIX 已完成测试账号差异收口,但 `PASS_WITH_FINDINGS` 的剩余缺字段/归档绑定不直接放行深度镜像;WRA1 已完成 `WECOM-RUNTIME-READY-V1` 的运行入口、OAuth/绑定、脱敏消息、通讯录、人事助手和打卡只读门禁修正;WMSG1 已完成真实应用消息和 Deeplink 确认。当前 `PASS_WITH_CONFIG_GAPS` 只表示运行优先主链路可用,WAPC1 只表示审批配置准备清单已固化;WAPC2 只证明请假/补卡模板详情和审批详情只读 runner 已具备。WAPC2FLIVE 已创建 OA-POC 请假/补卡测试样件并自动复跑 WAPC2 通过;WCBK1 已完成回调只读代码、synthetic 验签/解密/解析、真实 URL 验证和一条现有 OA-POC 测试审批单事件确认;WACP3R 已完成补偿拉取公网只读复跑,当时发现的回调证据未持久化已由 WARCH1 DB 回调事件承接;WREAD1 已完成请假/补卡真机可读性确认,结论 `PASS_READABLE`,同意单击风险进入后续设计。WEGOV1 后,WADM1/WARCH1/WARCH2 已完成模型设计、最小历史留存和正式只读查询;WROAD2+OPS 只做测试账号受控上线和每日巡检,完整审批镜像仍必须另建合同。
路线图只控制顺序、边界、准入和退出条件;具体接口、schema、页面、权限、审计和测试仍必须在当前 Trellis task 的 PRD、设计或实施说明中声明。阶段未退出前不得跳阶段:WOUA-FIX 已完成测试账号差异收口,但 `PASS_WITH_FINDINGS` 的剩余缺字段/归档绑定不直接放行深度镜像;WRA1 已完成 `WECOM-RUNTIME-READY-V1` 的运行入口、OAuth/绑定、脱敏消息、通讯录、人事助手和打卡只读门禁修正;WMSG1 已完成真实应用消息和 Deeplink 确认。当前 `PASS_WITH_CONFIG_GAPS` 只表示运行优先主链路可用,WAPC1 只表示审批配置准备清单已固化;WAPC2 只证明请假/补卡模板详情和审批详情只读 runner 已具备。WAPC2FLIVE 已创建 OA-POC 请假/补卡测试样件并自动复跑 WAPC2 通过;WCBK1 已完成回调只读代码、synthetic 验签/解密/解析、真实 URL 验证和一条现有 OA-POC 测试审批单事件确认;WACP3R 已完成补偿拉取公网只读复跑,当时发现的回调证据未持久化已由 WARCH1 DB 回调事件承接;WREAD1 已完成请假/补卡真机可读性确认,结论 `PASS_READABLE`,同意单击风险进入后续设计。WEGOV1 后,WADM1/WARCH1/WARCH2 已完成模型设计、最小历史留存和正式只读查询;WROAD2+OPS 只做测试账号受控上线和每日巡检,完整审批镜像仍必须另建 Trellis task。
## 2. Issue 生命周期
## 2. 执行合同生命周期
| 状态 | 含义 | 可进入条件 |
| --- | --- | --- |
| `TODO` | 已规划但未开始 | Issue CSV 校验通过 |
| `DOING` | 正在实现或验证 | 依赖 Issue 已满足,方案已批准 |
| `planning` / `TODO` | 已规划但未开始 | Trellis task PRD 和测试计划已明确 |
| `in_progress` / `DOING` | 正在实现或验证 | 依赖项已满足,方案已批准 |
| `DONE` | 对应阶段完成 | 有实际证据支撑,不靠口头判断 |
三列状态含义固定:
| 字段 | DONE 条件 |
| --- | --- |
| `Dev_Status` | 当前 Issue 范围内实现完成,基础静态检查或文档校验通过 |
| `Dev_Status` | 当前 Trellis task 范围内实现完成,基础静态检查或文档校验通过 |
| `Review1_Status` | 自查或 review 完成,权限、状态、数据、体验和漏测无阻断 |
| `Regression_Status` | `Test_Method` 通过,或按 SKIP 规则记录不可执行原因 |
如果回归失败,不能把 `Regression_Status` 标为 `DONE`。如果发现范围外缺口,记录到 Notes 或新 Issue。
如果回归失败,不能把 `Regression_Status` 标为 `DONE`。如果发现范围外缺口,记录到当前 Trellis task、相关事实源或新 Trellis task。
### 2.1 连续型 Issue 策略
### 2.1 历史连续治理流和 Trellis 承接策略
后续默认使用“少量长期连续合同 + 多行任务 + 阶段收口”,不再为每个小反馈、小链接修正或单点讨论新建 CSV。
后续默认使用“少量长期治理流 + Trellis task / 子任务 + 阶段收口”,不再为每个小反馈、小链接修正或单点讨论新建 CSV。
| 治理流 | 覆盖范围 | 进入条件 |
| --- | --- | --- |
@@ -55,19 +55,19 @@ WDRG 后,企微优先 HR/考勤改造增加一层路线图门禁;WAPI/WRRA
| `BIZ8` | OCR、票据、财务、费用、项目轻量增强 | 业务主链路增强,但不涉及 ERP 或重预算 |
| `QAOPS8` | 测试、发布、运维、上线准备 | 回归、门禁、备份、SLO、发布问题 |
连续型 Issue 规则:
连续治理流规则:
- 同类型、同目标、同风险域的问题进入同一个连续 CSV。
- 只有跨业务域、跨风险等级、跨里程碑,或当前治理流阶段性收口后,才新建下一版 CSV。
- 一个连续 CSV 内用领域前缀表达子类,例如 `GOV8-DOC-*`、`ORG8-PERM-*`、`WF8-NOTIFY-*`。
- 同类型、同目标、同风险域的问题进入同一个 Trellis task 或子任务。
- 只有跨业务域、跨风险等级、跨里程碑,或当前治理流阶段性收口后,才新建下一版 Trellis task。
- 历史连续 CSV 的领域前缀只用于追溯,例如 `GOV8-DOC-*`、`ORG8-PERM-*`、`WF8-NOTIFY-*`。
- 旧 Issue CSV 保留为历史审计证据,不删除、不批量回写、不移动到归档目录。
- 如果新治理流替代旧合同,只在新 CSV 的 `Notes` 或文档索引中说明 `supersedes`。
- 如果新治理流替代旧合同,只在新 Trellis task、文档索引或事实源矩阵中说明 `supersedes`。
- 当前可执行合同只在 `docs/文档索引.md` 和 `docs/文档事实源状态矩阵.md` 中暴露,避免主入口被历史 Issue 淹没。
- 文档类变更优先更新现有事实源、模块规约、操作手册、证据文档或当前连续 Issue CSV;只有现有文档无法承载、需要独立审计证据或用户明确要求时,才新建文档。
- 文档类变更优先更新现有事实源、模块规约、操作手册、证据文档或当前 Trellis task;只有现有文档无法承载、需要独立审计证据或用户明确要求时,才新建文档。
### 2.2 需求冻结和变更请求
非微小需求必须先进入需求事实源和当前同类型连续 CSV。需求冻结后,新增想法默认进入后续池;只有同时满足以下条件,才允许并入当前轮:
非微小需求必须先进入需求事实源和当前同类型 Trellis task。需求冻结后,新增想法默认进入后续池;只有同时满足以下条件,才允许并入当前轮:
- 不扩大当前治理流范围。
- 不改变已批准验收口径。
@@ -87,7 +87,7 @@ WDRG 后,企微优先 HR/考勤改造增加一层路线图门禁;WAPI/WRRA
### 2.3 路线图门禁和单功能合同
WDRG 后,企微优先 HR/考勤路线采用“路线图门禁 + 单功能 Issue CSV”:
WDRG 后,企微优先 HR/考勤路线采用“路线图门禁 + 单功能 Trellis task”:
| 层级 | 作用 | 不承担 |
| --- | --- | --- |
@@ -107,13 +107,13 @@ WDRG 后,企微优先 HR/考勤路线采用“路线图门禁 + 单功能 Issu
| 门禁 | 作用 | 退出口径 |
| --- | --- | --- |
| 路线门禁 | 决定阶段顺序、禁止跳过项和是否允许并行 | 最新路线图、PRD 和 Issue CSV 不冲突 |
| 路线门禁 | 决定阶段顺序、禁止跳过项和是否允许并行 | 最新路线图、PRD 和 Trellis task 不冲突 |
| 能力门禁 | 证明官方 API、Secret、权限、可信 IP、模板、回调和测试数据可用 | POC runner 返回 `PASS`、`NEEDS_CONFIG` 或真实 `SKIP/BLOCKED_BY_EXTERNAL_CONFIG` |
| 实现门禁 | 控制代码、单测、回归、公网验证、状态回填和提交 | `Test_Method` 通过或真实 SKIP,事实源和 Issue 状态已回写 |
| 实现门禁 | 控制代码、单测、回归、公网验证、状态回填和提交 | `Test_Method` 通过或真实 SKIP,事实源和 Trellis task 状态已回写 |
Definition of Ready:
- 已有 Issue CSV,且依赖项满足。
- 已有 Trellis task,且依赖项满足。
- 已读对应事实源、[企微优先开发路线图](./企微优先开发路线图.md) 和 [企微 API 能力目录](./企微API能力目录.md)。
- 明确做什么、不做什么、读写边界、Secret 来源和失败分类,不允许运行时猜 Secret。
- 明确测试账号、申请人、审批人和自审校验;审批类 POC 默认不得自己申请自己审批。
@@ -122,8 +122,8 @@ Definition of Ready:
Definition of Done:
- `Test_Method` 全部执行并真实通过,或按缺配置规则记录 `NEEDS_CONFIG` / `SKIP/BLOCKED_BY_EXTERNAL_CONFIG`。
- Issue 状态和 Notes 反映实际结果,不用口头判断代替证据。
- 文档事实源、索引、矩阵和必要 skill 已同步。
- Trellis task、文档事实源或证据记录反映实际结果,不用口头判断代替证据。
- 文档事实源、索引、矩阵和必要 spec 已同步。
- 本地门禁通过;面向公网或企微可测的能力已部署并通过 `/ready`、runtime smoke、public bundle scan 或对应 live runner。
- 已完成中文 commit,并在最终说明中区分“已部署”和“仅本地验证”。
@@ -151,26 +151,26 @@ WPROC2 后,三层门禁先由可执行 process gate 承接:
## 3. 开发边界
- 每次只做当前 Issue 范围内的事,不顺手重构无关模块。
- 每次只做当前 Trellis task 范围内的事,不顺手重构无关模块。
- 跨后端和前端的任务,先稳定后端 API / 数据契约,再接前端。
- 涉及权限、状态机、审批规则、财务状态、Prisma migration 的改动,必须写明回滚策略。
- 不在当前 MVP 首批范围内扩展预算、ERP、AI 自动处理、飞书、复杂 BPM 或重型项目管理;ERP 未来不接入 OA。企业微信原生审批只按 WFOC/DBWFOC/WFDG/WDRG 口径用于 HR/考勤员工日常审批优先复用,不迁移报销、财务、采购、合同、项目或高敏附件等 OA 主办流程。后续企微/OA 运行时迁移先做 `WECOM-CAPABILITY-POC-V1`,再按 [企微优先开发路线图](./企微优先开发路线图.md) 拆单功能 Issue CSV 开发。
- 不在当前 MVP 首批范围内扩展预算、ERP、AI 自动处理、飞书、复杂 BPM 或重型项目管理;ERP 未来不接入 OA。企业微信原生审批只按 WFOC/DBWFOC/WFDG 口径用于 HR/考勤员工日常审批优先复用,不迁移报销、财务、采购、合同、项目或高敏附件等 OA 主办流程。后续企微/OA 运行时迁移先做 `WECOM-CAPABILITY-POC-V1`,再按 [企微优先开发路线图](./企微优先开发路线图.md) 拆单功能 Trellis task 开发。
- 未经确认不得重置数据库、编辑迁移历史、修改生产配置、暴露真实密钥或处理真实敏感数据。
## 3.1 只读审计和排障边界
公网、数据库、日志和 MCP 排障默认按只读审计处理。需要生产数据核验、schema 比对、台账校验或线上排障时,先进入 `mode:audit-readonly` 或当前 Issue 的只读步骤,再确认工具边界。
公网、数据库、日志和 MCP 排障默认按只读审计处理。需要生产数据核验、schema 比对、台账校验或线上排障时,先进入 `mode:audit-readonly` 或当前 Trellis task 的只读步骤,再确认工具边界。
- MCP 工具目录以 `docs/mcp-tools.md` 为事实源;若该文件不存在或未声明可用工具,视为 MCP 未启用。
- PostgreSQL MCP 只能使用 `postgres:query` 做 `SELECT`、schema、计数、汇总和账本核验,且必须使用只读账号和最小权限连接串。
- 禁止通过排障工具执行 `INSERT`、`UPDATE`、`DELETE`、DDL、迁移、状态修复、配置改写或任何会改变业务数据的操作。
- 日志、截图、查询结果和人工记录只能保留摘要、时间、责任人、命令或证据路径;不得把真实密码、token、连接串、票据图片、身份证号、手机号等敏感字段写入仓库。
- 需要展示真实数据时先脱敏,只保留问题定位所需的最小字段;无法脱敏时只写结论和外部安全存放位置。
- 如果排障结论需要写库、修复数据或改生产配置,必须停止只读流程,另开或更新当前连续 Issue,补方案、回滚路径和人工确认后再执行。
- 如果排障结论需要写库、修复数据或改生产配置,必须停止只读流程,另开或更新当前 Trellis task,补方案、回滚路径和人工确认后再执行。
## 3.2 方案和计划模板
后续非微小变更在实施前必须至少给出以下轻量模板内容。模板可以写在回复、Issue CSV `Notes` 或对应规约中,但必须可审计。
后续非微小变更在实施前必须至少给出以下轻量模板内容。模板可以写在回复、当前 Trellis task 或对应规约中,但必须可审计。
### 需求整理模板
@@ -200,9 +200,9 @@ WPROC2 后,三层门禁先由可执行 process gate 承接:
| 字段 | 要求 |
| --- | --- |
| 治理流 | GOV8/R7E/ORG8/WF8/BIZ8/QAOPS8 |
| Issue 行 | 对应 CSV 行 ID |
| Trellis task | 对应 task 名称、子任务或历史追溯 ID |
| 文件范围 | `docs/`、`server/`、`client/`、`scripts/qa/` 等 |
| 依赖 | 前置 Issue 行和外部条件 |
| 依赖 | 前置 task、历史证据和外部条件 |
| 交接物 | 代码、文档、脚本、API 契约、测试证据 |
### 测试方案模板
@@ -223,7 +223,7 @@ WPROC2 后,三层门禁先由可执行 process gate 承接:
| 执行时机 | 开发前、后端后、前端后、review 前、回填前、commit 前 |
| 命令 | 可复现命令或人工步骤 |
| 环境 | 本地、公网匿名、带凭据、企业微信真机 |
| 证据路径 | artifacts、output、报告、Issue CSV Notes |
| 证据路径 | artifacts、output、报告、Trellis task notes |
| 负责人 | backend/frontend/qa/ops 或人工验收角色 |
| 阻断条件 | 哪些失败必须停止推进 |
@@ -245,31 +245,31 @@ Review 发现阻断问题时,先修复并重跑相关验证,再回填状态
## 5. 提交规则
一个 Issue 或一个清晰主题一个 commit。可以按以下粒度拆分:
一个 Trellis task 或一个清晰主题一个 commit。可以按以下粒度拆分:
- 文档和 Issue CSV。
- 文档和 Trellis task。
- 后端规则、接口和服务。
- 前端页面、入口和交互。
- 测试、回归脚本和视觉验证。
- 部署脚本或运行手册。
commit message 使用中文并引用 Issue ID,例如:
commit message 使用中文并引用 Trellis task 名称或任务 ID,例如:
```text
A4 收口企业微信入口与通知回 OA
A3 修复报销发票 OCR 主链路状态
A7 收口员工导航和备用模块护栏
trellis-governance-closeout 收口 Trellis-only 治理
oa-final-launch-readiness 收口最终启用门禁
wecom-runtime-ready 修复企微运行门禁
```
不建议把多个高风险 Issue 合成一个 commit。回归失败、状态未回填或工作区含无关改动时,不提交完成型 commit。
不建议把多个高风险任务合成一个 commit。回归失败、状态未回填或工作区含无关改动时,不提交完成型 commit。
## 6. 工作区规则
提交前必须检查:
- `git status --short` 只包含当前 Issue 或本次提交主题相关文件。
- `git status --short` 只包含当前 Trellis task 或本次提交主题相关文件。
- `git diff --check` 通过。
- Issue CSV 状态和 Notes 反映真实结果。
- Trellis task、事实源或证据记录反映真实结果。
- 未跟踪产物、截图、报告只在需要留证时保留;否则不混入 commit。
- 用户或其他流程产生的无关改动不得回退、覆盖或顺手提交。
@@ -298,7 +298,7 @@ A7 收口员工导航和备用模块护栏
每个开发类任务完成时,最终输出至少包含:
- 变更摘要。
- 关联 Issue ID。
- 关联 Trellis task 名称或任务 ID。
- 验证命令和结果。
- 是否提交 commit,commit hash。
- 是否部署,公网和真机是否可测。
@@ -309,7 +309,7 @@ A7 收口员工导航和备用模块护栏
## 9. 与其他文档的关系
- `docs/海音达OA-MVP需求规格说明书.md` 定义开发项目流程和 MVP 业务目标。
- `issues/*.csv` 是每轮执行合同。
- `issues/*.csv` 是历史审计材料或可选外部导出格式,不再是新任务默认执行合同。
- `docs/测试规约与回归门禁.md` 定义测试、视觉验证和回归门禁。
- `docs/试运行与自动化验证手册.md` 定义本地、公网、企业微信和真实 OCR 的操作步骤。
- `AGENTS.md` 定义不可违反的执行硬约束。
+11 -11
查看文件
@@ -35,7 +35,7 @@
| `WF8` | `issues/2026-05-13_18-23-52-wf8-approval-notification.csv` | `EVIDENCE` | 审批与通知增强已阶段收口;deeplink 过期修复已部署并经代表设备真机点击回 OA 验证 |
| `BIZ8` | `issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv` | `EVIDENCE` | 报销/OCR/财务/项目轻量增强已阶段收口;财务移动入口真机通过,财务/项目权限回归完成,付款批次延期到 P2 |
| `QAOPS8` | `issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv` | `EVIDENCE` | Go/No-Go 与上线硬化阶段收口已完成;后续硬化另起 QAOPS9 或等价连续合同 |
| `FBA` | `issues/2026-05-15_23-45-41-r7e-post-function-boundary-audit.csv` | `EVIDENCE` | R7E 后全端功能边界审计和后续 Issue 草案;不启动 P2 功能开发 |
| `FBA` | `issues/2026-05-15_23-45-41-r7e-post-function-boundary-audit.csv` | `EVIDENCE` | R7E 后全端功能边界审计和后续候选草案;不启动 P2 功能开发 |
| `QAOPS9` | `issues/2026-05-16_00-19-20-qaops9-release-hardening.csv` | `EVIDENCE` | R7E 后上线硬化连续合同已收口;核心业务流、live smoke、真实 OCR、移动矩阵和恢复演练 dry-run 均有证据,未部署新 commit |
| `P2D` | `issues/2026-05-16_00-19-21-p2-decision-followup.csv` | `EVIDENCE` | P2 功能决策分流已完成:`P2-ORG` 只读巡检可进独立合同,其余 P2 候选保持 `HOLD_FOR_PREREQ`,冻结项继续冻结 |
| `P2-ORG` | `issues/2026-05-16_02-04-27-p2-org-readonly-master-data-audit.csv` | `EVIDENCE` | 组织账号主数据只读巡检已完成;当前连接数据源高/中风险为 0,仅有低风险观察项,不需要写修复合同 |
@@ -64,7 +64,7 @@
| `WFOC` | `issues/2026-05-18_10-25-18-wecom-first-oa-continuity-requirements.csv` | `EVIDENCE` | 企微优先 + OA 无痛接管需求重构已收口;其中“HR/考勤/行政审批企微优先”和“完整镜像”宽口径已由 DBWFOC 收窄为 HR/考勤员工日常审批优先和按域镜像 |
| `DBWFOC` | `issues/2026-05-18_11-35-39-data-boundary-wfoc-revision.csv` | `EVIDENCE` | 企微能力参考 + OA 主办数据边界修正已收口;HR/考勤员工日常审批企微优先,采购/合同/财务等 OA 主办高敏业务不进入企微原生审批或企微附件 |
| `WFDG` | `issues/2026-05-18_12-21-01-wecom-first-design-gate.csv` | `EVIDENCE` | 企微优先设计规约门禁已收口:固定主办方与数据边界矩阵、入口交互、隐私附件消息、同步审计失败处理、应急接管、恢复回写、RuleOps 和 `WECOM-CAPABILITY-POC-V1` 验收口径 |
| `WDRG` | `issues/2026-05-18_12-44-10-wecom-development-roadmap-gate.csv` | `EVIDENCE` | 企微优先开发路线图门禁已收口:固定路线图门禁、单功能 Issue CSV 节奏、阶段顺序、并行规则和下一轮 POC 合同口径 |
| `WDRG` | `issues/2026-05-18_12-44-10-wecom-development-roadmap-gate.csv` | `EVIDENCE` | 企微优先开发路线图门禁已收口:固定路线图门禁、单功能合同节奏、阶段顺序、并行规则和下一轮 POC 合同口径;TRELLIS2 后由 Trellis task 承接 |
| `WCP1` | `issues/2026-05-18_13-30-07-wecom-capability-poc-v1.csv` | `EVIDENCE` | 企业微信能力 POC 已完成,历史结论 `PAUSE_FOR_CONFIG`;初始配置缺口已由 WCPC 复跑收口 |
| `WCPC` | `issues/2026-05-18_15-01-23-wecom-capability-poc-config-closeout-v1.csv` | `EVIDENCE` | WCP1 配置收口已用既有在职测试号复跑通过,结论 `GO_TO_HR_MASTER_SYNC`,已由 WHMS 承接 |
| `WHMS` | `issues/2026-05-18_18-43-19-wecom-hr-master-sync-v1.csv` | `CURRENT` | 企微 HR 主数据镜像已实现:`wecom_hr_master_sync_v1`、同步批次/逐员工记录、dry-run/apply、管理员 API、People 管理入口和 QA-only runner;默认 `force_off`,不代表考勤/审批镜像已完成 |
@@ -130,12 +130,12 @@
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| `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、每日巡检、阻断即修和冻结项事实 |
| `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` | Issue CSV | `docs/requirements-specification.md` | 2026-05-20 | `rg` | high | WARCH3/WCHECK1/WEXT1/WOPS1 后定义 HR/考勤企微主办、OA 自建留存、受控测试域、只读历史查询、自动巡检、打卡摘要、外出/加班 dry-run、WEXT1-FORMAL、WREAL1 前置和深度镜像边界;ERP 未来不接入 OA |
| `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` | design/frontend | `MIA7,MIF7,GOV8,DG8,DG9,WFDG` | Playwright/视觉审查/DG8/DG9/WFDG | none | 2026-05-18 | `rg` | high | 页面改动必须读取;DG8 后飞书为主 UI/布局参考;DG9 后按页面分层和样板选型;WFDG 后区分 OA 主办、企微镜像和 OA 应急接管 |
| `ROADMAP-WECOM` | `docs/企微优先开发路线图.md` | 开发治理 | 企微优先开发路线图事实源 | `CURRENT` | product/dev | `WDRG,WCP1,WCPC,WHMS,WHMSLIVE,WOUA,WAPI,WRRA,WOUAFIX,WRV1,WRA1,WMSG1,WAPC1,WAPC2,WPROC1,WPROC2,WAPC2F,WAPC2FLIVE,WCBK1,WEGOV1,WACP3,WACP3R,WREAD1,WREAD1F,WADM1,WARCH1,WARCH2,WROAD2,WARCH3,WCHECK1,WEXT1,WOPS1,WROAD2C,WROAD2B,WAPPR1,WRULE1,WAUTO1,WEXT1LD,WFULLSMOKE1,WROUTE2,WTCLOSE1,WTCLOSE2,WREAL1P` | Issue CSV | none | 2026-05-22 | `rg` | high | WAUTO1/WEXT1LD/WFULLSMOKE1/WTCLOSE1/WTCLOSE2 后固定最小审批历史留存、正式只读历史查询、受控上线自动巡检、三天业务冒烟、审批规则规范化、审批链校验、自动证据汇总、全域最终目标测试、小团队一层审批 + 管理员兜底、测试号最终收口、告警降噪、打卡摘要、外出/加班 dry-run、live 前 dry-run gate、WEXT1-FORMAL 前置和真实试用准备;仍禁止直接进入深度镜像 |
| `WECOM-API-CATALOG` | `docs/企微API能力目录.md` | 集成事实源 | 企微 API 能力目录和 Secret 矩阵事实源 | `CURRENT` | product/backend/qa | `WAPI,WRRA,WAPC1,WAPC2,WPROC1,WPROC2,WAPC2F,WAPC2FLIVE,WCBK1,WEGOV1,WACP3,WACP3R,WREAD1,WADM1,WARCH1,WARCH2,WROAD2,WARCH3,WCHECK1,WEXT1,WAPPR1,WTCLOSE1,WRULE1,WTCLOSE2` | 官方企业微信开发者中心链接/Issue CSV | none | 2026-05-22 | `rg` | high | 企微开发先读;只保存摘要、链接和项目决策,不保存 Secret、token、完整 userid、手机号、邮箱或原始 payload;记录审批补偿、打卡摘要、巡检只写 OA 留存、不写企业微信、企微原生审批规则不可只读 API 化、需人工门禁,以及 WRULE1/WTCLOSE2 只读审批链校验和最终收口边界 |
| `DELIVERY` | `docs/开发交付与变更管理规约.md` | 开发治理 | 开发交付事实源 | `CURRENT` | dev/qa | `GOV8,WDRG,WRRA,WAPC1,WPROC1,WPROC2,WCBK1,WEGOV1,WOPS1,WROAD2C,WROAD2B,WAPPR1,WAUTO1,WEXT1LD,WFULLSMOKE1` | `rg` | none | 2026-05-20 | `rg` | high | Issue、review、commit、交付规则;WFULLSMOKE1 后固定 WAUTO1、WEXT1LD、全域最终目标测试和 WEXT1-FORMAL/WREAL1 前置门禁 |
| `ROADMAP-WECOM` | `docs/企微优先开发路线图.md` | 开发治理 | 企微优先开发路线图事实源 | `CURRENT` | product/dev | `WDRG,WCP1,WCPC,WHMS,WHMSLIVE,WOUA,WAPI,WRRA,WOUAFIX,WRV1,WRA1,WMSG1,WAPC1,WAPC2,WPROC1,WPROC2,WAPC2F,WAPC2FLIVE,WCBK1,WEGOV1,WACP3,WACP3R,WREAD1,WREAD1F,WADM1,WARCH1,WARCH2,WROAD2,WARCH3,WCHECK1,WEXT1,WOPS1,WROAD2C,WROAD2B,WAPPR1,WRULE1,WAUTO1,WEXT1LD,WFULLSMOKE1,WROUTE2,WTCLOSE1,WTCLOSE2,WREAL1P` | Trellis task / 历史 Issue CSV | none | 2026-05-26 | `rg` | high | WAUTO1/WEXT1LD/WFULLSMOKE1/WTCLOSE1/WTCLOSE2 后固定最小审批历史留存、正式只读历史查询、受控上线自动巡检、三天业务冒烟、审批规则规范化、审批链校验、自动证据汇总、全域最终目标测试、小团队一层审批 + 管理员兜底、测试号最终收口、告警降噪、打卡摘要、外出/加班 dry-run、live 前 dry-run gate、WEXT1-FORMAL 前置和真实试用准备;仍禁止直接进入深度镜像 |
| `WECOM-API-CATALOG` | `docs/企微API能力目录.md` | 集成事实源 | 企微 API 能力目录和 Secret 矩阵事实源 | `CURRENT` | product/backend/qa | `WAPI,WRRA,WAPC1,WAPC2,WPROC1,WPROC2,WAPC2F,WAPC2FLIVE,WCBK1,WEGOV1,WACP3,WACP3R,WREAD1,WADM1,WARCH1,WARCH2,WROAD2,WARCH3,WCHECK1,WEXT1,WAPPR1,WTCLOSE1,WRULE1,WTCLOSE2` | 官方企业微信开发者中心链接 / Trellis task / 历史 Issue CSV | none | 2026-05-26 | `rg` | high | 企微开发先读;只保存摘要、链接和项目决策,不保存 Secret、token、完整 userid、手机号、邮箱或原始 payload;记录审批补偿、打卡摘要、巡检只写 OA 留存、不写企业微信、企微原生审批规则不可只读 API 化、需人工门禁,以及 WRULE1/WTCLOSE2 只读审批链校验和最终收口边界 |
| `DELIVERY` | `docs/开发交付与变更管理规约.md` | 开发治理 | 开发交付事实源 | `CURRENT` | dev/qa | `GOV8,WDRG,WRRA,WAPC1,WPROC1,WPROC2,WCBK1,WEGOV1,WOPS1,WROAD2C,WROAD2B,WAPPR1,WAUTO1,WEXT1LD,WFULLSMOKE1,TRELLIS2` | `rg` | none | 2026-05-26 | `rg` | high | Trellis task、review、commit、交付规则;WFULLSMOKE1 后固定 WAUTO1、WEXT1LD、全域最终目标测试和 WEXT1-FORMAL/WREAL1 前置门禁 |
| `QA-GATE` | `docs/测试规约与回归门禁.md` | 测试验收 | 测试和回归门禁事实源 | `CURRENT` | qa | `QAF8,GOV8,WPROC1,WPROC2,WAPC2FLIVE,WCBK1,WEGOV1` | 回归脚本/Playwright | none | 2026-05-19 | `rg` | high | 测试计划、DONE 门禁、企微三层门禁、自动化优先、非自审、无完整 sandbox 假设、WREAD1 真机可读性和 WARCH1 留存验收门禁 |
| `AGENT-PRACTICE` | `docs/Agent开发交付实践.md` | Agent 治理 | Agent 协作事实源 | `CURRENT` | dev | `GOV8,DG8,TRELLIS2` | Trellis governance check | none | 2026-05-26 | `rg` | medium | Agent 协作开发实践、设计主参考层级和 TRELLIS2 官方 task-first 执行合同口径 |
| `AGENTS` | `AGENTS.md` | 执行硬约束 | 项目硬规则 | `CURRENT` | lead | `GOV8` | 人工核对 | none | 2026-05-13 | `rg` | high | 不可违反约束 |
@@ -144,15 +144,15 @@
| `REQ-WF` | `docs/需求-统一审批中心规约.md` | 需求事实源 | 审批模块规约 | `CURRENT` | product/backend | `AP6,WF8,WFOC,DBWFOC,WFDG,WOUA,WAPI,WRRA,WRV1,WRA1,WMSG1,WAPC1,WAPC2,WPROC1,WPROC2,WAPC2F,WAPC2FLIVE,WCBK1,WEGOV1,WACP3,WACP3R,WREAD1,WREAD1F,WADM1,WARCH1,WAPPR1,WAUTO1,WEXT1LD,WFULLSMOKE1,WTCLOSE1,WRULE1,WTCLOSE2,OAFLOW1` | workflow 回归 | none | 2026-05-24 | `rg` | high | OA 主办审批、企微主办 HR/考勤审批、OA 自建留存、真实回调事件证据、WACP3R 补偿拉取 findings、WREAD1 请假/补卡真机可读性结论、WARCH1 最小历史留存、WAPPR1 审批规则规范化和 API 不支持读取规则边界、WTCLOSE1 小团队一层审批 + 管理员兜底目标 A、WRULE1 理论审批人与实际审批链校验、WTCLOSE2 测试号最终收口、OAFLOW1 负责人本人报销兜底、WAUTO1/WEXT1LD/WFULLSMOKE1 前置和 OA 应急接管边界 |
| `REQ-OCR` | `docs/需求-报销发票OCR规约.md` | 需求事实源 | OCR 模块规约 | `CURRENT` | product/backend | `RI6,OCR8,BIZ8` | OCR 回归 | none | 2026-05-13 | `rg` | high | OCR 和发票边界 |
| `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/真机反馈/Issue CSV | none | 2026-05-22 | `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` | Issue CSV / 本地门禁 | none | 2026-05-24 | `rg` | high | 固定资产和电子资产统一台账;编号族 `FA/EA-DOC/EA-SYS/EA-REPO/EA-BKP`;`EA-ACC` 暂缓;Git 管源码,OA 只登记仓库元数据;OPOLICY1 后固定资料留存、备份资产、账号凭据禁入和 P2 冻结边界 |
| `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 验证 |
| `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 执行状态 |
| `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-15 | `rg` | medium | 只作为功能边界、P2 候选和 Issue 草案证据,不直接派工 |
| `FBA-AUDIT` | `docs/trialrun/R7E后功能边界审计.md` | 证据材料 | R7E 后功能边界审计 | `EVIDENCE` | product/dev/qa | `FBA,R7E,QAOPS8,P2T` | 历史 Issue CSV | none | 2026-05-26 | `rg` | medium | 只作为功能边界、P2 候选和后续候选草案证据,不直接派工 |
| `HISTORY-MATRIX` | `docs/历史功能状态矩阵.md` | 历史材料 | 历史功能索引 | `HISTORICAL` | product | `DCL7` | git 历史 | none | 2026-05-13 | `rg` | low | 只追溯历史 |
| `OLD-IMPL-PLAN` | `docs/implementation_plan.md` | 已移除历史 | 早期实施计划 | `REMOVED` | product | `DCL7` | git history | none | 2026-05-13 | manual | low | 从 git 历史恢复 |
@@ -203,11 +203,11 @@
| `docs/trialrun/R7用户手册与FAQ.md` | 草案 | 不承诺未实现能力 |
| `docs/历史功能状态矩阵.md` | 历史证据 | 轻量索引,旧大表从 git 历史恢复 |
| `docs/trialrun/人工试运行报告.md` | 历史证据 | R6 后状态摘要和关键证据索引 |
| `docs/trialrun/R7E后功能边界审计.md` | 当前证据 | R7E 后全端功能边界、P2 候选和 Issue 草案 |
| `docs/trialrun/R7E后功能边界审计.md` | 当前证据 | R7E 后全端功能边界、P2 候选和后续候选草案 |
| `docs/trialrun/试运行覆盖矩阵.csv` | 历史证据 | 轻量覆盖摘要 |
| `docs/trialrun/项目级流程覆盖矩阵.csv` | QA 参考 | `check-flow-coverage` 使用 |
| `docs/trialrun/权限直连审计记录.md` | 当前证据 | 权限直连审计 |
| `docs/trialrun/移动信息架构视觉流程审查.md` | 当前证据 | MIA7 审查结论;MIF7/MIF7T 收口以最新 Issue CSV 和人工试运行报告为准 |
| `docs/trialrun/移动信息架构视觉流程审查.md` | 当前证据 | MIA7 审查结论;MIF7/MIF7T 收口以当前事实源和人工试运行报告为准 |
## 技术参考
+11 -11
查看文件
@@ -14,7 +14,7 @@
- 判断历史证据:读轻量历史索引,必要时用 `git show <commit>:<old-path>` 恢复旧文档。
- 判断冲突:当前 Trellis task PRD/设计 > 当前 PRD/模块规约 > 设计和产品规则 > 当前操作手册 > 技术参考 > 历史证据。
- 英文文件名只在技术生态或脚本强引用时保留,例如 `docs/mcp-tools.md`。
- 判断当前可执行任务:先读当前 Trellis task;旧 Issue CSV 默认是历史审计证据。
- 判断当前可执行任务:先读当前 Trellis task;旧 Issue CSV 只作历史审计证据。
- 新需求或试运行反馈:优先创建或更新当前同类型 Trellis task;只有跨业务域、跨风险等级或阶段收口后,才新建下一版 task。
- 新增说明、方案、审计或证据:优先补充现有事实源、模块规约、操作手册、证据文档或当前 Trellis task;只有现有文档无法承载、需要独立审计证据或用户明确要求时,才新建文档并登记本索引和事实源矩阵。
@@ -29,7 +29,7 @@ R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> M
- DG8 已完成设计治理主参考系统收口:飞书工作台/飞书审批是唯一主 UI/布局参考;本结论只更新设计事实源,不代表已做页面整改。
- DG9 承接 DG8 后的页面整改:按 A/B/C 页面分层和 DG9 样板统一 PC、移动和企业微信入口布局;最新代码已作为 R7E 试运行基线部署到公网,不替代 WF8、UX8 或 BIZ8 业务验收。
- R7E 阶段验收、P2 排序和 QAOPS8 上线硬化阶段收口已完成,当前 P0/P1 阻断为 0;后续 P2 功能开发必须另建或延续对应连续合同。
- FBA 是 R7E 后全端功能边界审计,只提供证据和 Issue 草案,不启动 P2 功能开发。
- FBA 是 R7E 后全端功能边界审计,只提供证据和后续候选草案,不启动 P2 功能开发。
- QAOPS9 是 R7E 后上线硬化连续合同,优先处理公网业务流测试数据、live smoke 账号链路、恢复演练 dry-run 和 SLO/Go-No-Go 自动化增强;隔离本地业务流可使用临时库和测试开关,公网证据必须保持 flag-off 或 SKIP 可解释;不部署、不执行生产恢复、不重置数据库、不打印远端 env。
- P2D 是 P2 功能决策合同,只决定组织主数据、付款批次、图片 OCR、UX8、审批通知和轻业务增强是否进入独立开发合同;统一使用 `GO_TO_CONTRACT`、`HOLD_FOR_PREREQ`、`FREEZE` 三类结论,不新增 API/schema、feature flag 或前端功能。
- P2-ORG 是 P2D 后第一个执行合同,已完成组织账号主数据只读巡检;当前连接数据源下高/中风险为 0,低风险观察项为 CEO/root 无直属主管 1 和 active 员工无企业微信绑定 8;本轮不需要写修复合同。
@@ -58,7 +58,7 @@ R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> M
- WFOC 是企微优先 + OA 无痛接管需求重构合同:用户已确认优先复用企业微信成熟能力,OA 做镜像、人工接管、恢复回写、财务闭环和审计中台;其“HR/考勤/行政审批”和“完整镜像”宽口径已由 DBWFOC 修正为 HR/考勤员工日常审批和按域镜像。本轮只冻结需求和事实源,不改业务代码、不部署、不切换公网配置;后续实现需拆 `wecom_hr_master_sync_v1`、`wecom_native_approval_mirror_v1`、`oa_hr_emergency_mode_v1`、`wecom_recovery_writeback_v1`、`wecom_ruleops_v1`。
- DBWFOC 是 WFOC 后的数据边界修正合同:将“企微优先”收窄为 HR/考勤员工日常审批优先,采购、费用、合同、项目、报销、付款、AP、代账交接、审计和高敏附件继续 OA 主办;企业微信成熟功能可作为流程/字段/交互/规则参考,OA 主办审批只向企业微信发送脱敏提醒和 OA deeplink,不上传高敏附件到企微原生审批。
- WFDG 是 DBWFOC 后的设计规约门禁合同:固定后续开发前必须先判定主办方、主事实源、操作端、镜像方向、附件归属和审计责任;PC/移动页面需区分 `OA 主办`、`企微镜像` 和 `OA 应急接管`;下一轮进入 `WECOM-CAPABILITY-POC-V1`,输出 `CAN_REUSE_NOW`、`NEEDS_CONFIG`、`NEEDS_API_POC`、`KEEP_OA_PRIMARY`、`NOT_SUPPORTED_BY_API` 能力矩阵。本轮不改业务代码、不部署、不调用生产写接口。
- WDRG 是 WFDG 后的开发路线图门禁合同:新增 [企微优先开发路线图](./企微优先开发路线图.md),固定“路线图门禁 + 单功能 Issue CSV”的开发节奏和阶段顺序;其下一步 `WECOM-CAPABILITY-POC-V1` 已由 WCP1/WCPC 执行并收口,HR 主数据镜像已由 WHMS/WHMSLIVE 实现并部署验证,不得跳过阶段直接开发考勤/审批镜像、OA 应急接管、恢复回写或 RuleOps。
- WDRG 是 WFDG 后的开发路线图门禁合同:新增 [企微优先开发路线图](./企微优先开发路线图.md),固定“路线图门禁 + 单功能合同”的开发节奏和阶段顺序;其下一步 `WECOM-CAPABILITY-POC-V1` 已由 WCP1/WCPC 执行并收口,HR 主数据镜像已由 WHMS/WHMSLIVE 实现并部署验证,不得跳过阶段直接开发考勤/审批镜像、OA 应急接管、恢复回写或 RuleOps。TRELLIS2 后单功能合同由 Trellis task 承接。
- WCP1 是 WDRG 后的企业微信能力 POC 合同:新增 QA-only 只读 runner `scripts/qa/check-wecom-capability-poc.mjs`,对人事助手、通讯录、打卡、审批、假期余额、回调和权限配置输出脱敏能力矩阵。远端 live 只读历史结论为 `PAUSE_FOR_CONFIG`,作为初始配置缺口证据保留;当前 HR 主数据镜像准入以 WCPC 复跑结论为准。
- WCPC 是 WCP1 后的配置收口合同:已使用既有在职低风险测试号 `SMOKE002/测试员工`(报告只记录 `oa_smoke***`)完成远端只读复跑,报告 `/tmp/wecom-capability-poc-wcpc-smoke002/summary.json`,结论 `GO_TO_HR_MASTER_SYNC`。WHMS 已承接该准入结论;审批模板 ID、审批单号 `sp_no`、真实回调配置和 HR 写接口仍需后续独立合同处理。
- WHMS/WHMSLIVE 是 WCPC 后的企微 HR 主数据镜像合同和部署验证合同:已实现并部署 `wecom_hr_master_sync_v1`、企微/人事助手读取服务、dry-run/apply、同步批次/逐员工记录、People 管理入口和 QA-only runner;公网对 `SMOKE002`(脱敏 `oa_smoke***`)完成 dry-run/apply 管道验证,缺手机号、邮箱和部门按 `missing_required_field` 跳过;权限负例 403;最终 `force_off`,未执行生产真实员工批量 apply。WAPI 后其读取口径被修正为通讯录 `user/list_id` + 人事助手 `get_staff_info`,不再用运行时 Secret fallback。
@@ -96,7 +96,7 @@ R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> M
| `WF8` | `issues/2026-05-13_18-23-52-wf8-approval-notification.csv` | 已收口:deeplink 修复已部署并经代表设备真机点击回 OA 验证 | 转审、通知、催办、邮件通道决策、三渠道验收 | 不做复杂 BPM 或审批设计器;通知模板和偏好设置延期到 P2 |
| `BIZ8` | `issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv` | 已收口:财务移动入口真机通过,财务/项目权限回归完成 | OCR、票据、财务、费用提示、项目关联 | 不做 ERP 实时集成或重预算;付款批次延期到 P2 |
| `QAOPS8` | `issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv` | 已收口:Go/No-Go 与上线硬化阶段分流完成 | 回归稳定、测试覆盖、上线门禁、备份恢复、SLO | 不改业务需求;后续硬化另起 QAOPS9 或等价连续合同 |
| `FBA` | `issues/2026-05-15_23-45-41-r7e-post-function-boundary-audit.csv` | 已收口:R7E 后全端功能边界审计和后续 Issue 草案 | PC、移动/企业微信、后端 API/作业、管理/运维边界审计 | 不改业务代码、不改 API/schema、不部署、不启动 P2 |
| `FBA` | `issues/2026-05-15_23-45-41-r7e-post-function-boundary-audit.csv` | 已收口:R7E 后全端功能边界审计和后续候选草案 | PC、移动/企业微信、后端 API/作业、管理/运维边界审计 | 不改业务代码、不改 API/schema、不部署、不启动 P2 |
| `QAOPS9` | `issues/2026-05-16_00-19-20-qaops9-release-hardening.csv` | 已收口:上线硬化证据完成 | 公网业务流测试数据稳定化、live smoke 账号链路、恢复演练 dry-run、SLO/Go-No-Go 自动化增强;隔离业务流与公网 flag-off 证据分离 | 不改业务需求、不部署、不执行生产恢复、不重置数据库、不打印远端 env |
| `P2D` | `issues/2026-05-16_00-19-21-p2-decision-followup.csv` | 已收口:P2 决策分流完成 | `P2-ORG` 只读巡检进入独立合同;付款批次、图片 OCR、UX8、审批通知、轻业务增强均 `HOLD_FOR_PREREQ`;冻结 ERP/AI/完整差旅/复杂 BPM/审批设计器/重预算/企业微信原生审批 | 不新增 API/schema/feature flag/UI;不启用付款批次或图片 OCR |
| `P2-ORG` | `issues/2026-05-16_02-04-27-p2-org-readonly-master-data-audit.csv` | 已收口:组织主数据只读巡检完成 | 主管链、停用审批人、角色持有人、admin-only、财务/admin 混授、企业微信绑定漂移的脱敏只读审计 | 不写生产账号数据、不执行 P2-ORG-FIX、不改 API/schema/UI、不部署 |
@@ -125,7 +125,7 @@ R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> M
| `WFOC` | `issues/2026-05-18_10-25-18-wecom-first-oa-continuity-requirements.csv` | 已收口:企微优先 + OA 无痛接管需求重构 | 原宽口径已由 DBWFOC 修正:HR/考勤员工日常审批企微优先,OA 按域镜像、人工接管、恢复回写、RuleOps 和财务主办边界;PRD、模块规约、手册、索引和事实源矩阵已回写 | 不改业务代码、不新增 API/schema/UI、不部署、不改公网配置;不代表镜像、接管或回写运行时已完成 |
| `DBWFOC` | `issues/2026-05-18_11-35-39-data-boundary-wfoc-revision.csv` | 已收口:企微能力参考 + OA 主办数据边界修正 | HR/考勤员工日常审批企微优先;采购、费用、合同、项目、报销、付款、AP、代账交接和高敏附件继续 OA 主办;企业微信只做成熟能力参考、脱敏消息和 OA deeplink | 不改业务代码、不新增 API/schema/UI、不部署、不改公网配置;不把 OA 主办域全量镜像到企微 |
| `WFDG` | `issues/2026-05-18_12-21-01-wecom-first-design-gate.csv` | 已收口:企微优先设计规约门禁完成,结论 `DONE_DESIGN_READY` | 固定主办方/数据边界矩阵、入口与交互规约、隐私附件消息规约、同步审计失败处理、应急接管、恢复回写、RuleOps 和下一轮 POC 验收口径 | 不改业务代码、不新增 API/schema/UI、不部署、不改公网配置、不调用生产写接口;不代表运行时迁移已完成 |
| `WDRG` | `issues/2026-05-18_12-44-10-wecom-development-roadmap-gate.csv` | 已收口:企微优先开发路线图门禁 | 固定路线图门禁、阶段顺序、单功能 Issue CSV 节奏、并行规则和下一轮 POC 合同口径 | 不改业务代码、不新增 API/schema/UI、不部署、不改公网配置、不调用公网写接口;不代表任何运行时迁移已完成 |
| `WDRG` | `issues/2026-05-18_12-44-10-wecom-development-roadmap-gate.csv` | 已收口:企微优先开发路线图门禁 | 固定路线图门禁、阶段顺序、单功能合同节奏、并行规则和下一轮 POC 合同口径;TRELLIS2 后由 Trellis task 承接 | 不改业务代码、不新增 API/schema/UI、不部署、不改公网配置、不调用公网写接口;不代表任何运行时迁移已完成 |
| `WCP1` | `issues/2026-05-18_13-30-07-wecom-capability-poc-v1.csv` | 已收口:企业微信能力 POC 已完成,历史结论 `PAUSE_FOR_CONFIG` | QA-only 只读探测人事助手、通讯录、打卡、审批、假期余额、回调和权限配置;输出能力矩阵和配置阻断清单 | 不改业务代码、不新增 API/schema/UI、不部署、不调用生产写接口;初始阻断已由 WCPC 复跑收口 |
| `WCPC` | `issues/2026-05-18_15-01-23-wecom-capability-poc-config-closeout-v1.csv` | 已收口:既有测试号 POC 复跑通过 | 使用 `SMOKE002/测试员工`(脱敏 `oa_smoke***`)完成远端只读复跑,结论 `GO_TO_HR_MASTER_SYNC`,已由 WHMS 承接 | 不开发业务功能、不部署、不持久改服务器 env;考勤/审批镜像仍需后续补审批模板、审批单和回调配置 |
| `WHMS` | `issues/2026-05-18_18-43-19-wecom-hr-master-sync-v1.csv` | 已实现:企微 HR 主数据镜像 | 新增 `wecom_hr_master_sync_v1`、Prisma 同步批次/逐员工记录、企微通讯录/人事助手读取、dry-run/apply、管理员 API、People 管理卡片和 QA-only runner | 默认 `force_off`;不做考勤/审批镜像、审批回调、应急接管、恢复回写或 RuleOps |
@@ -148,13 +148,13 @@ R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> M
| `WACP3/WACP3R` | `issues/2026-05-19_19-03-06-wecom-approval-compensation-pull-poc-v1.csv`、`issues/2026-05-19_19-42-22-wecom-approval-compensation-config-rerun-v1.csv` | 当前补偿拉取 POC:runner 已部署并自动发现模板复跑 | 新增 `check:wecom-approval-compensation-poc`,固定 `WECOM_AGENT_SECRET` 只读调用 `getapprovalinfo` 和 `getapprovaldetail`;WACP3R 按 `SMOKE002` creator 自动发现 OA-POC 请假/补卡模板,远端报告为 `PASS_WITH_FINDINGS`,当时 finding 为回调证据文件未持久化,已由 WARCH1 DB 回调事件承接 | 不新增公开 API/schema/UI;不写 OA/企微数据;不保存完整模板 ID;不无过滤拉取高风险审批详情;不进入深度镜像 |
| `WREAD1` | `issues/2026-05-19_20-39-40-wecom-approval-readability-gate-v1.csv` | 当前可读性门禁:请假/补卡真机确认已通过 | 新增 `check:wecom-approval-readability-gate`,只读汇总请假/补卡 OA-POC 证据;用户确认两类模板消息卡片、列表和详情页均可看清,远端报告 `/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T133628Z/summary.json` 为 `PASS_READABLE` | 不新增公开 API/schema/UI;不写 OA/企微业务数据;同意单击即通过已进入 WADM1/WARCH1 审计设计;仍不得直接做深度镜像 |
| `WREAD1F` | `issues/2026-05-19_21-15-47-wecom-readability-fresh-fixture-v1.csv` | 当前真机确认补充:已生成新 OA-POC 样例并支撑 WREAD1 收口 | 用户选择重新生成后,修正模板名唯一性并公网 live 创建新的请假/补卡测试模板和两条审批单;报告 `/app/artifacts/qa-flow/wecom-approval-fixtures-20260519T131958Z/summary.json` 为 `PASS_FIXTURE_CREATED`,最终 WREAD1 人工报告为 `PASS_READABLE` | 写入仅限 OA-POC 测试模板和低风险审批单;不写 OA 业务表;不进入镜像;新样例保留审计 |
| `WADM1` | `issues/2026-05-19_21-55-33-wecom-archive-mirror-data-model-design-v1.csv` | 当前模型设计:企微自建留存/镜像数据模型已固化 | 固定审批留存、回调事件、补偿拉取、对账 finding、打卡/人事快照边界、隐私权限和 WARCH1 最小实现切片;已由 WARCH1 承接实现请假/补卡最小历史留存 | docs-only;不改 Prisma schema、不部署、不写 OA/企微业务数据;完整镜像仍需单独 Issue CSV 和方案批准 |
| `WADM1` | `issues/2026-05-19_21-55-33-wecom-archive-mirror-data-model-design-v1.csv` | 当前模型设计:企微自建留存/镜像数据模型已固化 | 固定审批留存、回调事件、补偿拉取、对账 finding、打卡/人事快照边界、隐私权限和 WARCH1 最小实现切片;已由 WARCH1 承接实现请假/补卡最小历史留存 | docs-only;不改 Prisma schema、不部署、不写 OA/企微业务数据;完整镜像仍需单独 Trellis task 和方案批准 |
| `WARCH1` | `issues/2026-05-19_22-32-06-wecom-approval-archive-minimum-v1.csv` | 当前最小历史留存实现:请假/补卡审批历史可入 OA DB 并离线读取 | 新增 `WecomApprovalArchive` 等 Prisma 表、回调事件持久化、补偿 run/item/finding、`check:wecom-approval-archive` 离线 runner;补偿入库需 `--persist-to-db` + `WECOM_ARCHIVE_WRITE=1`;公网报告 `/app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T160306Z/summary.json` 持久化 2 条详情,`/app/artifacts/qa-flow/wecom-approval-archive-20260519T160330Z/summary.json` 离线读取 2 条历史,finding 为旧回调未入库历史 gap | 不写企微数据;不创建模板或审批单;不新增正式管理页;不做外出/加班、完整镜像、应急接管、恢复回写或 RuleOps |
| `WARCH2` | `issues/2026-05-20_00-26-04-wecom-approval-archive-query-v1.csv` | 当前正式只读历史查询:企微请假/补卡已归档历史可通过 OA API 和 PC/移动页面查看 | 新增 `/api/wecom/approval-archive` 列表/详情、`/wecom-approval-archive`、`/mobile/wecom-approval-archive`;只读 OA DB,不调用企微 API;分层权限为本人相关、直属下属、HR/admin/*,申请人未映射和 callback-only 记录仅 HR/admin/* 可见;页面固定“企业微信主办,OA 自建留存”“仅已归档记录”;公网报告 `/app/artifacts/qa-flow/wecom-approval-archive-20260520T013610Z/summary.json` 可读 2 条历史 | 不写 OA/企微数据;不读取企微 Secret;不提供审批动作;不做完整镜像、外出/加班、应急接管、恢复回写或 RuleOps |
| `WROAD2+OPS` | `issues/2026-05-20_11-30-22-wroad2-ops-controlled-launch-v1.csv` | 当前受控上线与每日巡检:先用测试账号运行 3 天脚本化巡检,不直接深镜像 | 新增 `scripts/qa/run-wroad2-ops-daily.sh`,复用公网 `/ready`、live smoke、feature flag、企微 runtime、审批补偿和 OA 归档离线读取;仅补偿归档步骤可写 OA 留存库;Day 0 报告 `/app/artifacts/qa-flow/wroad2-ops-20260520-041941/summary.json` 为 `PASS_WITH_FINDINGS` | 不写企业微信;不创建模板或审批单;管理员观察和告警员工号用 `HYD000006`;外出/加班、完整镜像、应急、回写、RuleOps 和 P2 大功能继续冻结 |
| `WARCH3` | `issues/2026-05-20_12-48-04-wecom-archive-stabilization-ops-v1.csv` | 当前归档稳定化自动巡检:把 WROAD2 巡检升级为可安装的服务器定时任务和脱敏告警 | 已安装 `hyb-oa-warch3-ops.timer`,每日 07:30 触发;手动公网报告 `/app/artifacts/qa-flow/warch3-ops-20260520-054841/summary.json` 为 `PASS_WITH_FINDINGS`,告警 `/app/artifacts/qa-flow/wecom-ops-alert-20260520T054851Z/summary.json` 为 `PASS_ALERT_SENT_WITH_CONFIG_GAPS` | 只允许补偿归档写 OA DB;不写企业微信、不创建模板或审批单;WOPS1 后默认收件员工号为 `HYD000006`(`wangshunli` 的员工号),已知 finding 不重复告警 |
| `WCHECK1` | `issues/2026-05-20_12-48-04-wecom-checkin-summary-archive-v1.csv` | 当前打卡摘要留存:企微打卡数据进入 OA 自建历史摘要 | 新增打卡日/月摘要和规则快照表、`wecomCheckinArchive` 服务和 `npm run check:wecom-checkin-summary-archive`;公网 live `/app/artifacts/qa-flow/wecom-checkin-summary-archive-20260520T054907Z/summary.json` 为 `PASS_CHECKIN_ARCHIVE_READY`,offline `/app/artifacts/qa-flow/wecom-checkin-summary-archive-20260520T054926Z/summary.json` 为 `PASS_CHECKIN_ARCHIVE_OFFLINE_READY` | 不写企业微信;不保存位置、人脸、设备明文、原始 payload 或密钥;本窗口 0 条打卡明细、2 条规则快照已写 OA 留存 |
| `WEXT1` | `issues/2026-05-20_12-48-04-wecom-outing-overtime-fixture-dryrun-v1.csv` | 当前外出/加班低风险 POC dry-run | 扩展 `npm run check:wecom-approval-fixtures` 支持 `--target=outing --target=overtime`,公网报告 `/app/artifacts/qa-flow/wecom-approval-fixtures-20260520T054940Z/summary.json` 为 `PASS_FIXTURE_DRY_RUN_READY` | 不 live 创建企微模板或审批单;live 前必须另起问答和 Issue CSV;不放行完整镜像 |
| `WEXT1` | `issues/2026-05-20_12-48-04-wecom-outing-overtime-fixture-dryrun-v1.csv` | 当前外出/加班低风险 POC dry-run | 扩展 `npm run check:wecom-approval-fixtures` 支持 `--target=outing --target=overtime`,公网报告 `/app/artifacts/qa-flow/wecom-approval-fixtures-20260520T054940Z/summary.json` 为 `PASS_FIXTURE_DRY_RUN_READY` | 不 live 创建企微模板或审批单;live 前必须另起问答和 Trellis task;不放行完整镜像 |
| `WOPS1` | `issues/2026-05-20_14-35-42-warch3-ops-alert-tuning-v1.csv` | 已完成并公网验证:巡检告警降噪,只报新增异常或状态恶化 | 默认收件员工号改为 `HYD000006`(管理员 `wangshunli` 的员工号);`send-wecom-ops-alert` 使用状态文件记录上次状态和 finding 摘要;远端 WARCH3 `/app/artifacts/qa-flow/warch3-ops-20260520-070731/summary.json` 为 `PASS_WITH_FINDINGS`,告警 `/app/artifacts/qa-flow/wecom-ops-alert-20260520T070740Z/summary.json` 为 `PASS_ALERT_SKIPPED_NO_FINDINGS`,重复 finding 未发送 | 不写企业微信业务数据;只发送脱敏状态消息;不扩大真实用户 |
| `WROAD2-CLOSEOUT` | `issues/2026-05-20_14-35-42-wroad2-controlled-ops-closeout-v1.csv` | 当前三天受控巡检验收:Day 1/2/3 采集后人工确认 | 已知 observation 为 live smoke 凭据、pending OCR 和历史 callback gap,不阻断;主链必须保持企微 runtime、审批补偿归档、OA 离线读取、打卡摘要 offline 可读和隐私扫描通过 | 三天结束前不启用真实员工;结论需结合 WROAD2-BIZ1/WAPPR1 后问答确认是否进入 WEXT1-FORMAL、先处理 finding 或暂停 |
| `WROAD2-BIZ1` | `issues/2026-05-20_17-13-57-wroad2-business-smoke-v1.csv` | 当前三天业务冒烟:补充测试账号人工业务动作 | `SMOKE002` 每天按企微规则尝试打卡并提交低风险请假/补卡,`SMOKE101` 先看详情再审批,`HYD000006` 查看 OA 归档历史和打卡摘要 | 不替代 WARCH3 自动巡检;不写企业微信;无法打卡、无法审批或仍需手选审批人时记录 finding |
@@ -173,11 +173,11 @@ R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> M
| `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` 前不得宣布最终正式启用完成 |
| `OMAT1` | `issues/2026-05-23_17-20-00-oa-maturity-gap-review-v1.csv` | 当前成熟度缺口审查台账:按 MAGI 审视/执行/提升轮次,对标国内主流 OA、协同、低代码、财务和资产系统,记录每个问题或建议供用户逐项采纳、暂缓或否决 | 已登记最终启用、真实业务闭环、权限、备份恢复、运营支持、流程配置、报表、财务月结、合同、采购、资产、HR 镜像、移动体验、数据治理、SLO、集成、知识档案、主数据、UX、AI 边界、国内对标来源、小团队取舍原则、用户决策回填、成熟度证据视图和最低非功能基线等候选项 | 本台账只做审查和决策,不直接触发业务代码实现;采纳项必须另建或延续对应 Issue CSV,并满足 OALAUNCH1 门禁 |
| `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 继续后置观察 | 页面改动继续读取 `docs/产品设计规则.md` 和 OALAUNCH1 启用门禁;后续 Portal 仍需按真实使用反馈推进 | 不写公网业务数据;不替代真实业务闭环、备份恢复、7 天稳定化或 Day 7 Go/No-Go |
| `OAKISS1` | `issues/2026-05-25_20-53-34-oa-business-flow-kiss-review-v1.csv` | 当前全业务流程 KISS 审查台账:按 MAGI 审视/执行/提升轮次,对报销/OCR、审批、采购/费用、合同/项目、付款/AP、票据池、资产、权限、移动/企微入口逐项做自动化和人工步骤审查 | 已形成 OAOPS1、OALAUNCH1、权限矩阵、PC 视觉、负责人审批链、资产试录和 OCR 辅助证据;建议保留 P0 主流程、简化 TEST/SMOKE 噪声和高密度后台页、后置 P2 复杂能力 | 本台账只做审查和建议,不直接改业务代码;真实业务闭环、备份恢复和 Day 7 Go/No-Go 仍按 OALAUNCH1 人工门禁执行 |
| `PCDESIGN1` | `issues/2026-05-25_21-27-56-oa-pc-page-design-review-v1.csv` | 当前 PC 全页面设计审查台账:以项目经理和设计总监视角按 MAGI 审视/执行/提升轮次盘点 PC 路由、页面分层、交互、内容和 KISS 建议 | 已复跑关键 PC 视觉矩阵 `PASS_PC_READONLY_VISUAL_READY`,并补全 45 条静态 PC 路由扫描 `PASS_PC_STATIC_ROUTE_SCAN_READY`;建议优先收敛 HR/考勤边界、冻结模块入口、高密度 B/C 页默认视图和动态详情页证据 | 本台账只做审查和建议,不直接改业务代码;采纳后必须另建前端实施 Issue CSV |
| `PCDESIGN1` | `issues/2026-05-25_21-27-56-oa-pc-page-design-review-v1.csv` | 当前 PC 全页面设计审查台账:以项目经理和设计总监视角按 MAGI 审视/执行/提升轮次盘点 PC 路由、页面分层、交互、内容和 KISS 建议 | 已复跑关键 PC 视觉矩阵 `PASS_PC_READONLY_VISUAL_READY`,并补全 45 条静态 PC 路由扫描 `PASS_PC_STATIC_ROUTE_SCAN_READY`;建议优先收敛 HR/考勤边界、冻结模块入口、高密度 B/C 页默认视图和动态详情页证据 | 本台账只做审查和建议,不直接改业务代码;采纳后必须另建前端实施 Trellis task |
| `TRELLIS1` | `issues/2026-05-26_09-02-34-trellis-primary-development-workflow-v1.csv` | 历史迁移合同:完成 Trellis-first 初始接入 | Trellis task/spec/workflow 成为开发入口的第一步,旧口径仍保留 Issue CSV 绑定 | 历史审计;已由 TRELLIS2 官方 task 合同口径替代 |
| `TRELLIS2` | `.trellis/tasks/05-26-trellis2-official-task-contract/` | 当前开发流程合同:采用官方 Trellis task 作为新任务执行合同 | `prd.md` 承载需求/验收/测试,复杂任务补 `design.md` 或 `implement.md`,Issue CSV 降级为历史审计或可选导出格式 | 不改业务代码、不部署、不写公网数据;提交前必须通过 `node scripts/qa/check-trellis-governance.mjs` |
| `WREAL1-PREP` | `issues/2026-05-20_14-35-42-wecom-real-trial-prep-v1.csv` | 当前真实试用准备:不启用真实员工 | 固化候选员工、非自审审批人、回滚联系人、允许流程、暂停条件和验收标准;真实试用必须等请假、补卡、外出、加班四类测试号证据、WAPPR1 和 WFULLSMOKE1 通过后再问 | 当前不创建外出/加班 live 样件;真实员工名单不写入 Issue 或文档,后续通过问答确认 |
@@ -247,11 +247,11 @@ R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> M
| --- | --- |
| [历史功能状态矩阵](./历史功能状态矩阵.md) | 轻量历史功能索引;旧大表从 git 历史恢复 |
| [人工试运行报告](./trialrun/人工试运行报告.md) | R6 后当前状态、关键证据索引、OMAT1 成熟度验收摘要、域级能力对标矩阵、人工决策问答清单、审查决策包、状态审计、MAGI 轮次审视和 OAFLOW1 负责人本人报销兜底审批口径 |
| [R7E 后功能边界审计](./trialrun/R7E后功能边界审计.md) | R7E 后全端功能边界、P2 候选和后续 Issue 草案 |
| [R7E 后功能边界审计](./trialrun/R7E后功能边界审计.md) | R7E 后全端功能边界、P2 候选和后续候选草案 |
| [试运行覆盖矩阵](./trialrun/试运行覆盖矩阵.csv) | 轻量覆盖摘要 |
| [项目级流程覆盖矩阵](./trialrun/项目级流程覆盖矩阵.csv) | `check-flow-coverage` 使用的最小流程矩阵 |
| [权限直连审计记录](./trialrun/权限直连审计记录.md) | 权限直连审计证据 |
| [移动信息架构视觉流程审查](./trialrun/移动信息架构视觉流程审查.md) | MIA7 审查结论,整改收口以 MIF7/MIF7T 和最新 Issue CSV 为准 |
| [移动信息架构视觉流程审查](./trialrun/移动信息架构视觉流程审查.md) | MIA7 审查结论,整改收口以 MIF7/MIF7T 和当前事实源为准 |
## 技术参考
+14 -14
查看文件
@@ -4,11 +4,11 @@
**适用范围**:hyb-oa MVP 首轮开发 A3-A8,以及后续所有非微小改动。
**路线口径**:WFOC/DBWFOC/WFDG/WDRG/WEGOV1/WROAD2 后,HR/考勤员工日常审批优先复用企业微信成熟能力,OA 做自建留存、按域镜像、人工接管、恢复回写、财务闭环和审计中台;报销、采购、合同、项目、PDF OCR、付款批次、AP 台账、代账交接和高敏附件继续由 OA 主办;企业微信只做脱敏消息和 OA deeplink;飞书不进入当前路线。后续企微/OA 运行时迁移前必须先读 [企微优先开发路线图](./企微优先开发路线图.md),再做对应 POC。WEGOV1 后,WAPC2/WCBK1 不能直接进入 `wecom_attendance_approval_mirror_v1`;WACP3、WREAD1、WADM1、WARCH1 和 WARCH2 已完成请假/补卡补偿、可读性、模型设计、最小历史留存和正式只读查询。WROAD2+OPS 先做测试账号 3 天每日巡检,完整镜像仍需 WARCH3、WCHECK1、WEXT1 和单独合同。WPROC2 后先跑 `check-process-contract` process gate;缺配置或权限时记录 `NEEDS_CONFIG` 或 `SKIP/BLOCKED_BY_EXTERNAL_CONFIG`,不得伪造成通过。
本文回答“什么时候测试、测什么、怎么判定通过、怎么记录跳过”。具体业务验收仍以主 PRD、模块规约和最新 Issue CSV 为准。
本文回答“什么时候测试、测什么、怎么判定通过、怎么记录跳过”。具体业务验收仍以主 PRD、模块规约和当前 Trellis task PRD 为准;历史 Issue CSV 只作追溯或外部导出兼容材料。
## 1. 基本原则
- 测试不是 A8 才开始;每个 Issue 完成开发后必须立即按 `Test_Method` 验证。
- 测试不是 A8 才开始;每个 Trellis task 完成开发后必须立即按 `Test Plan` 验证。
- A8 是总回归和试运行门禁,用来证明 A2-A7 组合后仍然可用。
- 自动化优先,自动化无法覆盖时必须写清人工步骤、执行人、环境和结论。
- 测试失败不得假通过;必须先归类为代码问题、测试桩问题、环境问题、数据问题或人工配置问题。
@@ -27,19 +27,19 @@
| 真机 / 公网 smoke | 证明部署环境可用 | `/ready`、前端资源、企业微信真机、真实 OCR | 真实条件可用且记录证据;缺条件标 `SKIP` |
| 人工验收 | 证明业务角色认可 | 员工、审批人、财务、管理员按清单操作 | 验收人确认或记录遗留问题 |
## 3. Issue 内测试时机
## 3. Trellis task 内测试时机
| 时机 | 必做动作 |
| --- | --- |
| 开发前 | 确认 Issue CSV 已写清 `Acceptance`、`Test_Method`、依赖和回滚说明 |
| 开发前 | 确认 Trellis task PRD 已写清 `Acceptance`、`Test Plan`、依赖和回滚说明 |
| 后端改完 | 跑 Prisma 校验、相关 `node --check`、相关单测或回归脚本 |
| 前端改完 | 跑 `typecheck`、`build`,涉及页面时跑相关 Playwright |
| UI 或入口改完 | 做 PC、移动或企业微信 UA 视觉验证 |
| Review 前 | 确认 diff 只包含当前 Issue 范围,失败测试已修复或明确阻塞 |
| 回填 DONE 前 | `Test_Method` 已执行并通过,或有明确 SKIP 证据 |
| Commit 前 | `git diff --check` 通过,Issue 状态和 Notes 已反映真实结果 |
| Review 前 | 确认 diff 只包含当前 Trellis task 范围,失败测试已修复或明确阻塞 |
| 回填 DONE 前 | `Test Plan` 已执行并通过,或有明确 SKIP 证据 |
| Commit 前 | `git diff --check` 通过,Trellis task 状态和检查记录已反映真实结果 |
`Dev_Status=DONE` 表示开发完成且基础检查通过;`Review1_Status=DONE` 表示自查或 review 无阻断;`Regression_Status=DONE` 表示业务流程级验证通过或明确 SKIP。
Trellis task `status=completed` 表示开发、复核、回归和归档已完成;历史 Issue CSV 的 `Dev_Status=DONE`、`Review1_Status=DONE`、`Regression_Status=DONE` 仅按旧审计口径解释。
### 3.1 企微工程化测试门禁
@@ -49,23 +49,23 @@ WPROC1 后,企微 HR/考勤相关 Issue 在测试层面同步执行三层门
| --- | --- |
| 路线门禁 | 测试前核对路线图,确认没有跳过 WAPC2F、WCBK1、WEGOV1、WACP3、WREAD1、WADM1、WARCH1 等前置阶段。 |
| 能力门禁 | runner 必须输出真实 `PASS`、`NEEDS_CONFIG` 或 `SKIP/BLOCKED_BY_EXTERNAL_CONFIG`,不能把缺 Secret、权限、可信 IP、模板、回调或可见范围写成通过。 |
| 实现门禁 | Issue CSV、静态检查、单测、回归、公网验证、状态回填和中文提交必须按 `Test_Method` 闭环。 |
| 实现门禁 | Trellis task PRD、静态检查、单测、回归、公网验证、检查记录和中文提交必须按 `Test Plan` 闭环。 |
WPROC2 把上述要求固化为自动化 process gate:
- 基线门禁:`node scripts/qa/check-process-contract.mjs --baseline`,已接入 `scripts/check-minimal.sh`。
- 合同门禁:`node scripts/qa/check-process-contract.mjs --issue <csv> --profile <profile> --json`。
- 历史/外部 CSV 兼容门禁:`node scripts/qa/check-process-contract.mjs --issue <csv> --profile <profile> --json`,仅在当前任务明确包含 legacy/export CSV 时使用。
- WAPC2F 必须使用 `wecom-approval-fixture` profile;后续企微高风险合同至少使用 `wecom` profile。
Definition of Ready:
- Issue CSV 已写清主流程、异常流程、权限、外部配置和脱敏报告边界。
- Trellis task PRD 已写清主流程、异常流程、权限、外部配置和脱敏报告边界。
- 已明确 API、Secret、可信 IP、模板、回调、测试账号、申请人、审批人和自审校验。
- live 写入必须有显式 CLI 参数和环境开关;默认 dry-run 或只读。
Definition of Done:
- `Test_Method` 全部执行并记录实际结果。
- `Test Plan` 全部执行并记录实际结果。
- 自动化能覆盖的样件生成、复跑、只读拉取、脱敏检查和错误分类已自动化执行。
- 人工只保留批准、密钥/回调配置、企微后台不可 API 化配置、真机确认和风险拍板。
- 若面向公网或企微可测,必须有 `/ready`、runtime smoke、public bundle scan 或对应 live runner 证据。
@@ -110,7 +110,7 @@ R7E 前和后续非微小改动至少从以下组合中按风险选择;进入
| 类别 | 命令或证据 | 口径 |
| --- | --- | --- |
| CSV 合同 | `python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py <issue.csv>` | 所有当前 Issue CSV 校验通过 |
| 历史 CSV 兼容 | `python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py <issue.csv>` | 仅当当前任务包含 legacy/export CSV 时校验通过 |
| 前端基础 | `cd client && npm run typecheck`、`cd client && npm run build` | 类型和构建通过,Vite chunk warning 不单独阻断 |
| 设计规则 | `node scripts/qa/check-ui-design-rules.mjs --strict` | 当前 UI 设计规则 0 findings |
| MIF7 移动矩阵 | `cd client && npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts --workers=1 --reporter=list` | 首页、进度/审批、通知、三类详情和财务首页通过;公网时设置 `E2E_BASE_URL=https://oa.hyinda.com` |
@@ -137,7 +137,7 @@ QAOPS8 之后,当前门禁台账按四类读取:
| R108/R109 移动视觉专项 | 历史证据和待修测试初始化 | 不是当前 R7E 硬门禁;初始化 API 不可用时只能记录 `SKIP`,不得写成视觉通过 |
| R6/MUD6/WCM6 移动专项 | 当前移动基础回归 | MIF7/MIF7T 后仍需保持可运行,用于防止基础移动体验回退 |
| MIF7/MIF7T 移动整改专项 | 已收口证据和当前矩阵参考 | 作为新移动变更的回归参考,不能替代新增真机验收 |
| 其他历史专项 | 历史证据 | 重新进入当前门禁前,必须先更新对应 Issue CSV 的 `Test_Method` 和验收口径 |
| 其他历史专项 | 历史证据 | 重新进入当前门禁前,必须先更新当前 Trellis task 的 `Test Plan` 和验收口径;如需回填历史 CSV,另按 legacy/export 兼容门禁校验 |
## 6. SKIP 规则
+21 -21
查看文件
@@ -19,7 +19,7 @@
- [需求 - 采购费用审批规约](./需求-采购费用审批规约.md):采购申请、费用申请、审批、附件和业务关联模块级开发规约。
- [需求 - 合同附件归档规约](./需求-合同附件归档规约.md):合同台账、编号、非涉密附件、归档、权限和审计模块级开发规约。
- [需求 - 项目轻管理规约](./需求-项目轻管理规约.md):项目基础信息、成员、里程碑、任务、风险、交付和业务关联模块级开发规约。
- `issues/*.csv`:每轮开发执行合同;需求确认后必须拆 Issue CSV 再开发。
- `.trellis/tasks/<task>/`:每轮开发执行合同;`issues/*.csv` 仅保留为历史审计材料或特殊外部导出格式。
---
@@ -27,7 +27,7 @@
### 1.1 背景
海音达需要一套适合 10 人以下科技公司的轻量 OA,用来把报销、采购、费用、合同、项目资料、财务闭环、审计和关键行政数据集中到一个可审计、可回归、可持续迭代的系统中。WFOC 起产品方向调整为“企微优先 + OA 无痛接管”;DBWFOC 进一步修正边界:能复用企业微信成熟功能的 HR/考勤员工日常场景优先使用企业微信,OA 做按域镜像、人工接管、恢复回写、财务闭环和审计中台;采购、合同、项目、财务和高敏附件仍由 OA 主办和存储。WFDG 固定后续开发前必须先过设计规约门禁和企微 API 能力 POC;WDRG 进一步固定后续采用“路线图门禁 + 单功能 Issue CSV”的开发节奏,不再直接进入大规模运行时改造。WCP1 已完成企业微信能力只读 POC 并暴露初始配置缺口;WCPC 已用既有在职测试号复跑通过,结论 `GO_TO_HR_MASTER_SYNC`;WHMS/WHMSLIVE 已完成 HR 主数据镜像实现和受控公网验证;WAPI/WRRA 后路线调整为先运行优先和 WOUA 差异收口。WARCH2 后请假/补卡已归档历史可在 OA 只读查看,下一阶段先走 WROAD2+OPS 测试账号受控上线和每日巡检,再做归档稳定化与打卡摘要留存,不直接进入完整考勤/审批深度镜像。
海音达需要一套适合 10 人以下科技公司的轻量 OA,用来把报销、采购、费用、合同、项目资料、财务闭环、审计和关键行政数据集中到一个可审计、可回归、可持续迭代的系统中。WFOC 起产品方向调整为“企微优先 + OA 无痛接管”;DBWFOC 进一步修正边界:能复用企业微信成熟功能的 HR/考勤员工日常场景优先使用企业微信,OA 做按域镜像、人工接管、恢复回写、财务闭环和审计中台;采购、合同、项目、财务和高敏附件仍由 OA 主办和存储。WFDG 固定后续开发前必须先过设计规约门禁和企微 API 能力 POC;WDRG 进一步固定后续采用“路线图门禁 + 单功能 Trellis task”的开发节奏,不再直接进入大规模运行时改造。WCP1 已完成企业微信能力只读 POC 并暴露初始配置缺口;WCPC 已用既有在职测试号复跑通过,结论 `GO_TO_HR_MASTER_SYNC`;WHMS/WHMSLIVE 已完成 HR 主数据镜像实现和受控公网验证;WAPI/WRRA 后路线调整为先运行优先和 WOUA 差异收口。WARCH2 后请假/补卡已归档历史可在 OA 只读查看,下一阶段先走 WROAD2+OPS 测试账号受控上线和每日巡检,再做归档稳定化与打卡摘要留存,不直接进入完整考勤/审批深度镜像。
### 1.2 总目标
@@ -36,7 +36,7 @@
- 企业微信作为手机工作台入口、免登/绑定、通讯录身份、消息通知、打卡、人事助手和 HR/考勤员工日常审批主操作端。
- 采购、费用、合同、项目、报销、付款、AP、代账交接和敏感附件不迁移到企业微信原生审批或企业微信附件;企业微信只发送脱敏提醒和 OA deeplink。
- PC 用户可直接访问 OA;手机端优先从企业微信工作台进入 OA 移动端。
- 后续开发必须先有需求事实源和 Issue CSV 执行合同,避免边想边做。
- 后续开发必须先有需求事实源和 Trellis task 执行合同,避免边想边做。
### 1.3 当前平台边界
@@ -56,7 +56,7 @@
| 恢复回写层 | OA + 企业微信 API | 企微恢复后由 `wecom_recovery_writeback_v1` 对应急数据执行 dry-run、自动回写、失败重试和冲突清单。 |
| 财务主办层 | OA | 报销、PDF 发票 OCR、发票查重、付款批次、银行回单、AP 台账、代账交接继续 OA 主办,不迁移到企微。 |
无痛切换是长期目标,不代表本轮已实现完整替代。完整镜像按域定义:企微主办域镜像到 OA;OA 主办域不反向全量镜像到企微,只发送脱敏标题、业务类型、业务编号、状态和 OA 链接。WEGOV1 后,OA 不重造企业微信完整打卡/考勤/HR 产品,但必须保存企微关键历史、完整外部关联键和必要快照,保证企微不可用时可查看既有数据。WROAD2 后“可受控使用”和“完整镜像增强”分离:先用测试账号 `SMOKE002 -> SMOKE101 + HYD000006/wangshunli` 做 3 天每日脚本化巡检,允许补偿归档写 OA 自建留存库,不写企业微信;WARCH3 改为 07:30 自动巡检,WCHECK1 优先做打卡摘要留存,WEXT1 只做外出/加班 dry-run,WOPS1 后只报新增异常或状态恶化,WROAD2-BIZ1 补充三天测试账号打卡/请假/补卡/OA 离线查看人工业务冒烟,WAPPR1 把审批人自动带出和禁止申请人任意选择审批人列为真实试用前门禁,图片 OCR、复杂 BPM、预算、ERP、银行流水导入等 P2 大功能继续冻结。后续必须按 `wecom_hr_master_sync_v1`、`runtime_first_wecom_enablement`、`WOUA-FIX / WECOM-RUNTIME-READY-V1`、`WAPC1 审批配置准备`、`WAPC2 请假/补卡只读 POC`、`WAPC2F 自动生成 POC 样件`、`WAPC2FLIVE live 创建与 WAPC2 自动复跑`、`WCBK1 回调只读 POC(真实事件已确认)`、`WEGOV1 企微主办治理与自建留存路线修正`、`WACP3/WACP3R 补偿拉取 POC`、`WREAD1 审批可读性与误审批防护门禁`、`WADM1 自建留存/镜像数据模型设计`、`WARCH1 最小自建历史留存实现`、`WARCH2 正式只读历史查询`、`WROAD2+OPS 受控上线与每日巡检`、`WARCH3 归档稳定化自动巡检`、`WCHECK1 打卡摘要留存`、`WEXT1 外出/加班 dry-run`、`WOPS1 巡检告警降噪`、`WROAD2-CLOSEOUT 三天验收`、`WROAD2-BIZ1 三天业务冒烟`、`WAPPR1 审批规则规范化`、`WRULE1 审批链校验器 POC`、`WAUTO1/WFULLSMOKE1 自动证据和全域 smoke`、`WTCLOSE2/WREMOTE1/WFULLSMOKE2 远端收口`、`WEXT1-FORMAL 正式模板外出/加班测试`、`WREAL1 小范围真实试用`、`wecom_attendance_approval_mirror_v1`(承接旧口径 `wecom_native_approval_mirror_v1`)、`oa_hr_emergency_mode_v1`、`wecom_recovery_writeback_v1` 和 `wecom_ruleops_v1` 分阶段拆 Issue CSV;WREAL1 必须等请假、补卡、外出、加班四类测试号证据和审批规则门禁通过后再问答启动。
无痛切换是长期目标,不代表本轮已实现完整替代。完整镜像按域定义:企微主办域镜像到 OA;OA 主办域不反向全量镜像到企微,只发送脱敏标题、业务类型、业务编号、状态和 OA 链接。WEGOV1 后,OA 不重造企业微信完整打卡/考勤/HR 产品,但必须保存企微关键历史、完整外部关联键和必要快照,保证企微不可用时可查看既有数据。WROAD2 后“可受控使用”和“完整镜像增强”分离:先用测试账号 `SMOKE002 -> SMOKE101 + HYD000006/wangshunli` 做 3 天每日脚本化巡检,允许补偿归档写 OA 自建留存库,不写企业微信;WARCH3 改为 07:30 自动巡检,WCHECK1 优先做打卡摘要留存,WEXT1 只做外出/加班 dry-run,WOPS1 后只报新增异常或状态恶化,WROAD2-BIZ1 补充三天测试账号打卡/请假/补卡/OA 离线查看人工业务冒烟,WAPPR1 把审批人自动带出和禁止申请人任意选择审批人列为真实试用前门禁,图片 OCR、复杂 BPM、预算、ERP、银行流水导入等 P2 大功能继续冻结。后续必须按 `wecom_hr_master_sync_v1`、`runtime_first_wecom_enablement`、`WOUA-FIX / WECOM-RUNTIME-READY-V1`、`WAPC1 审批配置准备`、`WAPC2 请假/补卡只读 POC`、`WAPC2F 自动生成 POC 样件`、`WAPC2FLIVE live 创建与 WAPC2 自动复跑`、`WCBK1 回调只读 POC(真实事件已确认)`、`WEGOV1 企微主办治理与自建留存路线修正`、`WACP3/WACP3R 补偿拉取 POC`、`WREAD1 审批可读性与误审批防护门禁`、`WADM1 自建留存/镜像数据模型设计`、`WARCH1 最小自建历史留存实现`、`WARCH2 正式只读历史查询`、`WROAD2+OPS 受控上线与每日巡检`、`WARCH3 归档稳定化自动巡检`、`WCHECK1 打卡摘要留存`、`WEXT1 外出/加班 dry-run`、`WOPS1 巡检告警降噪`、`WROAD2-CLOSEOUT 三天验收`、`WROAD2-BIZ1 三天业务冒烟`、`WAPPR1 审批规则规范化`、`WRULE1 审批链校验器 POC`、`WAUTO1/WFULLSMOKE1 自动证据和全域 smoke`、`WTCLOSE2/WREMOTE1/WFULLSMOKE2 远端收口`、`WEXT1-FORMAL 正式模板外出/加班测试`、`WREAL1 小范围真实试用`、`wecom_attendance_approval_mirror_v1`(承接旧口径 `wecom_native_approval_mirror_v1`)、`oa_hr_emergency_mode_v1`、`wecom_recovery_writeback_v1` 和 `wecom_ruleops_v1` 分阶段拆 Trellis task;WREAL1 必须等请假、补卡、外出、加班四类测试号证据和审批规则门禁通过后再问答启动。
WROUTE2/WREMOTE1 后,企微 HR/考勤路线尾部以 `WAUTO1 -> WEXT1LD -> WFULLSMOKE1 -> WROUTE2 -> WTCLOSE2/WTCLOSE2F -> WREMOTE1/WFULLSMOKE2 -> WEXT1-FORMAL -> WREAL1(首批 1 名真实员工 + 1 名审批人/管理员观察) -> wecom_attendance_approval_mirror_v1 最小完整镜像 -> oa_hr_emergency_mode_v1 -> wecom_recovery_writeback_v1 -> wecom_ruleops_v1` 为准;WROUTE2 只锁定路线,WREMOTE1 只授权远端只读/全域 smoke,不授权写企微、不启用真实员工、不创建外出/加班样件。
@@ -140,32 +140,32 @@ WHMS 将企业微信通讯录/人事助手作为 HR 主数据源的读取能力
## 2. 软件开发项目流程
后续所有非微小改动按标准软件开发流程推进。流程目标不是增加仪式感,而是保证每轮都有清晰需求、可执行方案、可验证结果、可回滚边界和可追溯记录。WDRG 后,企微优先 HR/考勤路线必须先经过路线图门禁,再进入 POC 和单功能 Issue CSV,避免散点式开发。
后续所有非微小改动按标准软件开发流程推进。流程目标不是增加仪式感,而是保证每轮都有清晰需求、可执行方案、可验证结果、可回滚边界和可追溯记录。WDRG 后,企微优先 HR/考勤路线必须先经过路线图门禁,再进入 POC 和单功能 Trellis task,避免散点式开发。
| 阶段 | 目标 | 输入 | 输出 | 门禁 |
| --- | --- | --- | --- | --- |
| 1. 需求收集与边界确认 | 明确为什么做、谁使用、解决什么流程问题 | 用户反馈、试运行问题、业务制度、当前 PRD 和模块规约 | 需求描述、目标角色、主流程、必须做、暂不做、验收口径 | 需求不清不得进入开发;高风险歧义必须先澄清 |
| 2. 需求文档冻结 | 形成产品、开发、测试共同事实源 | 主 PRD、模块规约、产品口径文档、历史 Issue | 更新后的 PRD 或模块规约 | 没有事实源更新,不拆开发 Issue |
| 3. Issue CSV 执行合同拆分 | 把需求拆成可独立验收的任务 | 已确认需求文档 | `issues/YYYY-MM-DD_HH-mm-ss-<slug>.csv` | CSV 必须校验通过;每个 Issue 写清范围、验收、测试、依赖 |
| 4. 技术方案设计 | 明确怎么实现和怎么回滚 | Issue CSV、现有代码、数据模型、接口和权限规则 | 实现方案、接口/数据变更说明、风险和回滚策略 | 涉及权限、状态机、迁移、审批规则时必须写回滚策略 |
| 5. 开发实现 | 按 Issue 实现后端、前端、脚本或文档 | 已批准方案和 Issue CSV | 代码或文档变更、必要测试用例、变更说明 | 不顺手改无关问题;跨端任务先稳定后端契约再接前端 |
| 6. 代码审查与自查 | 发现行为回归、权限泄漏、状态非法跳转和漏测 | 完整 diff、Issue CSV、测试结果 | Review 意见、修复记录或确认无阻断问题 | 涉及权限模型、workflow、数据迁移、审批规则时必须重点审查 |
| 2. 需求文档冻结 | 形成产品、开发、测试共同事实源 | 主 PRD、模块规约、产品口径文档、历史 Issue 或当前 Trellis task | 更新后的 PRD 或模块规约 | 没有事实源更新,不创建开发任务 |
| 3. Trellis task 执行合同拆分 | 把需求拆成可独立验收的任务 | 已确认需求文档 | `.trellis/tasks/<task>/prd.md` | Trellis task 必须校验通过;每个 task 写清范围、验收、测试、依赖 |
| 4. 技术方案设计 | 明确怎么实现和怎么回滚 | Trellis task、现有代码、数据模型、接口和权限规则 | 实现方案、接口/数据变更说明、风险和回滚策略 | 涉及权限、状态机、迁移、审批规则时必须写回滚策略 |
| 5. 开发实现 | 按 task 实现后端、前端、脚本或文档 | 已批准方案和 Trellis task | 代码或文档变更、必要测试用例、变更说明 | 不顺手改无关问题;跨端任务先稳定后端契约再接前端 |
| 6. 代码审查与自查 | 发现行为回归、权限泄漏、状态非法跳转和漏测 | 完整 diff、Trellis task、测试结果 | Review 意见、修复记录或确认无阻断问题 | 涉及权限模型、workflow、数据迁移、审批规则时必须重点审查 |
| 7. 测试与回归 | 证明单点和业务链路都可用 | 变更内容、Test_Method、回归脚本、手工验收步骤 | 命令结果、业务流程验证结果、失败项和修复记录 | 后端、前端、PC、移动、企业微信入口按影响范围验证;不能假通过 |
| 8. 部署与发布准备 | 确认环境、配置、资源和回滚路径可用 | 已验证变更、部署脚本、配置清单、回滚策略 | 部署记录、`/ready` 检查、资源版本、配置复核 | 未部署不得告知用户可去公网或企业微信真机测试 |
| 9. 业务验收 | 让目标角色按真实路径确认结果 | 已部署环境、验收账号、样例数据、验收清单 | 验收结论、遗留问题、是否进入试运行 | 用户或指定验收人未确认前,不把体验问题视为关闭 |
| 10. 复盘与下一轮规划 | 把反馈转成下一轮可执行任务 | 验收反馈、线上问题、回归缺口、试运行记录 | 新需求、缺陷清单、下一轮 Issue CSV 草案 | 不直接把反馈插入开发;先回到需求和 Issue CSV |
| 10. 复盘与下一轮规划 | 把反馈转成下一轮可执行任务 | 验收反馈、线上问题、回归缺口、试运行记录 | 新需求、缺陷清单、下一轮 Trellis task 草案 | 不直接把反馈插入开发;先回到需求和 Trellis task |
### 2.1 本项目执行约束
详细测试、视觉验证、SKIP、状态回填和回归门禁以 [测试规约与回归门禁](./测试规约与回归门禁.md) 为准;Issue 生命周期、review、commit、工作区和交付输出以 [开发交付与变更管理规约](./开发交付与变更管理规约.md) 为准。
详细测试、视觉验证、SKIP、状态回填和回归门禁以 [测试规约与回归门禁](./测试规约与回归门禁.md) 为准;Trellis task 生命周期、review、commit、工作区和交付输出以 [开发交付与变更管理规约](./开发交付与变更管理规约.md) 为准。
- 所有非微小改动必须先有需求事实源和 Issue CSV 执行合同。
- 所有非微小改动必须先有需求事实源和 Trellis task 执行合同。
- 开发前必须说明实现方案;需求或方案不清时先澄清,不靠代码试错。
- `Dev_Status`、`Review1_Status`、`Regression_Status` 只能在对应验证通过后更新为 `DONE`。
- Trellis task 状态、review 结论和回归记录只能在对应验证通过后更新;历史 Issue CSV 字段仅按旧审计口径回填。
- 后端变更至少执行 Prisma 校验、语法检查和相关业务回归;前端变更至少执行 typecheck、build,并按影响范围补 Playwright 或人工视觉验证。
- 涉及 PC、手机、企业微信入口的改动,必须验证入口、布局、deeplink 和移动端体验。
- 涉及生产、公网、企业微信真机或真实 OCR 的结论,必须以部署后 live smoke 为准;未配置真实条件时必须明确 `SKIP` 和原因。
- 提交应按清晰主题小批次完成,commit message 使用中文并引用 Issue ID。
- 提交应按清晰主题小批次完成,commit message 使用中文并引用 Trellis task 名称或任务 ID。
### 2.2 REQ8 当前需求状态表
@@ -217,7 +217,7 @@ ERP 已从“冻结待办”调整为“未来不接入 OA”。其他冻结项
| P1 | 采购/费用审批 | 小团队采购和费用事项留痕 | 采购、审批待办 | 申请、附件、审批、状态更新可用 |
| P1 | 合同与附件归档 | 管合同编号、责任人、归档位置和非涉密附件 | 合同/项目资料或项目页 | 能登记、查询、关联项目和审批记录 |
| P1 | 项目轻管理 | 把费用、采购、差旅、周报挂到项目 | 项目、Portal、周报 | 能看项目事项、风险、费用摘要,不做重型排产 |
| P2 | 预算/支付/AI | 在试运行稳定后按真实反馈增强运营能力 | 管理员备用入口 | 另立 Issue CSV,不进入首批验收;ERP 不进入路线 |
| P2 | 预算/支付/AI | 在试运行稳定后按真实反馈增强运营能力 | 管理员备用入口 | 另立 Trellis task,不进入首批验收;ERP 不进入路线 |
---
@@ -478,11 +478,11 @@ REQAUD 复核后,ATTV1 已按“企业微信打卡、OA 审批解释”口径
| 采购流程 | 员工提交采购 -> 审批通过或驳回 -> 状态和附件可追溯 |
| 企业微信入口 | 手机企业微信进入 `/mobile` -> 账号已绑定则直达,未绑定可回退账号密码 |
| 企业微信通知 | 收到审批提醒 -> 点击 deeplink -> 回到 OA 审批页处理 |
| 文档门禁 | 新需求先更新 PRD 或规则文档,再拆 Issue CSV,不直接开发 |
| 文档门禁 | 新需求先更新 PRD 或规则文档,再拆 Trellis task,不直接开发 |
### 12.3 工程验收
- Issue CSV 校验通过。
- Trellis task 校验和治理门禁通过。
- 文档 diff 检查通过。
- 涉及后端时执行 Prisma、语法和相关回归脚本。
- 涉及前端时执行 typecheck、build 和相关 Playwright。
@@ -493,7 +493,7 @@ REQAUD 复核后,ATTV1 已按“企业微信打卡、OA 审批解释”口径
## 13. 后续 Backlog
后续事项必须另立 Issue CSV,不直接进入当前 MVP:
后续事项必须另立 Trellis task,不直接进入当前 MVP:
- 企业微信打卡 live 同步验证和真实考勤数据口径稳定化。
- 补卡、外出、加班的真实使用反馈体验优化。
@@ -510,6 +510,6 @@ REQAUD 复核后,ATTV1 已按“企业微信打卡、OA 审批解释”口径
- 本文件回答“要做什么、为什么做、先做什么、不做什么、如何验收”。
- `docs/产品口径.md` 记录已经拍板的产品口径。
- `docs/历史功能状态矩阵.md` 记录已经实现了什么和证据在哪里。
- `issues/*.csv` 是每轮开发执行合同。
- 需求变化必须先更新本文件或对应规则文档,再创建新的 Issue CSV。
- `.trellis/tasks/<task>/` 是每轮开发执行合同;`issues/*.csv` 只保留为历史审计材料或特殊外部导出格式。
- 需求变化必须先更新本文件或对应规则文档,再创建或更新新的 Trellis task。
- 不批量回改旧 Issue CSV 来伪造一致性;历史计划保留为历史快照。
+4 -4
查看文件
@@ -288,7 +288,7 @@ WCBK1 回调只读 POC:
WEGOV1 自动化与人工边界:
1. 我可以自动完成:Issue CSV、文档回写、runner、synthetic 测试、API 只读探测、回调验签/解密测试、补偿拉取测试、脱敏报告、受控部署、`/ready`、公网 runner 复跑、状态回填和中文提交。
1. 我可以自动完成:Trellis task、文档回写、runner、synthetic 测试、API 只读探测、回调验签/解密测试、补偿拉取测试、脱敏报告、受控部署、`/ready`、公网 runner 复跑、状态回填和中文提交。
2. 管理员或用户必须人工处理:企微后台无法 API 化配置、Secret/Token/EncodingAESKey 填入部署环境、可信 IP/可见范围调整、正式写入批准、真机收到消息/点击/审批可读性确认、是否启用正式批量同步或应急模式的风险拍板。
3. 企业微信自建应用没有完整隔离 sandbox 假设;后续测试默认使用真实企业内受控测试域:`SMOKE002 -> SMOKE101`、`OA-POC` 模板、低风险审批单和脱敏报告。
4. OA 后续保存企微关键历史和完整外部关联键;V1 目标是企微不可用时能查看历史,不是完整替代企微继续办理。
@@ -297,7 +297,7 @@ WAPC2 请假/补卡只读 POC 操作口径:
1. 优先用 WAPC2F runner 自动生成 OA-POC 请假/补卡测试模板和低风险测试审批单;当前 dry-run 已通过,真实创建模板/审批单前仍需管理员批准单次 live 创建。
2. WAPC2F 默认申请人为 `SMOKE002`,审批人为 `SMOKE101`;两者必须 active、已绑定企微、可见、不是同一 OA 员工、不是同一企微 userid。`SMOKE101` 不可用时不自动换人,先问答确认。
3. WAPC2F live 创建只能在单次命令同时包含 `--live --create-templates --submit-test-approvals` 且设置 `WECOM_APPROVAL_FIXTURE_WRITE=1` 时执行;默认 dry-run 不获取写入 token、不在企微后台留下 OA-POC 记录。WAPC2FLIVE 已执行一次批准的 live 创建,后续不得重复创建样件,除非另建 Issue CSV 并再次批准。
3. WAPC2F live 创建只能在单次命令同时包含 `--live --create-templates --submit-test-approvals` 且设置 `WECOM_APPROVAL_FIXTURE_WRITE=1` 时执行;默认 dry-run 不获取写入 token、不在企微后台留下 OA-POC 记录。WAPC2FLIVE 已执行一次批准的 live 创建,后续不得重复创建样件,除非另建 Trellis task 并再次批准。
4. 测试单 `sp_no` 不得包含采购、合同、报销、发票、银行回单、高敏附件或真实敏感业务资料。
5. QA 在服务器容器内执行 `npm run check:wecom-approval-poc -- --live --format=json`,并通过 CLI 或临时 env 传入请假/补卡模板 ID 和 `sp_no`。
6. 报告结论 `PASS_APPROVAL_POC` 只代表模板详情和审批详情只读链路可用;`PARTIAL_APPROVAL_POC_NEEDS_CONFIG` 代表缺模板 ID 或 `sp_no`;`SKIP/BLOCKED_BY_EXTERNAL_CONFIG` 代表 Secret、权限、可信 IP、可见范围或企微 API 阻断。
@@ -504,7 +504,7 @@ Day 7 选项固定:
备份恢复演练必须在不影响公网生产库的前提下完成。可以使用影子库、临时恢复库或受控恢复验证;不得为了演练重置公网数据库。证据路径可通过 `OALAUNCH_BACKUP_EVIDENCE` 传给汇总脚本。权限矩阵和真实业务闭环证据也可分别通过 `OALAUNCH_PERMISSION_EVIDENCE`、`OALAUNCH_BUSINESS_EVIDENCE` 指定脱敏证据文件。
制度对齐证据默认读取 OPOLICY1 Issue CSV;如需指定外部制度验收摘要或脱敏评审证据,可通过 `OALAUNCH_POLICY_EVIDENCE` 指定路径。缺 OPOLICY1 收口时,最终启用汇总必须继续保持 `PAUSED_MANUAL_CONFIRMATION`。
制度对齐证据默认读取 OPOLICY1 历史合同或后续 Trellis task;如需指定外部制度验收摘要或脱敏评审证据,可通过 `OALAUNCH_POLICY_EVIDENCE` 指定路径。缺 OPOLICY1 收口时,最终启用汇总必须继续保持 `PAUSED_MANUAL_CONFIRMATION`。
### 3.8 OPOLICY1 制度对齐与人工门禁
@@ -517,7 +517,7 @@ OPOLICY1 是正式启用前的制度收口层。它不新增一套业务流程
| 用印台账 | V1 先通过合同台账的摘要、归档位置、离线档案号和附件审计承载用印记录;至少记录事项、文件版本、份数、审批状态、日期、责任人和归档位置 | 现有字段无法说明时,先用人工台账补充,后续再立项做专用字段 |
| 审批异常 SOP | 无审批人、自审、越权可见、付款/AP 卡住、合同或资料敏感信息误上传均视为阻断 | 当天建修复合同、人工绕行留风险,或暂停对应流程 |
| 制度签收 | 员工利益相关制度先保留纸面或电子签收证据;OA 公告可发布制度通知,但不把公告阅读等同于正式签收 | 缺签收时不进入最终 Go/No-Go |
| P2 冻结 | 复杂预算、复杂招采、电子签章、完整档案系统、ERP、银行流水导入、真实支付直连和 AI 写规则继续冻结 | 真实使用证明必要后另建 Issue CSV |
| P2 冻结 | 复杂预算、复杂招采、电子签章、完整档案系统、ERP、银行流水导入、真实支付直连和 AI 写规则继续冻结 | 真实使用证明必要后另建 Trellis task |
制度参数人工问答建议:
@@ -6,7 +6,7 @@
**上级事实源**:[海音达OA-MVP需求规格说明书](./海音达OA-MVP需求规格说明书.md)
**相关事实源**:[需求 - 统一审批中心规约](./需求-统一审批中心规约.md)、[企微 API 能力目录](./企微API能力目录.md)
本规约细化企业微信在 `hyb-oa` 中的基础设施边界、入口、免登/绑定、通讯录身份、消息通知、deeplink、打卡、人事助手、原生审批、OA 自建留存、OA 镜像、人工接管和恢复回写要求。WFOC 起产品方向调整为“企微优先 + OA 无痛接管”;DBWFOC 后进一步固定为:HR/考勤员工日常审批优先使用企业微信,OA 做按域镜像、备份接管、财务闭环和审计中台;采购、合同、项目、财务和高敏附件继续由 OA 主办。WAPI 后,所有企微相关开发必须先读取本规约和 [企微 API 能力目录](./企微API能力目录.md),确认官方 API、Secret、权限、可信 IP、回调/模板和读写边界,再拆 Issue CSV。WMSG1 已证明企业微信应用消息和 Deeplink 真机回流可用;WAPC1 后审批进入配置准备清单,WAPC2 后先做请假/补卡模板详情与低风险 `sp_no` 只读 POC;WAPC2F 已实现 OA-POC 样件 dry-run并公网验证 `PASS_FIXTURE_DRY_RUN_READY`。WAPC2FLIVE 已在用户批准后创建 OA-POC 请假/补卡测试模板和低风险测试审批单,自动复跑 WAPC2 为 `PASS_APPROVAL_POC`。WCBK1 已完成真实回调 URL 验证和一条现有 OA-POC 测试审批单事件确认,公网结论 `PASS_CALLBACK_EVENT_CONFIRMED`。WEGOV1 后固定“企微主办 HR/考勤成熟能力,OA 保存关键历史和外部关联键”的路线。WACP3R 已自动发现 OA-POC 请假/补卡模板并完成公网补偿拉取复跑,报告为 `PASS_WITH_FINDINGS`;补偿拉取和详情读取可用,当时 finding 为回调证据文件未持久化。WREAD1F 后,用户真机确认请假/补卡审批卡片、列表和详情页可读,远端报告为 `PASS_READABLE`;同意单击即通过作为操作风险进入后续设计。WADM1 已完成自建留存/镜像数据模型设计,WARCH1 已创建最小审批留存迁移和运行时入库路径,WARCH2 已提供 OA DB 正式只读查询 API 和 PC/移动历史页。WROAD2 后先做测试账号受控上线和每日巡检;WARCH3 已新增服务器 07:30 systemd timer 和脱敏企微告警;WCHECK1 已新增打卡摘要留存;WEXT1 已新增外出/加班 dry-run;WOPS1 已完成告警降噪。WROAD2-BIZ1 在三天内补充测试账号打卡、请假、补卡和 OA 离线查看人工业务冒烟;WAPPR1 把审批规则规范化列为真实试用前门禁,申请人不得任意选择审批人,正式模板必须自动带出审批人。WTCLOSE2F 后,后续先远端收口和 WFULLSMOKE2 全域 smoke,再使用正式外出/加班模板由 `SMOKE002` 人工提交、`SMOKE101` 审批,系统只读补偿、归档和审批链;不再自动创建外出/加班 OA-POC 模板。四类测试号证据和审批规则门禁通过前不问真实员工试用,不直接进入完整审批镜像、应急接管、恢复回写或 RuleOps。
本规约细化企业微信在 `hyb-oa` 中的基础设施边界、入口、免登/绑定、通讯录身份、消息通知、deeplink、打卡、人事助手、原生审批、OA 自建留存、OA 镜像、人工接管和恢复回写要求。WFOC 起产品方向调整为“企微优先 + OA 无痛接管”;DBWFOC 后进一步固定为:HR/考勤员工日常审批优先使用企业微信,OA 做按域镜像、备份接管、财务闭环和审计中台;采购、合同、项目、财务和高敏附件继续由 OA 主办。WAPI 后,所有企微相关开发必须先读取本规约和 [企微 API 能力目录](./企微API能力目录.md),确认官方 API、Secret、权限、可信 IP、回调/模板和读写边界,再拆 Trellis task。WMSG1 已证明企业微信应用消息和 Deeplink 真机回流可用;WAPC1 后审批进入配置准备清单,WAPC2 后先做请假/补卡模板详情与低风险 `sp_no` 只读 POC;WAPC2F 已实现 OA-POC 样件 dry-run并公网验证 `PASS_FIXTURE_DRY_RUN_READY`。WAPC2FLIVE 已在用户批准后创建 OA-POC 请假/补卡测试模板和低风险测试审批单,自动复跑 WAPC2 为 `PASS_APPROVAL_POC`。WCBK1 已完成真实回调 URL 验证和一条现有 OA-POC 测试审批单事件确认,公网结论 `PASS_CALLBACK_EVENT_CONFIRMED`。WEGOV1 后固定“企微主办 HR/考勤成熟能力,OA 保存关键历史和外部关联键”的路线。WACP3R 已自动发现 OA-POC 请假/补卡模板并完成公网补偿拉取复跑,报告为 `PASS_WITH_FINDINGS`;补偿拉取和详情读取可用,当时 finding 为回调证据文件未持久化。WREAD1F 后,用户真机确认请假/补卡审批卡片、列表和详情页可读,远端报告为 `PASS_READABLE`;同意单击即通过作为操作风险进入后续设计。WADM1 已完成自建留存/镜像数据模型设计,WARCH1 已创建最小审批留存迁移和运行时入库路径,WARCH2 已提供 OA DB 正式只读查询 API 和 PC/移动历史页。WROAD2 后先做测试账号受控上线和每日巡检;WARCH3 已新增服务器 07:30 systemd timer 和脱敏企微告警;WCHECK1 已新增打卡摘要留存;WEXT1 已新增外出/加班 dry-run;WOPS1 已完成告警降噪。WROAD2-BIZ1 在三天内补充测试账号打卡、请假、补卡和 OA 离线查看人工业务冒烟;WAPPR1 把审批规则规范化列为真实试用前门禁,申请人不得任意选择审批人,正式模板必须自动带出审批人。WTCLOSE2F 后,后续先远端收口和 WFULLSMOKE2 全域 smoke,再使用正式外出/加班模板由 `SMOKE002` 人工提交、`SMOKE101` 审批,系统只读补偿、归档和审批链;不再自动创建外出/加班 OA-POC 模板。四类测试号证据和审批规则门禁通过前不问真实员工试用,不直接进入完整审批镜像、应急接管、恢复回写或 RuleOps。
---
@@ -234,7 +234,7 @@ REQAUD 复核后,ATTV1 已完成统一入口实现,企业微信打卡边界
## 7.8 WDRG 开发路线图门禁
- WDRG 后,企业微信相关运行时迁移采用“路线图门禁 + 单功能 Issue CSV”,路线图事实源为 [企微优先开发路线图](./企微优先开发路线图.md)。
- WDRG 后,企业微信相关运行时迁移采用“路线图门禁 + 单功能 Trellis task”,路线图事实源为 [企微优先开发路线图](./企微优先开发路线图.md)。
- WROAD2 后阶段顺序调整为 `WECOM-CAPABILITY-POC-V1` -> `wecom_hr_master_sync_v1` -> `runtime_first_wecom_enablement` -> `WOUA-FIX / WECOM-RUNTIME-READY-V1` -> `WAPC1 审批配置准备` -> `WAPC2 请假/补卡只读 POC` -> `WAPC2F 自动生成 POC 样件` -> `WAPC2FLIVE live 创建与 WAPC2 自动复跑` -> `WCBK1 回调只读 POC` -> `WEGOV1 企微主办治理与自建留存路线修正` -> `WACP3/WACP3R 补偿拉取 POC` -> `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 测试号收口到最小镜像路线锁定` -> `WTCLOSE2/WTCLOSE2F 远端可信 IP 执行口径修正` -> `WREMOTE1/WFULLSMOKE2 远端收口` -> `WEXT1-FORMAL 正式模板外出/加班测试` -> `WREAL1 小范围真实试用(首批 1 名真实员工 + 1 名审批人/管理员观察)` -> `wecom_attendance_approval_mirror_v1 最小完整镜像` -> `oa_hr_emergency_mode_v1` -> `wecom_recovery_writeback_v1` -> `wecom_ruleops_v1`;其中 WREAL1 只能在请假、补卡、外出、加班四类测试号证据和审批规则门禁通过后再问答启动。
- `WECOM-CAPABILITY-POC-V1` 已由 WCPC 收口,WHMS/WHMSLIVE 已完成 HR 主数据镜像实现和受控公网验证;后续不得跳过运行优先门禁和 WOUA 差异处理决策直接开发企微 HR/考勤审批镜像、OA 应急接管、恢复回写或 RuleOps 正式写入。
- 运行优先阶段先利用入口、免登/绑定、脱敏消息、deeplink、通讯录 userid 清单、人事助手花名册读取和打卡读取;WOUA-FIX 已按用户确认软归档 7 个缺企微测试账号,复检 `oaActiveMissingInWecom=0`;剩余企微缺字段先接受不补,归档测试绑定保留审计。WRV1 用 `server/src/scripts/check-wecom-runtime-ready.js` 固化运行优先门禁,WRA1 修正 QA-only 打卡只读门禁,WMSG1 完成真实消息和 Deeplink 真机确认。报告结论只能是 `PASS_RUNTIME_READY`、`PASS_WITH_CONFIG_GAPS` 或 `SKIP/BLOCKED_BY_EXTERNAL_CONFIG`。该结论仍不能直接放行深度镜像,深度考勤/审批镜像需在 WAPC1、WAPC2、WAPC2F/WAPC2FLIVE、WCBK1、WEGOV1、WACP3、WREAD1、WADM1、WARCH1、WARCH2、WROAD2+OPS、WARCH3、WCHECK1、WEXT1、WROAD2-CLOSEOUT、WROAD2-BIZ1、WAPPR1、WRULE1、WTCLOSE2/WREMOTE1、WEXT1-FORMAL 和 WREAL1 或明确批准后再拆。
+1 -1
查看文件
@@ -47,7 +47,7 @@
- 用印台账 V1 先由合同台账字段和人工记录承载:事项、文件版本、份数、审批状态、日期、用印管理员或责任人、线下归档位置。现有字段可使用摘要、归档位置、离线档案号和非涉密证明附件组合表达。
- 涉密合同正文、敏感报价、成本细节、客户敏感资料和完整线下路径不得进入公网 OA;只登记可控摘要、敏感级别、负责人、项目/采购/付款关联和归档位置摘要。
- 电子签章、合同智能审阅、完整法务会签和全量电子档案留存继续作为 P2 后置能力;真实使用证明现有字段不足时,另建 Issue CSV 再做 schema/UI 小改。
- 电子签章、合同智能审阅、完整法务会签和全量电子档案留存继续作为 P2 后置能力;真实使用证明现有字段不足时,另建 Trellis task 再做 schema/UI 小改。
- 审批异常 SOP 固定为阻断项:无审批人、自审、越权查看附件、误传涉密正文或用印责任不清时,暂停对应流程并当天登记修复或人工绕行责任。
---
+1 -1
查看文件
@@ -6,7 +6,7 @@
**上级事实源**:[海音达OA-MVP需求规格说明书](./海音达OA-MVP需求规格说明书.md)
**细则来源**:[报销、发票与附件规则](./报销发票附件规则.md)
本规约细化报销、发票、OCR、附件、查重、财务复核、付款和导出的产品要求。后续报销主链路开发必须先从本规约拆分 Issue CSV,再进入技术方案和代码实现。
本规约细化报销、发票、OCR、附件、查重、财务复核、付款和导出的产品要求。后续报销主链路开发必须先从本规约拆分 Trellis task,再进入技术方案和代码实现。
---
+3 -3
查看文件
@@ -5,7 +5,7 @@
**状态**:模块级开发规约
**上级事实源**:[海音达OA-MVP需求规格说明书](./海音达OA-MVP需求规格说明书.md)
本规约细化 `hyb-oa` 审批中心和企业微信原生审批镜像的产品边界、角色权限、状态模型、异常规则、留痕要求和验收场景。WFOC 起,审批按主办方分层;DBWFOC 后边界进一步收窄:报销、财务、采购、合同和项目类审批继续由 OA 主办;请假、补卡、外出、加班等 HR/考勤员工日常审批优先由企业微信主办,OA 同步按域镜像并保留自建历史留存、人工接管和恢复回写能力。WMSG1 已验证企业微信应用消息和 Deeplink 回流,WAPC1 后审批镜像前置工作进入配置准备清单阶段,WAPC2 已提供请假/补卡只读 POC runner,WAPC2FLIVE 已自动生成请假/补卡 OA-POC 样件并复跑通过。WCBK1 已完成只读回调 URL 验证和真实审批事件确认,结论为 `PASS_CALLBACK_EVENT_CONFIRMED`。WEGOV1 后明确先利用企微成熟审批和考勤能力,同时由 OA 保存关键历史和外部关联键。WACP3R 已自动发现 OA-POC 请假/补卡模板并公网复跑到 `PASS_WITH_FINDINGS`:补偿拉取和详情读取可用,finding 是回调证据文件未持久化。WREAD1F 后已完成请假/补卡真机可读性确认:消息卡片、列表、详情页均可看清,远端报告 `/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T133628Z/summary.json` 为 `PASS_READABLE`;但同意按钮单击即通过,需在归档审计、提示或操作规程中处理。WADM1 已完成自建留存/镜像数据模型设计;WARCH1 已实现请假/补卡最小历史留存;WARCH2 已新增正式只读历史查询 API 和 PC/移动历史页。WAPPR1/WRULE1 后固定“单一组织规则,两个执行域”:OA 维护员工主管链、业务审批角色和管理员兜底事实,企业微信执行 HR/考勤审批,OA 只做归档和理论审批人校验;完整镜像、应急接管、恢复回写和 RuleOps 仍不能直接放行。后续审批相关开发必须先从本规约拆分 Issue CSV,再进入技术方案和代码实现。
本规约细化 `hyb-oa` 审批中心和企业微信原生审批镜像的产品边界、角色权限、状态模型、异常规则、留痕要求和验收场景。WFOC 起,审批按主办方分层;DBWFOC 后边界进一步收窄:报销、财务、采购、合同和项目类审批继续由 OA 主办;请假、补卡、外出、加班等 HR/考勤员工日常审批优先由企业微信主办,OA 同步按域镜像并保留自建历史留存、人工接管和恢复回写能力。WMSG1 已验证企业微信应用消息和 Deeplink 回流,WAPC1 后审批镜像前置工作进入配置准备清单阶段,WAPC2 已提供请假/补卡只读 POC runner,WAPC2FLIVE 已自动生成请假/补卡 OA-POC 样件并复跑通过。WCBK1 已完成只读回调 URL 验证和真实审批事件确认,结论为 `PASS_CALLBACK_EVENT_CONFIRMED`。WEGOV1 后明确先利用企微成熟审批和考勤能力,同时由 OA 保存关键历史和外部关联键。WACP3R 已自动发现 OA-POC 请假/补卡模板并公网复跑到 `PASS_WITH_FINDINGS`:补偿拉取和详情读取可用,finding 是回调证据文件未持久化。WREAD1F 后已完成请假/补卡真机可读性确认:消息卡片、列表、详情页均可看清,远端报告 `/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T133628Z/summary.json` 为 `PASS_READABLE`;但同意按钮单击即通过,需在归档审计、提示或操作规程中处理。WADM1 已完成自建留存/镜像数据模型设计;WARCH1 已实现请假/补卡最小历史留存;WARCH2 已新增正式只读历史查询 API 和 PC/移动历史页。WAPPR1/WRULE1 后固定“单一组织规则,两个执行域”:OA 维护员工主管链、业务审批角色和管理员兜底事实,企业微信执行 HR/考勤审批,OA 只做归档和理论审批人校验;完整镜像、应急接管、恢复回写和 RuleOps 仍不能直接放行。后续审批相关开发必须先从本规约拆分 Trellis task,再进入技术方案和代码实现。
---
@@ -375,7 +375,7 @@ WF8-3、WF8-4、WF8-5 实现前必须基于本设计给技术方案;实现后
- 采购单附件、合同正文、报价、供应商资料、发票、银行回单、代账资料和其他高敏附件不进入企业微信原生审批或企业微信附件;企业微信只做提醒、deeplink 和免登录回流。
- 按域镜像是默认规则:企微主办 HR/考勤域镜像到 OA;OA 主办采购、合同、项目、财务和报销域不反向全量镜像到企微。
- WFDG 后,审批相关页面和接口必须区分 `OA 主办`、`企微镜像` 和 `OA 应急接管`;企微镜像不得被误用为 OA 日常新建入口,OA 应急接管单据必须带 `EMERGENCY` 并进入恢复回写队列。
- WAPI/WRRA/WOUA-FIX/WAPC1/WAPC2/WPROC1/WEGOV1 后,审批相关运行时迁移必须先读 [企微优先开发路线图](./企微优先开发路线图.md) 和 [企微 API 能力目录](./企微API能力目录.md),按 `wecom_hr_master_sync_v1` -> `runtime_first_wecom_enablement` -> `WOUA-FIX / WECOM-RUNTIME-READY-V1` -> `WAPC1 审批配置准备` -> `WAPC2 请假/补卡只读 POC` -> `WAPC2F 自动生成 POC 样件` -> `WAPC2FLIVE live 创建与 WAPC2 自动复跑` -> `WCBK1 回调只读 POC` -> `WEGOV1 企微主办治理与自建留存路线修正` -> `WACP3/WACP3R 补偿拉取 POC` -> `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 测试号收口到最小镜像路线锁定` -> `WTCLOSE2 测试号最终收口与证据复核` -> `WTCLOSE2F 远端可信 IP 执行口径修正` -> `WREMOTE1/WFULLSMOKE2 远端收口` -> `WEXT1-FORMAL 正式模板外出/加班测试` -> `四类测试号证据和审批规则门禁通过后问答 WREAL1 小范围真实试用(首批 1 名真实员工 + 1 名审批人/管理员观察)` -> `wecom_attendance_approval_mirror_v1 最小完整镜像` -> `oa_hr_emergency_mode_v1` -> `wecom_recovery_writeback_v1` 的顺序拆单功能 Issue CSV;WOUA-FIX 只收口了用户一致性测试账号差异和处理决策,WRV1/WRA1/WMSG1 只验证入口、OAuth/绑定、脱敏消息、deeplink、通讯录、人事助手、打卡只读主链路和真实消息回流。WAPC1 只固化审批配置准备清单;WAPC2 只读模板详情和低风险 `sp_no` 审批详情;WAPC2FLIVE 只生成 OA-POC 低风险测试样件并自动复跑只读 POC;WCBK1 只证明真实审批状态回调可验签、可解密、可脱敏留证;WACP3R 只证明补偿拉取和详情读取可用,并发现回调证据文件未持久化;WEGOV1 只修正混合主办、自建留存和测试治理口径;WREAD1 只证明请假/补卡当前样例可读;WADM1 只完成模型设计;WARCH1 已实现请假/补卡最小历史留存;WARCH2 只提供只读查询 API 和历史页;WEXT1 只完成外出/加班 dry-run;WROAD2-BIZ1 只补充测试账号人工业务冒烟清单;WAPPR1 将申请人任意选择审批人列为真实试用前阻断 finding;WRULE1 只校验已归档审批链;WAUTO1 只做自动证据汇总,WEXT1LD 只做 live 前 dry-run,WFULLSMOKE1 只做全域主路径总控;WROUTE2 只锁定路线,WTCLOSE2/WREMOTE1 只做远端收口和全域 smoke,不授权写企微;WEXT1-FORMAL 人工提交前必须另建合同并再次人工确认。完整企微审批镜像必须等 WREAL1 通过后再规划,应急接管和恢复回写仍后置,不得用 WARCH1/WARCH2 或测试号证据直接放行。
- WAPI/WRRA/WOUA-FIX/WAPC1/WAPC2/WPROC1/WEGOV1 后,审批相关运行时迁移必须先读 [企微优先开发路线图](./企微优先开发路线图.md) 和 [企微 API 能力目录](./企微API能力目录.md),按 `wecom_hr_master_sync_v1` -> `runtime_first_wecom_enablement` -> `WOUA-FIX / WECOM-RUNTIME-READY-V1` -> `WAPC1 审批配置准备` -> `WAPC2 请假/补卡只读 POC` -> `WAPC2F 自动生成 POC 样件` -> `WAPC2FLIVE live 创建与 WAPC2 自动复跑` -> `WCBK1 回调只读 POC` -> `WEGOV1 企微主办治理与自建留存路线修正` -> `WACP3/WACP3R 补偿拉取 POC` -> `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 测试号收口到最小镜像路线锁定` -> `WTCLOSE2 测试号最终收口与证据复核` -> `WTCLOSE2F 远端可信 IP 执行口径修正` -> `WREMOTE1/WFULLSMOKE2 远端收口` -> `WEXT1-FORMAL 正式模板外出/加班测试` -> `四类测试号证据和审批规则门禁通过后问答 WREAL1 小范围真实试用(首批 1 名真实员工 + 1 名审批人/管理员观察)` -> `wecom_attendance_approval_mirror_v1 最小完整镜像` -> `oa_hr_emergency_mode_v1` -> `wecom_recovery_writeback_v1` 的顺序拆单功能 Trellis task;WOUA-FIX 只收口了用户一致性测试账号差异和处理决策,WRV1/WRA1/WMSG1 只验证入口、OAuth/绑定、脱敏消息、deeplink、通讯录、人事助手、打卡只读主链路和真实消息回流。WAPC1 只固化审批配置准备清单;WAPC2 只读模板详情和低风险 `sp_no` 审批详情;WAPC2FLIVE 只生成 OA-POC 低风险测试样件并自动复跑只读 POC;WCBK1 只证明真实审批状态回调可验签、可解密、可脱敏留证;WACP3R 只证明补偿拉取和详情读取可用,并发现回调证据文件未持久化;WEGOV1 只修正混合主办、自建留存和测试治理口径;WREAD1 只证明请假/补卡当前样例可读;WADM1 只完成模型设计;WARCH1 已实现请假/补卡最小历史留存;WARCH2 只提供只读查询 API 和历史页;WEXT1 只完成外出/加班 dry-run;WROAD2-BIZ1 只补充测试账号人工业务冒烟清单;WAPPR1 将申请人任意选择审批人列为真实试用前阻断 finding;WRULE1 只校验已归档审批链;WAUTO1 只做自动证据汇总,WEXT1LD 只做 live 前 dry-run,WFULLSMOKE1 只做全域主路径总控;WROUTE2 只锁定路线,WTCLOSE2/WREMOTE1 只做远端收口和全域 smoke,不授权写企微;WEXT1-FORMAL 人工提交前必须另建合同并再次人工确认。完整企微审批镜像必须等 WREAL1 通过后再规划,应急接管和恢复回写仍后置,不得用 WARCH1/WARCH2 或测试号证据直接放行。
- WRV1/WRA1 runner `npm run check:wecom-runtime-ready` 中的审批模板、测试 `sp_no` 和真实回调检查只允许输出 `NEEDS_CONFIG`;这类缺口不阻断运行优先主链路的 `PASS_WITH_CONFIG_GAPS`,但必须阻断 `wecom_attendance_approval_mirror_v1`、应急恢复回写和 RuleOps。`WECOM_CHECKIN_SYNC_ENABLED` 只控制正式考勤同步批次,不阻断 QA-only 打卡只读能力探测。
- WMSG1 已证明企业微信应用消息可达和 Deeplink 可进入 OA 通知页;该证据只清除通知链路,不清除审批模板、测试 `sp_no` 或真实回调前置。WAPC1 固化配置准备清单后,WAPC2 先提供请假/补卡模板详情和低风险审批详情只读 POC;WPROC1 后优先用 WAPC2F 自动生成 POC 样件,不默认要求人工手动创建模板或测试单。人工介入限于写入批准、密钥/回调配置、企微后台无法 API 化配置、真机确认和风险拍板。
- 后续企微审批同步的 POC 必须输出 `CAN_REUSE_NOW`、`NEEDS_CONFIG`、`NEEDS_API_POC`、`KEEP_OA_PRIMARY`、`NOT_SUPPORTED_BY_API`,缺模板、回调、Secret 或权限时记录 `SKIP/BLOCKED_BY_EXTERNAL_CONFIG`。
@@ -482,7 +482,7 @@ WTCLOSE2F 后,企业微信审批相关业务证据必须来自部署服务器
- 系统只读校验为补偿拉取、审批详情读取、OA 归档读取、WRULE1 审批链校验和隐私扫描;不得调用创建模板、提交审批或其他企微写接口。
- WEXT1F 结论限定为 `PASS_FORMAL_OUTING_OVERTIME_READY`、`PASS_WITH_FINDINGS`、`PAUSED_MANUAL_CONFIRMATION` 或 `SKIP/BLOCKED_BY_EXTERNAL_CONFIG`。
- 若正式模板出现申请人可任意改审批人、自审、审批人不一致、可见范围或可信 IP 阻断,结论记录为 blocking finding,不进入 WREAL1。
- WREAL1 真实员工和审批人信息只通过 `/tmp/hyb-oa-wreal1.env` 临时文件提供,不写入 Issue CSV、仓库文档或聊天。
- WREAL1 真实员工和审批人信息只通过 `/tmp/hyb-oa-wreal1.env` 临时文件提供,不写入 Trellis task、仓库文档或聊天。
### 9.4 WEGOV1 / WACP3 / WREAD1 / WADM1 / WARCH1 前置门禁
+1 -1
查看文件
@@ -39,7 +39,7 @@ OPOLICY1 后,资产台账先服务小团队 V1 的责任追踪、资料留存
- 资料留存只登记摘要、hash、敏感级别、负责人、项目/合同/付款关联和归档位置摘要;S3/S4 原文、完整真实路径、敏感报价、合同正文、银行流水原件和账号凭据不进入公网 OA。
- 账号资产 `EA-ACC` 继续暂缓;离职时检查关键系统权限是否回收,普通账号不逐个做资产卡,任何密码、token、Secret、私钥和完整配置都不保存。
- 备份介质和备份集合既要登记资产责任,也要支撑 OALAUNCH1 备份恢复演练;只记录保管人、范围、加密状态、恢复验证日期和证据摘要,不把生产备份内容上传 OA。
- P2 冻结项包括完整电子档案系统、自动文件外发、账号密码库、源码包托管、银行流水导入和 AI 自动写规则;采纳前必须另建 Issue CSV。
- P2 冻结项包括完整电子档案系统、自动文件外发、账号密码库、源码包托管、银行流水导入和 AI 自动写规则;采纳前必须另建 Trellis task。
## 3. 资产类型口径
+1 -1
查看文件
@@ -49,7 +49,7 @@
- 预算降级为资金安排说明、预算外原因和管理层审批留痕;不得为了通过系统而在代码里硬编码未经确认的金额阈值。
- 采购比价、招标、评标、供应商准入、供应商评分和黑名单继续作为 P2 后置能力;V1 只保留供应商摘要、风险说明、保密要求和项目/合同/付款关联。
- 审批异常 SOP 固定为阻断项:无审批人、自审、越权可见、附件含账号凭据或涉密原文、付款/AP 无法闭环时,当天建修复合同、人工绕行留风险或暂停对应流程。
- P2 冻结项包括复杂 BPM、预算硬控、ERP/银行流水导入、真实支付直连和 AI 自动写规则;采纳前必须另建 Issue CSV。
- P2 冻结项包括复杂 BPM、预算硬控、ERP/银行流水导入、真实支付直连和 AI 自动写规则;采纳前必须另建 Trellis task。
---
+5 -1
查看文件
@@ -163,7 +163,11 @@ function checkCoreFiles(result) {
} else {
pass(result, "agents.workflow_pointer", "AGENTS.md points to Trellis workflow");
}
if (/每个 task 必须绑定|先有 Issue CSV 再开发/.test(agents)) {
const legacyIssueRequiredPatterns = [
/每个\s*task\s*必须绑定/,
/先有\s+Issue\s+CSV\s+再开发/,
];
if (legacyIssueRequiredPatterns.some((pattern) => pattern.test(agents))) {
fail(result, "agents.legacy_issue_required", "AGENTS.md still requires Issue CSV before development");
}
}