WPROC2 增加开发流程自动化门禁

这个提交包含在:
2026-05-19 12:26:53 +08:00
父节点 bb5e204d95
当前提交 45caee97ba
共修改 12 个文件,包含 694 行新增和 36 行删除
@@ -1,10 +1,10 @@
ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
"WAPC2F-0","合同建档与边界冻结","建立 WAPC2F 企微审批 POC 样件自动生成合同;承接 WAPC2 当前缺模板 ID 和低风险 sp_no 的配置缺口,本轮目标是尽量自动创建专用测试模板和测试审批单。","1) CSV 校验通过;2) 范围限定 OA-POC 前缀请假/补卡测试模板和低风险测试审批单;3) 固定 WECOM_AGENT_SECRET;4) 默认 dry-run;5) 默认测试链为申请人 SMOKE002 -> 审批人 SMOKE101,禁止自审;6) 不修改正式模板、不接真实回调、不写 OA 业务数据、不进入 wecom_attendance_approval_mirror_v1。","受影响流程:WAPC2 缺配置 -> 自动生成 POC 样件 -> 复跑模板/审批详情只读 POC;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv。","python3|manual","TODO","TODO","TODO","issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv","[]","本合同允许规划自动写企微测试样件,但真实 live 写入仍需后续实施前确认;回滚路径:撤回本轮代码/文档,企微后台中 OA-POC 测试模板和测试单如已生成需人工隐藏/停用或保留审计。"
"WAPC2F-0","合同建档与边界冻结","建立 WAPC2F 企微审批 POC 样件自动生成合同;承接 WAPC2 当前缺模板 ID 和低风险 sp_no 的配置缺口,本轮目标是尽量自动创建专用测试模板和测试审批单。","1) CSV 校验通过;2) 范围限定 OA-POC 前缀请假/补卡测试模板和低风险测试审批单;3) 固定 WECOM_AGENT_SECRET;4) 默认 dry-run;5) 默认测试链为申请人 SMOKE002 -> 审批人 SMOKE101,禁止自审;6) 不修改正式模板、不接真实回调、不写 OA 业务数据、不进入 wecom_attendance_approval_mirror_v1。","受影响流程:WAPC2 缺配置 -> 自动生成 POC 样件 -> 复跑模板/审批详情只读 POC;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv;node scripts/qa/check-process-contract.mjs --issue issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv --profile wecom-approval-fixture --json。","python3|node|manual","TODO","TODO","TODO","issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv","[]","WPROC2 baseline gate 通过后才能实施;本合同允许规划自动写企微测试样件,但真实 live 写入仍需后续实施前确认;回滚路径:撤回本轮代码/文档,企微后台中 OA-POC 测试模板和测试单如已生成需人工隐藏/停用或保留审计。"
"WAPC2F-1","路线自动化优先修正","更新路线图和事实源,把 WAPC2 后续阶段调整为自动化优先:WAPC2F 自动生成样件 -> WAPC2 复跑 -> WCBK1 回调 POC -> WACP3 补偿拉取 POC -> WADM1 镜像数据模型 -> 镜像实现。","1) 文档明确后续能自动化的动作优先用 QA-only runner 执行;2) 人工只负责批准写入、配置不可自动化的后台项和确认风险;3) 不再默认要求手工创建模板或测试单;4) 不把自动生成 POC 样件误读为正式模板配置完成。","受影响流程:企微审批路线治理;验证步骤:node scripts/qa/audit-docs.mjs --check-registry;rg -n 'WAPC2F|自动生成|OA-POC|WCBK1|WACP3|WADM1|wecom_attendance_approval_mirror_v1' docs .agents/skills/hyb-oa-delivery/SKILL.md。","node|rg","TODO","TODO","TODO","docs/企微优先开发路线图.md|docs/企微API能力目录.md|docs/需求-统一审批中心规约.md|docs/需求-企业微信基础设施规约.md|docs/管理员手册.md|docs/文档索引.md|docs/文档事实源状态矩阵.md|.agents/skills/hyb-oa-delivery/SKILL.md","[""WAPC2F-0""]","文档只记录自动化策略和边界,不保存 Secret、Token、完整 template_id、完整 sp_no 或原始 payload。"
"WAPC2F-2","企微审批写接口调研与安全门禁","核对企业微信创建审批模板和提交审批申请官方 API 的实际字段、权限、可见范围、可信 IP、审批人规则和限制;固化 live 写入双重或三重确认。","1) create_template/applyevent 的方法、路径、Secret 和字段结构明确;2) 若官方接口不支持所需模板或测试单自动生成,改为 SKIP/BLOCKED_BY_EXTERNAL_CONFIG;3) live 写入必须同时指定 CLI 写入参数和 WECOM_APPROVAL_FIXTURE_WRITE=1;4) 不尝试其他 Secret。","受影响流程:自动样件生成前置安全审查;验证步骤:rg -n '创建审批模板|提交审批申请|applyevent|create_template|WECOM_APPROVAL_FIXTURE_WRITE' docs server/src/scripts server/tests。","rg|manual","TODO","TODO","TODO","docs/企微API能力目录.md|server/src/scripts/check-wecom-approval-fixtures.js|server/src/services/integrations/wecomApproval.js","[""WAPC2F-1""]","若官方文档或远端 API 返回能力不支持,后续只记录不可自动化项,不做绕路试错。"
"WAPC2F-3","QA-only 样件生成 runner","新增 QA-only runner check-wecom-approval-fixtures,用于 dry-run/live 创建 OA-POC 请假/补卡测试模板、提交低风险测试审批单,并输出脱敏 summary.json。","1) package.json 增加 check:wecom-approval-fixtures;2) 默认 dry-run 只构建脱敏 payload;3) live 写入必须显式 --live --create-templates --submit-test-approvals 且 WECOM_APPROVAL_FIXTURE_WRITE=1;4) 支持指定申请人/审批人员工号,默认申请人 SMOKE002、审批人 SMOKE101;5) 预检两者 active、已绑定企微、可见、不是同一 OA 员工且不是同一企微 userid;6) 命中自审时硬阻断;7) 报告不输出完整模板 ID、完整 sp_no、userid、手机号、邮箱、token、secret、表单值、附件、评论或原始 payload。","受影响流程:自动创建测试模板和测试审批单;验证步骤:cd server && node --check src/scripts/check-wecom-approval-fixtures.js;cd server && npx vitest run tests/unit/scripts/check-wecom-approval-fixtures.test.js --reporter=verbose。","node|vitest","TODO","TODO","TODO","server/src/scripts/check-wecom-approval-fixtures.js|server/package.json","[""WAPC2F-2""]","runner 只用于 QA 样件生成;不新增公开业务 API,不改 Prisma schema,不改前端;如果 SMOKE101 不可用,不自动切换为 HYD000007 或其他审批人,返回配置缺口并问答确认。"
"WAPC2F-4","审批模板创建与测试审批提交集成","扩展企微审批集成服务,固定 WECOM_AGENT_SECRET 调用创建审批模板和提交审批申请接口,并复用 WAPC2 脱敏、错误分类和无 fallback 规则。","1) 创建模板只创建 OA-POC 前缀测试模板;2) 提交审批只提交低风险无附件测试单;3) 申请人/审批人命中同一 OA 员工或同一企微 userid 时返回自审阻断;4) API 错误、权限、可见范围、可信 IP 或模板能力限制均返回 BLOCKED_BY_EXTERNAL_CONFIG;5) 不修改或覆盖正式模板。","受影响流程:企微审批测试样件写入;验证步骤:cd server && node --check src/services/integrations/wecomApproval.js;focused vitest 覆盖固定 Secret、无 fallback、dry-run/live 分支、自审阻断和 API 错误分类。","node|vitest","TODO","TODO","TODO","server/src/services/integrations/wecomApproval.js","[""WAPC2F-3""]","真实写企微测试模板可能在企微后台留下记录,报告和最终说明必须提醒管理员后续隐藏/停用/保留审计。"
"WAPC2F-2","企微审批写接口调研与安全门禁","核对企业微信创建审批模板和提交审批申请官方 API 的实际字段、权限、可见范围、可信 IP、审批人规则和限制;固化 live 写入双重或三重确认。","1) create_template/applyevent 的方法、路径、Secret 和字段结构明确;2) 若官方接口不支持所需模板或测试单自动生成,改为 SKIP/BLOCKED_BY_EXTERNAL_CONFIG;3) live 写入必须同时指定 CLI 写入参数和 WECOM_APPROVAL_FIXTURE_WRITE=1;4) 不尝试其他 Secret。","受影响流程:自动样件生成前置安全审查;验证步骤:rg -n '创建审批模板|提交审批申请|applyevent|create_template|WECOM_APPROVAL_FIXTURE_WRITE' docs server/src/scripts server/tests。","rg|manual","TODO","TODO","TODO","docs/企微API能力目录.md|server/src/scripts/check-wecom-approval-fixtures.js|server/src/services/integrations/wecomApproval.js","[""WAPC2F-1""]","若官方文档或远端 API 返回能力不支持,后续只记录不可自动化项,不做绕路试错;live 写入前必须明确清理/隐藏/停用或保留审计方式。"
"WAPC2F-3","QA-only 样件生成 runner","新增 QA-only runner check-wecom-approval-fixtures,用于 dry-run/live 创建 OA-POC 请假/补卡测试模板、提交低风险测试审批单,并输出脱敏 summary.json。","1) package.json 增加 check:wecom-approval-fixtures;2) 默认 dry-run 只构建脱敏 payload;3) live 写入必须显式 --live --create-templates --submit-test-approvals 且 WECOM_APPROVAL_FIXTURE_WRITE=1;4) 支持指定申请人/审批人员工号,默认申请人 SMOKE002、审批人 SMOKE101;5) 预检两者 active、已绑定企微、可见、不是同一 OA 员工且不是同一企微 userid;6) 命中自审时硬阻断;7) 报告不输出完整模板 ID、完整 sp_no、完整 userid、手机号、邮箱、token、secret、表单值、附件、评论或原始 payload。","受影响流程:自动创建测试模板和测试审批单;验证步骤:node scripts/qa/check-process-contract.mjs --baseline --json;cd server && node --check src/scripts/check-wecom-approval-fixtures.js;cd server && npx vitest run tests/unit/scripts/check-wecom-approval-fixtures.test.js --reporter=verbose。","node|vitest","TODO","TODO","TODO","server/src/scripts/check-wecom-approval-fixtures.js|server/package.json","[""WAPC2F-2""]","WPROC2 baseline gate 通过后才能实施;runner 只用于 QA 样件生成;不新增公开业务 API,不改 Prisma schema,不改前端;如果 SMOKE101 不可用,不自动切换为 HYD000007 或其他审批人,返回配置缺口并问答确认;live 写入留下的 OA-POC 测试模板/测试单需按清理、隐藏、停用或保留审计方式处理。"
"WAPC2F-4","审批模板创建与测试审批提交集成","扩展企微审批集成服务,固定 WECOM_AGENT_SECRET 调用创建审批模板和提交审批申请接口,并复用 WAPC2 脱敏、错误分类和无 fallback 规则。","1) 创建模板只创建 OA-POC 前缀测试模板;2) 提交审批只提交低风险无附件测试单;3) 申请人/审批人命中同一 OA 员工或同一企微 userid 时返回自审阻断;4) API 错误、权限、可见范围、可信 IP 或模板能力限制均返回 BLOCKED_BY_EXTERNAL_CONFIG;5) 不修改或覆盖正式模板。","受影响流程:企微审批测试样件写入;验证步骤:node scripts/qa/check-process-contract.mjs --issue issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv --profile wecom-approval-fixture --json;cd server && node --check src/services/integrations/wecomApproval.js;focused vitest 覆盖固定 Secret、无 fallback、dry-run/live 分支、自审阻断和 API 错误分类。","node|vitest","TODO","TODO","TODO","server/src/services/integrations/wecomApproval.js","[""WAPC2F-3""]","真实写企微测试模板可能在企微后台留下记录;回滚/清理口径为后续隐藏、停用、人工清理或保留审计,报告和最终说明必须提醒管理员。"
"WAPC2F-5","自动复跑 WAPC2 只读 POC","样件生成成功后,runner 自动把生成的模板 ID 和 sp_no 传给现有 check:wecom-approval-poc,验证 gettemplatedetail/getapprovaldetail 只读链路。","1) 样件生成成功后自动复用 WAPC2 runner 或等价内部函数复跑;2) 目标结论 PASS_APPROVAL_POC;3) 若只生成部分样件则返回 PARTIAL_APPROVAL_POC_NEEDS_CONFIG;4) 若企微阻断则返回 SKIP/BLOCKED_BY_EXTERNAL_CONFIG。","受影响流程:自动生成样件 -> 自动只读验证 -> 输出一份可审计结论;验证步骤:cd server && npx vitest run tests/unit/scripts/check-wecom-approval-fixtures.test.js tests/unit/scripts/check-wecom-approval-poc.test.js --reporter=verbose。","vitest|node","TODO","TODO","TODO","server/src/scripts/check-wecom-approval-fixtures.js|server/src/scripts/check-wecom-approval-poc.js","[""WAPC2F-4""]","自动复跑不得把生成的完整 ID 或 sp_no 写入报告;只允许脱敏前缀和计数。"
"WAPC2F-6","Focused 单测与隐私回归","新增 focused vitest 覆盖样件生成 runner、写入保护、无 Secret fallback、脱敏报告、自动复跑和阻断分类。","1) 覆盖 dry-run 默认不写;2) 覆盖缺 WECOM_APPROVAL_FIXTURE_WRITE 时 live 不写;3) 覆盖 WECOM_AGENT_SECRET 固定选择;4) 覆盖创建模板、提交测试单、自动复跑;5) 覆盖申请人/审批人相同时自审硬阻断;6) 覆盖 SMOKE101 不可用时不自动换人;7) 覆盖隐私字段不泄露。","受影响流程:WAPC2F 本地质量门禁;验证步骤:cd server && npx vitest run tests/unit/scripts/check-wecom-approval-fixtures.test.js tests/unit/scripts/check-wecom-approval-poc.test.js --reporter=verbose。","vitest","TODO","TODO","TODO","server/tests/unit/scripts/check-wecom-approval-fixtures.test.js|server/tests/unit/scripts/check-wecom-approval-poc.test.js","[""WAPC2F-5""]","单测使用 mock fetch,不访问公网,不写企微。"
"WAPC2F-7","本地门禁与公网受控验证","本地门禁通过后,以 SYNC_ENV=0 受控部署;远端先 dry-run,再在单次进程内设置 WECOM_APPROVAL_FIXTURE_WRITE=1 执行 live 样件生成和 WAPC2 自动复跑。","1) 本地 CSV、node --check、prisma validate、focused vitest、文档审计、skill 校验和 git diff --check 通过;2) SYNC_ENV=0 部署,不同步本地 env;3) live 写入只创建 OA-POC 测试样件,申请链固定 SMOKE002 -> SMOKE101;4) 公网 /ready 和 runtime smoke 通过;5) 报告结论真实记录 PASS/PARTIAL/SKIP。","受影响流程:公网自动化 POC 样件生成和只读验证;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv;cd server && npm run prisma:validate;cd server && npx vitest run tests/unit/scripts/check-wecom-approval-fixtures.test.js tests/unit/scripts/check-wecom-approval-poc.test.js --reporter=verbose;node scripts/qa/audit-docs.mjs --check-registry;SYNC_ENV=0 bash deploy/trialrun/deploy.sh;远端 npm run check:wecom-approval-fixtures。","python3|node|npm|vitest|bash|ssh|curl","TODO","TODO","TODO","N/A","[""WAPC2F-6""]","公网 live 写入前最终说明必须再次提示会在企微后台留下 OA-POC 测试模板/审批记录;不得修改正式模板;若 SMOKE101 不可用,停止并问答确认,不自动换审批人。"
"WAPC2F-8","状态回填、中文提交与下一阶段问答","根据验证结果回填状态并中文提交;最终用问答方式让用户决定是否进入 WCBK1 回调只读 POC、WACP3 补偿拉取 POC 或暂停。","1) Issue 状态按 Test_Method 通过情况回填;2) 中文提交引用 WAPC2F;3) 最终说明包含当前状态、改了什么、测试了什么、结果是什么、剩余风险和下一步问答;4) 不直接进入回调或镜像实现。","受影响流程:WAPC2F 交付闭环和后续路线决策;验证步骤:git status --short;git log --oneline -1;最终问答列出 WCBK1/WACP3/WADM1 选择。","git|manual","TODO","TODO","TODO","issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv|N/A","[""WAPC2F-7""]","后续动作默认自动化优先;人工只处理写入批准、企微后台无法 API 化的配置和真机确认。"
"WAPC2F-7","本地门禁与公网受控验证","本地门禁通过后,以 SYNC_ENV=0 受控部署;远端先 dry-run,再在单次进程内设置 WECOM_APPROVAL_FIXTURE_WRITE=1 执行 live 样件生成和 WAPC2 自动复跑。","1) WPROC2 baseline gate、CSV、node --check、prisma validate、focused vitest、文档审计、skill 校验和 git diff --check 通过;2) SYNC_ENV=0 部署,不同步本地 env;3) live 写入只创建 OA-POC 测试样件,申请链固定 SMOKE002 -> SMOKE101;4) 公网 /ready 和 runtime smoke 通过;5) 报告结论真实记录 PASS/PARTIAL/SKIP。","受影响流程:公网自动化 POC 样件生成和只读验证;验证步骤:node scripts/qa/check-process-contract.mjs --baseline --json;python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv;cd server && npm run prisma:validate;cd server && npx vitest run tests/unit/scripts/check-wecom-approval-fixtures.test.js tests/unit/scripts/check-wecom-approval-poc.test.js --reporter=verbose;node scripts/qa/audit-docs.mjs --check-registry;SYNC_ENV=0 bash deploy/trialrun/deploy.sh;远端 npm run check:wecom-approval-fixtures。","python3|node|npm|vitest|bash|ssh|curl","TODO","TODO","TODO","N/A","[""WAPC2F-6""]","WPROC2 baseline gate 是实施前置;公网 live 写入前最终说明必须再次提示会在企微后台留下 OA-POC 测试模板/审批记录;不得修改正式模板;若 SMOKE101 不可用,停止并问答确认,不自动换审批人;清理方式为隐藏、停用、人工清理或保留审计。"
"WAPC2F-8","状态回填、中文提交与下一阶段问答","根据验证结果回填状态并中文提交;最终用问答方式让用户决定是否进入 WCBK1 回调只读 POC、WACP3 补偿拉取 POC 或暂停。","1) Issue 状态按 Test_Method 通过情况回填;2) 中文提交引用 WAPC2F;3) 最终说明包含当前状态、改了什么、测试了什么、结果是什么、剩余风险和下一步问答;4) 不直接进入回调或镜像实现。","受影响流程:WAPC2F 交付闭环和后续路线决策;验证步骤:git status --short;git log --oneline -1;最终问答列出 WCBK1/WACP3/WADM1 选择。","git|manual","TODO","TODO","TODO","issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv|N/A","[""WAPC2F-7""]","后续动作默认自动化优先;人工只处理写入批准、企微后台无法 API 化的配置和真机确认;本行不写企微数据,若前序 live 生成样件则按隐藏、停用、人工清理或保留审计处理。"
1 ID Title Description Acceptance Test_Method Tools Dev_Status Review1_Status Regression_Status Files Dependencies Notes
2 WAPC2F-0 合同建档与边界冻结 建立 WAPC2F 企微审批 POC 样件自动生成合同;承接 WAPC2 当前缺模板 ID 和低风险 sp_no 的配置缺口,本轮目标是尽量自动创建专用测试模板和测试审批单。 1) CSV 校验通过;2) 范围限定 OA-POC 前缀请假/补卡测试模板和低风险测试审批单;3) 固定 WECOM_AGENT_SECRET;4) 默认 dry-run;5) 默认测试链为申请人 SMOKE002 -> 审批人 SMOKE101,禁止自审;6) 不修改正式模板、不接真实回调、不写 OA 业务数据、不进入 wecom_attendance_approval_mirror_v1。 受影响流程:WAPC2 缺配置 -> 自动生成 POC 样件 -> 复跑模板/审批详情只读 POC;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv。 受影响流程:WAPC2 缺配置 -> 自动生成 POC 样件 -> 复跑模板/审批详情只读 POC;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv;node scripts/qa/check-process-contract.mjs --issue issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv --profile wecom-approval-fixture --json。 python3|manual python3|node|manual TODO TODO TODO issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv [] 本合同允许规划自动写企微测试样件,但真实 live 写入仍需后续实施前确认;回滚路径:撤回本轮代码/文档,企微后台中 OA-POC 测试模板和测试单如已生成需人工隐藏/停用或保留审计。 WPROC2 baseline gate 通过后才能实施;本合同允许规划自动写企微测试样件,但真实 live 写入仍需后续实施前确认;回滚路径:撤回本轮代码/文档,企微后台中 OA-POC 测试模板和测试单如已生成需人工隐藏/停用或保留审计。
3 WAPC2F-1 路线自动化优先修正 更新路线图和事实源,把 WAPC2 后续阶段调整为自动化优先:WAPC2F 自动生成样件 -> WAPC2 复跑 -> WCBK1 回调 POC -> WACP3 补偿拉取 POC -> WADM1 镜像数据模型 -> 镜像实现。 1) 文档明确后续能自动化的动作优先用 QA-only runner 执行;2) 人工只负责批准写入、配置不可自动化的后台项和确认风险;3) 不再默认要求手工创建模板或测试单;4) 不把自动生成 POC 样件误读为正式模板配置完成。 受影响流程:企微审批路线治理;验证步骤:node scripts/qa/audit-docs.mjs --check-registry;rg -n 'WAPC2F|自动生成|OA-POC|WCBK1|WACP3|WADM1|wecom_attendance_approval_mirror_v1' docs .agents/skills/hyb-oa-delivery/SKILL.md。 node|rg TODO TODO TODO docs/企微优先开发路线图.md|docs/企微API能力目录.md|docs/需求-统一审批中心规约.md|docs/需求-企业微信基础设施规约.md|docs/管理员手册.md|docs/文档索引.md|docs/文档事实源状态矩阵.md|.agents/skills/hyb-oa-delivery/SKILL.md ["WAPC2F-0"] 文档只记录自动化策略和边界,不保存 Secret、Token、完整 template_id、完整 sp_no 或原始 payload。
4 WAPC2F-2 企微审批写接口调研与安全门禁 核对企业微信创建审批模板和提交审批申请官方 API 的实际字段、权限、可见范围、可信 IP、审批人规则和限制;固化 live 写入双重或三重确认。 1) create_template/applyevent 的方法、路径、Secret 和字段结构明确;2) 若官方接口不支持所需模板或测试单自动生成,改为 SKIP/BLOCKED_BY_EXTERNAL_CONFIG;3) live 写入必须同时指定 CLI 写入参数和 WECOM_APPROVAL_FIXTURE_WRITE=1;4) 不尝试其他 Secret。 受影响流程:自动样件生成前置安全审查;验证步骤:rg -n '创建审批模板|提交审批申请|applyevent|create_template|WECOM_APPROVAL_FIXTURE_WRITE' docs server/src/scripts server/tests。 rg|manual TODO TODO TODO docs/企微API能力目录.md|server/src/scripts/check-wecom-approval-fixtures.js|server/src/services/integrations/wecomApproval.js ["WAPC2F-1"] 若官方文档或远端 API 返回能力不支持,后续只记录不可自动化项,不做绕路试错。 若官方文档或远端 API 返回能力不支持,后续只记录不可自动化项,不做绕路试错;live 写入前必须明确清理/隐藏/停用或保留审计方式。
5 WAPC2F-3 QA-only 样件生成 runner 新增 QA-only runner check-wecom-approval-fixtures,用于 dry-run/live 创建 OA-POC 请假/补卡测试模板、提交低风险测试审批单,并输出脱敏 summary.json。 1) package.json 增加 check:wecom-approval-fixtures;2) 默认 dry-run 只构建脱敏 payload;3) live 写入必须显式 --live --create-templates --submit-test-approvals 且 WECOM_APPROVAL_FIXTURE_WRITE=1;4) 支持指定申请人/审批人员工号,默认申请人 SMOKE002、审批人 SMOKE101;5) 预检两者 active、已绑定企微、可见、不是同一 OA 员工且不是同一企微 userid;6) 命中自审时硬阻断;7) 报告不输出完整模板 ID、完整 sp_no、userid、手机号、邮箱、token、secret、表单值、附件、评论或原始 payload。 1) package.json 增加 check:wecom-approval-fixtures;2) 默认 dry-run 只构建脱敏 payload;3) live 写入必须显式 --live --create-templates --submit-test-approvals 且 WECOM_APPROVAL_FIXTURE_WRITE=1;4) 支持指定申请人/审批人员工号,默认申请人 SMOKE002、审批人 SMOKE101;5) 预检两者 active、已绑定企微、可见、不是同一 OA 员工且不是同一企微 userid;6) 命中自审时硬阻断;7) 报告不输出完整模板 ID、完整 sp_no、完整 userid、手机号、邮箱、token、secret、表单值、附件、评论或原始 payload。 受影响流程:自动创建测试模板和测试审批单;验证步骤:cd server && node --check src/scripts/check-wecom-approval-fixtures.js;cd server && npx vitest run tests/unit/scripts/check-wecom-approval-fixtures.test.js --reporter=verbose。 受影响流程:自动创建测试模板和测试审批单;验证步骤:node scripts/qa/check-process-contract.mjs --baseline --json;cd server && node --check src/scripts/check-wecom-approval-fixtures.js;cd server && npx vitest run tests/unit/scripts/check-wecom-approval-fixtures.test.js --reporter=verbose。 node|vitest TODO TODO TODO server/src/scripts/check-wecom-approval-fixtures.js|server/package.json ["WAPC2F-2"] runner 只用于 QA 样件生成;不新增公开业务 API,不改 Prisma schema,不改前端;如果 SMOKE101 不可用,不自动切换为 HYD000007 或其他审批人,返回配置缺口并问答确认。 WPROC2 baseline gate 通过后才能实施;runner 只用于 QA 样件生成;不新增公开业务 API,不改 Prisma schema,不改前端;如果 SMOKE101 不可用,不自动切换为 HYD000007 或其他审批人,返回配置缺口并问答确认;live 写入留下的 OA-POC 测试模板/测试单需按清理、隐藏、停用或保留审计方式处理。
6 WAPC2F-4 审批模板创建与测试审批提交集成 扩展企微审批集成服务,固定 WECOM_AGENT_SECRET 调用创建审批模板和提交审批申请接口,并复用 WAPC2 脱敏、错误分类和无 fallback 规则。 1) 创建模板只创建 OA-POC 前缀测试模板;2) 提交审批只提交低风险无附件测试单;3) 申请人/审批人命中同一 OA 员工或同一企微 userid 时返回自审阻断;4) API 错误、权限、可见范围、可信 IP 或模板能力限制均返回 BLOCKED_BY_EXTERNAL_CONFIG;5) 不修改或覆盖正式模板。 受影响流程:企微审批测试样件写入;验证步骤:cd server && node --check src/services/integrations/wecomApproval.js;focused vitest 覆盖固定 Secret、无 fallback、dry-run/live 分支、自审阻断和 API 错误分类。 受影响流程:企微审批测试样件写入;验证步骤:node scripts/qa/check-process-contract.mjs --issue issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv --profile wecom-approval-fixture --json;cd server && node --check src/services/integrations/wecomApproval.js;focused vitest 覆盖固定 Secret、无 fallback、dry-run/live 分支、自审阻断和 API 错误分类。 node|vitest TODO TODO TODO server/src/services/integrations/wecomApproval.js ["WAPC2F-3"] 真实写企微测试模板可能在企微后台留下记录,报告和最终说明必须提醒管理员后续隐藏/停用/保留审计。 真实写企微测试模板可能在企微后台留下记录;回滚/清理口径为后续隐藏、停用、人工清理或保留审计,报告和最终说明必须提醒管理员。
7 WAPC2F-5 自动复跑 WAPC2 只读 POC 样件生成成功后,runner 自动把生成的模板 ID 和 sp_no 传给现有 check:wecom-approval-poc,验证 gettemplatedetail/getapprovaldetail 只读链路。 1) 样件生成成功后自动复用 WAPC2 runner 或等价内部函数复跑;2) 目标结论 PASS_APPROVAL_POC;3) 若只生成部分样件则返回 PARTIAL_APPROVAL_POC_NEEDS_CONFIG;4) 若企微阻断则返回 SKIP/BLOCKED_BY_EXTERNAL_CONFIG。 受影响流程:自动生成样件 -> 自动只读验证 -> 输出一份可审计结论;验证步骤:cd server && npx vitest run tests/unit/scripts/check-wecom-approval-fixtures.test.js tests/unit/scripts/check-wecom-approval-poc.test.js --reporter=verbose。 vitest|node TODO TODO TODO server/src/scripts/check-wecom-approval-fixtures.js|server/src/scripts/check-wecom-approval-poc.js ["WAPC2F-4"] 自动复跑不得把生成的完整 ID 或 sp_no 写入报告;只允许脱敏前缀和计数。
8 WAPC2F-6 Focused 单测与隐私回归 新增 focused vitest 覆盖样件生成 runner、写入保护、无 Secret fallback、脱敏报告、自动复跑和阻断分类。 1) 覆盖 dry-run 默认不写;2) 覆盖缺 WECOM_APPROVAL_FIXTURE_WRITE 时 live 不写;3) 覆盖 WECOM_AGENT_SECRET 固定选择;4) 覆盖创建模板、提交测试单、自动复跑;5) 覆盖申请人/审批人相同时自审硬阻断;6) 覆盖 SMOKE101 不可用时不自动换人;7) 覆盖隐私字段不泄露。 受影响流程:WAPC2F 本地质量门禁;验证步骤:cd server && npx vitest run tests/unit/scripts/check-wecom-approval-fixtures.test.js tests/unit/scripts/check-wecom-approval-poc.test.js --reporter=verbose。 vitest TODO TODO TODO server/tests/unit/scripts/check-wecom-approval-fixtures.test.js|server/tests/unit/scripts/check-wecom-approval-poc.test.js ["WAPC2F-5"] 单测使用 mock fetch,不访问公网,不写企微。
9 WAPC2F-7 本地门禁与公网受控验证 本地门禁通过后,以 SYNC_ENV=0 受控部署;远端先 dry-run,再在单次进程内设置 WECOM_APPROVAL_FIXTURE_WRITE=1 执行 live 样件生成和 WAPC2 自动复跑。 1) 本地 CSV、node --check、prisma validate、focused vitest、文档审计、skill 校验和 git diff --check 通过;2) SYNC_ENV=0 部署,不同步本地 env;3) live 写入只创建 OA-POC 测试样件,申请链固定 SMOKE002 -> SMOKE101;4) 公网 /ready 和 runtime smoke 通过;5) 报告结论真实记录 PASS/PARTIAL/SKIP。 1) WPROC2 baseline gate、CSV、node --check、prisma validate、focused vitest、文档审计、skill 校验和 git diff --check 通过;2) SYNC_ENV=0 部署,不同步本地 env;3) live 写入只创建 OA-POC 测试样件,申请链固定 SMOKE002 -> SMOKE101;4) 公网 /ready 和 runtime smoke 通过;5) 报告结论真实记录 PASS/PARTIAL/SKIP。 受影响流程:公网自动化 POC 样件生成和只读验证;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv;cd server && npm run prisma:validate;cd server && npx vitest run tests/unit/scripts/check-wecom-approval-fixtures.test.js tests/unit/scripts/check-wecom-approval-poc.test.js --reporter=verbose;node scripts/qa/audit-docs.mjs --check-registry;SYNC_ENV=0 bash deploy/trialrun/deploy.sh;远端 npm run check:wecom-approval-fixtures。 受影响流程:公网自动化 POC 样件生成和只读验证;验证步骤:node scripts/qa/check-process-contract.mjs --baseline --json;python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv;cd server && npm run prisma:validate;cd server && npx vitest run tests/unit/scripts/check-wecom-approval-fixtures.test.js tests/unit/scripts/check-wecom-approval-poc.test.js --reporter=verbose;node scripts/qa/audit-docs.mjs --check-registry;SYNC_ENV=0 bash deploy/trialrun/deploy.sh;远端 npm run check:wecom-approval-fixtures。 python3|node|npm|vitest|bash|ssh|curl TODO TODO TODO N/A ["WAPC2F-6"] 公网 live 写入前最终说明必须再次提示会在企微后台留下 OA-POC 测试模板/审批记录;不得修改正式模板;若 SMOKE101 不可用,停止并问答确认,不自动换审批人。 WPROC2 baseline gate 是实施前置;公网 live 写入前最终说明必须再次提示会在企微后台留下 OA-POC 测试模板/审批记录;不得修改正式模板;若 SMOKE101 不可用,停止并问答确认,不自动换审批人;清理方式为隐藏、停用、人工清理或保留审计。
10 WAPC2F-8 状态回填、中文提交与下一阶段问答 根据验证结果回填状态并中文提交;最终用问答方式让用户决定是否进入 WCBK1 回调只读 POC、WACP3 补偿拉取 POC 或暂停。 1) Issue 状态按 Test_Method 通过情况回填;2) 中文提交引用 WAPC2F;3) 最终说明包含当前状态、改了什么、测试了什么、结果是什么、剩余风险和下一步问答;4) 不直接进入回调或镜像实现。 受影响流程:WAPC2F 交付闭环和后续路线决策;验证步骤:git status --short;git log --oneline -1;最终问答列出 WCBK1/WACP3/WADM1 选择。 git|manual TODO TODO TODO issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv|N/A ["WAPC2F-7"] 后续动作默认自动化优先;人工只处理写入批准、企微后台无法 API 化的配置和真机确认。 后续动作默认自动化优先;人工只处理写入批准、企微后台无法 API 化的配置和真机确认;本行不写企微数据,若前序 live 生成样件则按隐藏、停用、人工清理或保留审计处理。
@@ -0,0 +1,9 @@
ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
"WPROC2-0","合同建档与边界冻结","建立 WPROC2 开发流程自动化门禁合同;本轮只把 WPROC1 文档规则升级为可执行 QA-only process gate,不部署、不写 OA/企微数据、不实现 WAPC2F 业务 runner。","1) CSV 校验通过;2) 范围限定 Issue CSV、QA 脚本、单测、最小门禁接入和事实源回写;3) 不新增公开业务 API、Prisma schema、前端页面或 feature flag;4) 不调用企微写接口。","受影响流程:开发流程治理;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-19_11-15-10-process-gate-automation-v1.csv。","python3|manual","DONE","DONE","DONE","issues/2026-05-19_11-15-10-process-gate-automation-v1.csv","[]","回滚路径:撤回 WPROC2 Issue、check-process-contract 脚本、测试、check-minimal 接入和事实源回写;本轮无数据库、部署、远端配置或企微写入;已通过 CSV 校验。"
"WPROC2-1","新增流程门禁 CLI","新增 QA-only CLI scripts/qa/check-process-contract.mjs,支持 --baseline 和 --issue <csv> --profile <profile> --json,首批 profile 为 general、wecom、wecom-approval-fixture、docs-only。","1) CLI 只读,不修改仓库或远端;2) --baseline 检查核心事实源、WPROC1/WPROC2 口径和 WAPC2F 合同;3) 单 Issue 检查输出 PASS/FAIL、errors、warnings 和 checks;4) 支持 CommonJS/Vitest 通过动态 import 复用导出函数。","受影响流程:本地/CI 流程门禁;验证步骤:node --check scripts/qa/check-process-contract.mjs;node scripts/qa/check-process-contract.mjs --baseline --json。","node","DONE","DONE","DONE","scripts/qa/check-process-contract.mjs","[""WPROC2-0""]","脚本不得打印 Secret、token、完整 userid、完整 template_id、完整 sp_no 或原始 payload;仅输出规则命中摘要;node --check 与 baseline JSON 均通过。"
"WPROC2-2","固化合同规则检查","在 process gate 中固化 CSV 必填列、状态值、Dependencies JSON、Test_Method 业务流程步骤、回滚/清理说明、事实源读取和缺配置分类检查。","1) 合法 WAPC2F 合同通过 wecom-approval-fixture profile;2) 缺 Dependencies JSON、缺业务流程 Test_Method、缺回滚/清理说明或缺配置分类时失败;3) docs-only profile 不误判为企微写入合同。","受影响流程:Issue CSV 质量门禁;验证步骤:node scripts/qa/check-process-contract.mjs --issue issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv --profile wecom-approval-fixture --json;focused vitest。","node|vitest","DONE","DONE","DONE","scripts/qa/check-process-contract.mjs|server/tests/unit/scripts/check-process-contract.test.js","[""WPROC2-1""]","规则按当前 WPROC1/WAPC2F 口径实现;后续 profile 扩展另建 Issue;WAPC2F profile 与 focused vitest 均通过。"
"WPROC2-3","固化企微审批高风险检查","为 wecom-approval-fixture profile 增加 Secret 固定、无 fallback、dry-run 默认、live 双开关、非自审链路、WAPC2F 阶段顺序和脱敏输出检查。","1) 必须命中 WECOM_AGENT_SECRET、WECOM_APPROVAL_FIXTURE_WRITE=1、dry-run、SMOKE002、SMOKE101、禁止自审;2) 不允许默认 wangshunli 自审链;3) 必须命中 NEEDS_CONFIG 或 SKIP/BLOCKED_BY_EXTERNAL_CONFIG;4) 必须声明不输出手机号、邮箱、token、secret、完整 userid、完整 template_id、完整 sp_no 或原始 payload。","受影响流程:企微审批 POC 样件生成前置门禁;验证步骤:cd server && npx vitest run tests/unit/scripts/check-process-contract.test.js --reporter=verbose。","vitest|node","DONE","DONE","DONE","scripts/qa/check-process-contract.mjs|server/tests/unit/scripts/check-process-contract.test.js","[""WPROC2-2""]","该门禁只检查合同和事实源,不创建模板、不提交审批单、不访问公网企微、不写企微数据,因此无需清理;focused vitest 8 项通过。"
"WPROC2-4","接入最小门禁","在 scripts/check-minimal.sh 增加 process gate baseline 检查,使 ci-minimal 通过既有入口自动执行流程门禁;不单独修改 GitHub workflow。","1) scripts/check-minimal.sh 包含 node scripts/qa/check-process-contract.mjs --baseline;2) bash -n scripts/check-minimal.sh 通过;3) bash scripts/check-minimal.sh 通过或真实记录环境阻断。","受影响流程:本地最小门禁和 ci-minimal;验证步骤:bash -n scripts/check-minimal.sh;bash scripts/check-minimal.sh。","bash|node","DONE","DONE","DONE","scripts/check-minimal.sh","[""WPROC2-3""]","bash -n scripts/check-minimal.sh 与 bash scripts/check-minimal.sh 已通过;完整最小门禁包含 process gate、Prisma、后端静态、前端 typecheck/build 和 feature matrix。"
"WPROC2-5","更新 WAPC2F 合同前置说明","修正 WAPC2F 合同说明,不通过跨 CSV Dependencies 强绑;用 Notes 和 Test_Method 声明 WPROC2 baseline gate 是实施前置,并补充 process gate 命令。","1) WAPC2F 不新增跨 CSV Dependencies;2) WAPC2F Test_Method 包含 check-process-contract;3) Notes 说明 WPROC2 是实施前置;4) WAPC2F CSV 校验仍通过。","受影响流程:WAPC2F 进入实现前检查;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv;node scripts/qa/check-process-contract.mjs --issue issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv --profile wecom-approval-fixture --json。","python3|node","DONE","DONE","DONE","issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv","[""WPROC2-4""]","不回填 WAPC2F DONE;WAPC2F 仍是后续实现合同;WAPC2F CSV 校验和 profile gate 均通过。"
"WPROC2-6","回写事实源和 skill","更新开发交付规约、测试门禁、企微路线图、API 能力目录、文档索引、事实源矩阵和项目 skill,登记 WPROC2 和 check-process-contract。","1) 事实源说明 WPROC2 是 WAPC2F 前置 process gate;2) skill 要求企微高风险开发先跑 process gate;3) 文档审计和 skill 校验通过。","受影响流程:后续 agent 读取顺序和流程执行;验证步骤:node scripts/qa/audit-docs.mjs --check-registry;python3 /home/shunli/.codex/skills/.system/skill-creator/scripts/quick_validate.py .agents/skills/hyb-oa-delivery;rg -n 'WPROC2|check-process-contract|process gate' docs .agents/skills/hyb-oa-delivery/SKILL.md。","node|python3|rg","DONE","DONE","DONE","docs/开发交付与变更管理规约.md|docs/测试规约与回归门禁.md|docs/企微优先开发路线图.md|docs/企微API能力目录.md|docs/文档索引.md|docs/文档事实源状态矩阵.md|.agents/skills/hyb-oa-delivery/SKILL.md","[""WPROC2-5""]","不新建独立流程文档;优先更新现有事实源;文档审计通过但保留既有 24 个未登记文档 warning,skill 校验通过。"
"WPROC2-7","门禁验证、状态回填和提交","执行 WPROC2 Test Plan,按真实结果回填 WPROC2 状态并中文提交。","1) WPROC2/WAPC2F CSV 校验通过;2) node --check、process gate 自测、focused vitest、文档审计、skill 校验、关键词核验、git diff --check 和 check-minimal 通过或真实记录 SKIP/阻断;3) Issue 状态回填真实;4) 中文 commit 引用 WPROC2。","受影响流程:WPROC2 交付闭环;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-19_11-15-10-process-gate-automation-v1.csv;node --check scripts/qa/check-process-contract.mjs;node scripts/qa/check-process-contract.mjs --baseline --json;cd server && npx vitest run tests/unit/scripts/check-process-contract.test.js --reporter=verbose;bash scripts/check-minimal.sh;git diff --check。","python3|node|vitest|bash|git","DONE","DONE","DONE","N/A","[""WPROC2-6""]","本轮不部署;无公网 URL 变更;无 OA/企微业务数据写入;提交前门禁按最终 diff 复跑。"
1 ID Title Description Acceptance Test_Method Tools Dev_Status Review1_Status Regression_Status Files Dependencies Notes
2 WPROC2-0 合同建档与边界冻结 建立 WPROC2 开发流程自动化门禁合同;本轮只把 WPROC1 文档规则升级为可执行 QA-only process gate,不部署、不写 OA/企微数据、不实现 WAPC2F 业务 runner。 1) CSV 校验通过;2) 范围限定 Issue CSV、QA 脚本、单测、最小门禁接入和事实源回写;3) 不新增公开业务 API、Prisma schema、前端页面或 feature flag;4) 不调用企微写接口。 受影响流程:开发流程治理;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-19_11-15-10-process-gate-automation-v1.csv。 python3|manual DONE DONE DONE issues/2026-05-19_11-15-10-process-gate-automation-v1.csv [] 回滚路径:撤回 WPROC2 Issue、check-process-contract 脚本、测试、check-minimal 接入和事实源回写;本轮无数据库、部署、远端配置或企微写入;已通过 CSV 校验。
3 WPROC2-1 新增流程门禁 CLI 新增 QA-only CLI scripts/qa/check-process-contract.mjs,支持 --baseline 和 --issue <csv> --profile <profile> --json,首批 profile 为 general、wecom、wecom-approval-fixture、docs-only。 1) CLI 只读,不修改仓库或远端;2) --baseline 检查核心事实源、WPROC1/WPROC2 口径和 WAPC2F 合同;3) 单 Issue 检查输出 PASS/FAIL、errors、warnings 和 checks;4) 支持 CommonJS/Vitest 通过动态 import 复用导出函数。 受影响流程:本地/CI 流程门禁;验证步骤:node --check scripts/qa/check-process-contract.mjs;node scripts/qa/check-process-contract.mjs --baseline --json。 node DONE DONE DONE scripts/qa/check-process-contract.mjs ["WPROC2-0"] 脚本不得打印 Secret、token、完整 userid、完整 template_id、完整 sp_no 或原始 payload;仅输出规则命中摘要;node --check 与 baseline JSON 均通过。
4 WPROC2-2 固化合同规则检查 在 process gate 中固化 CSV 必填列、状态值、Dependencies JSON、Test_Method 业务流程步骤、回滚/清理说明、事实源读取和缺配置分类检查。 1) 合法 WAPC2F 合同通过 wecom-approval-fixture profile;2) 缺 Dependencies JSON、缺业务流程 Test_Method、缺回滚/清理说明或缺配置分类时失败;3) docs-only profile 不误判为企微写入合同。 受影响流程:Issue CSV 质量门禁;验证步骤:node scripts/qa/check-process-contract.mjs --issue issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv --profile wecom-approval-fixture --json;focused vitest。 node|vitest DONE DONE DONE scripts/qa/check-process-contract.mjs|server/tests/unit/scripts/check-process-contract.test.js ["WPROC2-1"] 规则按当前 WPROC1/WAPC2F 口径实现;后续 profile 扩展另建 Issue;WAPC2F profile 与 focused vitest 均通过。
5 WPROC2-3 固化企微审批高风险检查 为 wecom-approval-fixture profile 增加 Secret 固定、无 fallback、dry-run 默认、live 双开关、非自审链路、WAPC2F 阶段顺序和脱敏输出检查。 1) 必须命中 WECOM_AGENT_SECRET、WECOM_APPROVAL_FIXTURE_WRITE=1、dry-run、SMOKE002、SMOKE101、禁止自审;2) 不允许默认 wangshunli 自审链;3) 必须命中 NEEDS_CONFIG 或 SKIP/BLOCKED_BY_EXTERNAL_CONFIG;4) 必须声明不输出手机号、邮箱、token、secret、完整 userid、完整 template_id、完整 sp_no 或原始 payload。 受影响流程:企微审批 POC 样件生成前置门禁;验证步骤:cd server && npx vitest run tests/unit/scripts/check-process-contract.test.js --reporter=verbose。 vitest|node DONE DONE DONE scripts/qa/check-process-contract.mjs|server/tests/unit/scripts/check-process-contract.test.js ["WPROC2-2"] 该门禁只检查合同和事实源,不创建模板、不提交审批单、不访问公网企微、不写企微数据,因此无需清理;focused vitest 8 项通过。
6 WPROC2-4 接入最小门禁 在 scripts/check-minimal.sh 增加 process gate baseline 检查,使 ci-minimal 通过既有入口自动执行流程门禁;不单独修改 GitHub workflow。 1) scripts/check-minimal.sh 包含 node scripts/qa/check-process-contract.mjs --baseline;2) bash -n scripts/check-minimal.sh 通过;3) bash scripts/check-minimal.sh 通过或真实记录环境阻断。 受影响流程:本地最小门禁和 ci-minimal;验证步骤:bash -n scripts/check-minimal.sh;bash scripts/check-minimal.sh。 bash|node DONE DONE DONE scripts/check-minimal.sh ["WPROC2-3"] bash -n scripts/check-minimal.sh 与 bash scripts/check-minimal.sh 已通过;完整最小门禁包含 process gate、Prisma、后端静态、前端 typecheck/build 和 feature matrix。
7 WPROC2-5 更新 WAPC2F 合同前置说明 修正 WAPC2F 合同说明,不通过跨 CSV Dependencies 强绑;用 Notes 和 Test_Method 声明 WPROC2 baseline gate 是实施前置,并补充 process gate 命令。 1) WAPC2F 不新增跨 CSV Dependencies;2) WAPC2F Test_Method 包含 check-process-contract;3) Notes 说明 WPROC2 是实施前置;4) WAPC2F CSV 校验仍通过。 受影响流程:WAPC2F 进入实现前检查;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv;node scripts/qa/check-process-contract.mjs --issue issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv --profile wecom-approval-fixture --json。 python3|node DONE DONE DONE issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv ["WPROC2-4"] 不回填 WAPC2F DONE;WAPC2F 仍是后续实现合同;WAPC2F CSV 校验和 profile gate 均通过。
8 WPROC2-6 回写事实源和 skill 更新开发交付规约、测试门禁、企微路线图、API 能力目录、文档索引、事实源矩阵和项目 skill,登记 WPROC2 和 check-process-contract。 1) 事实源说明 WPROC2 是 WAPC2F 前置 process gate;2) skill 要求企微高风险开发先跑 process gate;3) 文档审计和 skill 校验通过。 受影响流程:后续 agent 读取顺序和流程执行;验证步骤:node scripts/qa/audit-docs.mjs --check-registry;python3 /home/shunli/.codex/skills/.system/skill-creator/scripts/quick_validate.py .agents/skills/hyb-oa-delivery;rg -n 'WPROC2|check-process-contract|process gate' docs .agents/skills/hyb-oa-delivery/SKILL.md。 node|python3|rg DONE DONE DONE docs/开发交付与变更管理规约.md|docs/测试规约与回归门禁.md|docs/企微优先开发路线图.md|docs/企微API能力目录.md|docs/文档索引.md|docs/文档事实源状态矩阵.md|.agents/skills/hyb-oa-delivery/SKILL.md ["WPROC2-5"] 不新建独立流程文档;优先更新现有事实源;文档审计通过但保留既有 24 个未登记文档 warning,skill 校验通过。
9 WPROC2-7 门禁验证、状态回填和提交 执行 WPROC2 Test Plan,按真实结果回填 WPROC2 状态并中文提交。 1) WPROC2/WAPC2F CSV 校验通过;2) node --check、process gate 自测、focused vitest、文档审计、skill 校验、关键词核验、git diff --check 和 check-minimal 通过或真实记录 SKIP/阻断;3) Issue 状态回填真实;4) 中文 commit 引用 WPROC2。 受影响流程:WPROC2 交付闭环;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-19_11-15-10-process-gate-automation-v1.csv;node --check scripts/qa/check-process-contract.mjs;node scripts/qa/check-process-contract.mjs --baseline --json;cd server && npx vitest run tests/unit/scripts/check-process-contract.test.js --reporter=verbose;bash scripts/check-minimal.sh;git diff --check。 python3|node|vitest|bash|git DONE DONE DONE N/A ["WPROC2-6"] 本轮不部署;无公网 URL 变更;无 OA/企微业务数据写入;提交前门禁按最终 diff 复跑。