7.4 KiB
7.4 KiB
| 1 | ID | Title | Description | Acceptance | Test_Method | Tools | Dev_Status | Review1_Status | Regression_Status | Files | Dependencies | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | WEXT1-0 | 外出加班 dry-run 合同与边界 | 建立 WEXT1 外出/加班低风险 POC dry-run 合同;承接 WROAD2/WARCH3/WCHECK1,当前只证明 payload 可构建、非自审和脱敏报告,不 live 创建模板或审批单。 | 1) 范围仅 outing 外出、overtime 加班;2) 默认 dry-run,不写企业微信、不创建模板、不提交审批单;3) 申请人/审批人固定 SMOKE002 -> SMOKE101,禁止自审;4) Secret 来源固定 WECOM_AGENT_SECRET,不尝试其他 Secret、无 fallback、不允许运行时猜 Secret;5) 缺用户、绑定、权限、可信 IP、可见范围或配置时记录 NEEDS_CONFIG 或 SKIP/BLOCKED_BY_EXTERNAL_CONFIG;6) live 创建必须另起问答和新合同。 | 受影响流程:外出/加班 POC 准备 -> dry-run payload -> 后续是否 live 创建由人工决定;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-20_12-48-04-wecom-outing-overtime-fixture-dryrun-v1.csv;node scripts/qa/check-process-contract.mjs --issue issues/2026-05-20_12-48-04-wecom-outing-overtime-fixture-dryrun-v1.csv --profile wecom --json。 | python3|node | DONE | DONE | DONE | issues/2026-05-20_12-48-04-wecom-outing-overtime-fixture-dryrun-v1.csv | [] | 回滚/清理:本行仅合同;dry-run 不创建企微记录,无需企微清理。 |
| 3 | WEXT1-1 | 扩展审批样件 runner 目标 | 扩展现有 check-wecom-approval-fixtures runner,支持 --target=outing、--target=overtime 或 --targets=outing,overtime 的 dry-run payload 构建。 | 1) 默认仍为 leave/missed_punch,避免破坏 WAPC2F/WAPC2FLIVE;2) WEXT1 使用 --target=outing --target=overtime,且不传 --live、--create-templates 或 --submit-test-approvals;3) 外出/加班模板使用低风险 Text/Date/Textarea 等最小通用控件;4) live 写入路径对 outing/overtime 继续受 --live --create-templates --submit-test-approvals + WECOM_APPROVAL_FIXTURE_WRITE=1 双开关保护,但本轮不执行 live。 | 受影响流程:样件 runner -> 外出/加班 payload dry-run -> 后续 live 问答;验证步骤: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 | DONE | DONE | DONE | server/src/scripts/check-wecom-approval-fixtures.js|server/tests/unit/scripts/check-wecom-approval-fixtures.test.js | ["WEXT1-0"] | 回滚/清理:恢复 runner 和测试即可;本轮不写企微,无企微记录清理。 |
| 4 | WEXT1-2 | 外出加班 dry-run 本地验证 | 执行 WEXT1 本地 dry-run,确认非自审、Secret 固定、payload 摘要和脱敏报告。 | 1) actor precheck 通过或真实 NEEDS_CONFIG;2) payload summary 包含 outing/overtime 且不含完整 userid、template_id、sp_no、表单值或原始 payload;3) live 缺双开关时不写;4) 不调用企微写接口;5) 结论为 PASS_FIXTURE_DRY_RUN_READY 或真实 PARTIAL/SKIP。 | 受影响流程:SMOKE002 -> SMOKE101 预检 -> 外出/加班 payload -> dry-run 报告;验证步骤:cd server && npm run check:wecom-approval-fixtures -- --format=json --target=outing --target=overtime;检查 artifacts/qa-flow/wecom-approval-fixtures-*/summary.json。 | npm|node | DONE | DONE | DONE | server/src/scripts/check-wecom-approval-fixtures.js | ["WEXT1-1"] | 回滚/清理:dry-run 只写本地 artifacts,保留审计或后续清理;不写企微。 |
| 5 | WEXT1-3 | 本地门禁与文档回写 | 执行 WEXT1 合同、流程、runner 单测、文档和最小门禁,并更新路线事实源。 | 1) CSV 与 process gate 通过;2) runner 语法和 focused vitest 通过;3) 文档明确外出/加班只完成 dry-run,live 创建前必须再次问答批准;4) git diff --check 和 scripts/check-minimal.sh 通过。 | 受影响流程:WEXT1 dry-run 实施候选 -> 本地 QA -> 后续 live 决策;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-20_12-48-04-wecom-outing-overtime-fixture-dryrun-v1.csv;node scripts/qa/check-process-contract.mjs --baseline --json;node scripts/qa/check-process-contract.mjs --issue issues/2026-05-20_12-48-04-wecom-outing-overtime-fixture-dryrun-v1.csv --profile wecom --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 scripts/qa/audit-docs.mjs --check-registry;python3 /home/shunli/.codex/skills/.system/skill-creator/scripts/quick_validate.py .agents/skills/hyb-oa-delivery;git diff --check;bash scripts/check-minimal.sh。 | python3|node|vitest|bash|git | DONE | DONE | DONE | issues/2026-05-20_12-48-04-wecom-outing-overtime-fixture-dryrun-v1.csv|server/src/scripts/check-wecom-approval-fixtures.js|server/tests/unit/scripts/check-wecom-approval-fixtures.test.js|docs/*|.agents/skills/hyb-oa-delivery/SKILL.md | ["WEXT1-2"] | 回滚/清理:本地门禁失败不部署;修复后重跑。 |
| 6 | WEXT1-4 | 公网 dry-run 验证 | 以 SYNC_ENV=0 部署后,在远端执行外出/加班 dry-run,不设置 WECOM_APPROVAL_FIXTURE_WRITE=1。 | 1) /ready 正常;2) 远端 dry-run 结论 PASS_FIXTURE_DRY_RUN_READY 或真实 PARTIAL/SKIP;3) 不创建模板、不提交审批单、不写企业微信;4) 报告不泄露完整外部键或敏感值;5) live 创建留到下一轮问答。 | 受影响流程:部署 -> 远端 WEXT1 dry-run -> 后续人工决定是否 live;验证步骤:SYNC_ENV=0 bash deploy/trialrun/deploy.sh;curl -fsS https://oa.hyinda.com/ready;远端执行 npm run check:wecom-approval-fixtures -- --format=json --target=outing --target=overtime。 | bash|ssh|curl|npm | DONE | DONE | DONE | deploy/trialrun/deploy.sh|server/src/scripts/check-wecom-approval-fixtures.js | ["WEXT1-3"] | 回滚/清理:远端 dry-run 只生成报告,不写企微;如部署异常按既有 trialrun 回滚。;实际结果:SYNC_ENV=0 部署通过,/ready 正常;远端 dry-run 报告 /app/artifacts/qa-flow/wecom-approval-fixtures-20260520T054940Z/summary.json 为 PASS_FIXTURE_DRY_RUN_READY;未设置 WECOM_APPROVAL_FIXTURE_WRITE,未创建模板或审批单。 |
| 7 | WEXT1-5 | 状态回填与中文提交 | 完成 WEXT1 状态回填、本地与公网证据登记和中文提交。 | 1) Test_Method 全部真实通过或真实 SKIP;2) Issue 状态回填;3) 公网 dry-run 报告路径写入 Notes;4) git diff --check 通过;5) 中文提交完成;6) 最终用问答方式询问是否批准单次 live 创建 OA-POC 外出/加班测试样件。 | 受影响流程:WEXT1 dry-run -> 证据回写 -> 人工 live 决策;验证步骤:git status --short;git diff --check;git log -1 --oneline;确认提交信息包含 WEXT1。 | git|manual | DONE | DONE | DONE | issues/2026-05-20_12-48-04-wecom-outing-overtime-fixture-dryrun-v1.csv|server/src/scripts/check-wecom-approval-fixtures.js|server/tests/unit/scripts/check-wecom-approval-fixtures.test.js|docs/*|.agents/skills/hyb-oa-delivery/SKILL.md | ["WEXT1-4"] | 提交建议:WEXT1 增加外出加班样件 dry-run。后续 live 创建必须另起 Issue CSV,并由用户明确批准。;实际结果:WEXT1 本地门禁、公网 dry-run 和事实源回写已完成;live 创建外出/加班样件仍需下一轮问答和独立 Issue CSV。 |