文件
hyb-oa/issues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv
T

12 KiB

1IDTitleDescriptionAcceptanceTest_MethodToolsDev_StatusReview1_StatusRegression_StatusFilesDependenciesNotes
2WAPC2F-0合同建档与边界冻结建立 WAPC2F 企微审批 POC 样件自动生成合同;承接 WAPC2 当前缺模板 ID 和低风险 sp_no 的配置缺口,本轮目标是实现自动样件生成能力并完成本地/公网 dry-run,不真实创建企微模板或审批单。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|manualDONEDONEDONEissues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv[]WPROC2 baseline gate 通过后才能实施;本合同已完成 dry-run 能力和公网验证;真实 live 写入仍需后续实施前确认;回滚路径:撤回本轮代码/文档,若后续 live 生成 OA-POC 测试模板和测试单需人工隐藏/停用或保留审计。
3WAPC2F-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|rgDONEDONEDONEdocs/企微优先开发路线图.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。
4WAPC2F-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|manualDONEDONEDONEdocs/企微API能力目录.md|server/src/scripts/check-wecom-approval-fixtures.js|server/src/services/integrations/wecomApproval.js["WAPC2F-1"]若官方文档或远端 API 返回能力不支持,后续只记录不可自动化项,不做绕路试错;live 写入前必须明确清理/隐藏/停用或保留审计方式。
5WAPC2F-3QA-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|vitestDONEDONEDONEserver/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 测试模板/测试单需按清理、隐藏、停用或保留审计方式处理。
6WAPC2F-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|vitestDONEDONEDONEserver/src/services/integrations/wecomApproval.js["WAPC2F-3"]真实写企微测试模板可能在企微后台留下记录;回滚/清理口径为后续隐藏、停用、人工清理或保留审计,报告和最终说明必须提醒管理员。
7WAPC2F-5自动复跑 WAPC2 只读 POC样件生成成功后,runner 自动把生成的模板 ID 和 sp_no 传给现有 check:wecom-approval-poc,验证 gettemplatedetail/getapprovaldetail 只读链路。1) live 样件生成成功后自动复用 WAPC2 runner 或等价内部函数复跑;2) 目标结论 PASS_APPROVAL_POC;3) 若只生成部分样件则返回 PARTIAL_APPROVAL_POC_NEEDS_CONFIG;4) 若企微阻断则返回 SKIP/BLOCKED_BY_EXTERNAL_CONFIG;5) dry-run 场景必须清晰记录为未生成真实模板 ID 或 sp_no、自动复跑跳过。受影响流程:自动生成样件 -> 自动只读验证 -> 输出一份可审计结论;验证步骤: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|nodeDONEDONEDONEserver/src/scripts/check-wecom-approval-fixtures.js|server/src/scripts/check-wecom-approval-poc.js["WAPC2F-4"]自动复跑不得把生成的完整 ID 或 sp_no 写入报告;只允许脱敏前缀和计数。本轮仅验证自动复跑参数传递和 dry-run 跳过语义,真实复跑等待 live 样件批准。
8WAPC2F-6Focused 单测与隐私回归新增 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。vitestDONEDONEDONEserver/tests/unit/scripts/check-wecom-approval-fixtures.test.js|server/tests/unit/scripts/check-wecom-approval-poc.test.js["WAPC2F-5"]单测使用 mock fetch,不访问公网,不写企微。
9WAPC2F-7本地门禁与公网 dry-run 验证本地门禁通过后,以 SYNC_ENV=0 受控部署;远端只执行 dry-run,不设置 WECOM_APPROVAL_FIXTURE_WRITE=1,不创建企微模板或审批单。1) WPROC2 baseline gate、CSV、node --check、prisma validate、focused vitest、文档审计、skill 校验、git diff --check 和最小门禁通过;2) SYNC_ENV=0 部署,不同步本地 env;3) 公网 /ready、runtime smoke 和 public bundle scan 通过;4) 远端 dry-run 报告为 PASS_FIXTURE_DRY_RUN_READY 或真实 PARTIAL/SKIP;5) live 写入未执行,后续需另行问答批准。受影响流程:公网自动化 POC 样件 dry-run 和后续 live 准入;验证步骤: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 -- --format=json。python3|node|npm|vitest|bash|ssh|curlDONEDONEDONEN/A["WAPC2F-6"]WPROC2 baseline gate 是实施前置;本轮公网报告 /app/artifacts/qa-flow/wecom-approval-fixtures-20260519T045001Z/summary.json 为 PASS_FIXTURE_DRY_RUN_READY;未设置 WECOM_APPROVAL_FIXTURE_WRITE=1,未创建企微模板或审批单;后续 live 写入前必须再次提示会在企微后台留下 OA-POC 测试模板/审批记录,不得修改正式模板。
10WAPC2F-8状态回填、中文提交与下一阶段问答根据验证结果回填状态并中文提交;最终用问答方式让用户决定是否允许单次 live 创建 OA-POC 测试模板和低风险测试审批单,之后再进入 WAPC2 自动复跑、WCBK1、WACP3 或暂停。1) Issue 状态按 dry-run 实际结果回填;2) 中文提交引用 WAPC2F;3) 最终说明包含当前状态、改了什么、测试了什么、结果是什么、剩余风险和下一步问答;4) 不直接进入回调或镜像实现;5) 下一步优先问答确认是否允许单次 live 创建 OA-POC 测试模板和低风险测试审批单。受影响流程:WAPC2F 交付闭环和后续路线决策;验证步骤:git status --short;git log --oneline -1;最终问答列出 WCBK1/WACP3/WADM1 选择。git|manualDONEDONEDONEissues/2026-05-19_10-24-43-wecom-approval-fixture-auto-generate-v1.csv|N/A["WAPC2F-7"]后续动作默认自动化优先;人工只处理写入批准、企微后台无法 API 化的配置和真机确认;本轮未写企微数据,未生成 live 样件;若后续批准 live 生成样件,再按隐藏、停用、人工清理或保留审计处理。