9.6 KiB
9.6 KiB
| 1 | ID | Title | Description | Acceptance | Test_Method | Tools | Dev_Status | Review1_Status | Regression_Status | Files | Dependencies | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | WACP3-0 | 合同建档与边界冻结 | 建立 WACP3 企微审批补偿拉取 POC 合同;本轮只读验证按时间窗口批量获取审批单号、拉审批详情并与 WCBK1 回调证据脱敏比对,不新建企微模板或审批单。 | 1) CSV 校验通过;2) 范围限定 QA-only 只读 runner、企微审批只读服务、focused 单测和事实源回写;3) 固定使用 WECOM_AGENT_SECRET;4) 不调用企微写接口、不写 OA/企微业务数据、不进入 wecom_attendance_approval_mirror_v1。 | 受影响流程:企微主办审批 -> 回调可能漏投 -> OA 补偿拉取 POC;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-19_19-03-06-wecom-approval-compensation-pull-poc-v1.csv。 | python3|manual | DONE | DONE | DONE | issues/2026-05-19_19-03-06-wecom-approval-compensation-pull-poc-v1.csv | [] | 已完成合同建档和边界冻结;本轮无 OA/企微写入、无新增模板或审批单。回滚/清理:删除本合同和本轮代码/文档变更;本轮不部署写入能力、不创建企微数据、不写数据库。 |
| 3 | WACP3-1 | 审批补偿拉取接口调研与服务扩展 | 在企微审批集成服务中新增只读批量获取审批单号能力,固定 WECOM_AGENT_SECRET 调用 POST /cgi-bin/oa/getapprovalinfo,并复用 getapprovaldetail 拉详情。 | 1) 服务导出批量获取审批单号函数;2) 请求支持 starttime/endtime/size/cursor/template_id filters;3) 企微错误返回脱敏分类;4) 不尝试其他 Secret、无 fallback;5) 响应不输出完整 sp_no、template_id、userid 或原始 payload。 | 受影响流程:企微审批补偿拉取候选 -> 审批详情读取;验证步骤:cd server && node --check src/services/integrations/wecomApproval.js;cd server && npx vitest run tests/unit/scripts/check-wecom-approval-compensation-poc.test.js --reporter=verbose。 | node|vitest | DONE | DONE | DONE | server/src/services/integrations/wecomApproval.js | ["WACP3-0"] | 已新增 getapprovalinfo 只读能力并固定 WECOM_AGENT_SECRET;缺权限、可信 IP、可见范围或审批数据权限时输出 SKIP/BLOCKED_BY_EXTERNAL_CONFIG。回滚/清理:移除新增只读函数和导出。 |
| 4 | WACP3-2 | QA-only 补偿拉取 runner | 新增 check-wecom-approval-compensation-poc runner 和 package script,默认最近 72 小时窗口,支持 --start-time、--end-time、--template=leave:<id>、--template=missed_punch:<id>、--size=100,并输出脱敏 summary.json。 | 1) package.json 增加 check:wecom-approval-compensation-poc;2) 默认只读,不存在 live 写入参数或写入环境开关;3) dry-run 只构建计划和配置检查;4) live 只调用 getapprovalinfo/getapprovaldetail;5) 报告结论限定 PASS_COMPENSATION_POC、PASS_WITH_FINDINGS、PARTIAL_COMPENSATION_NEEDS_CONFIG、SKIP/BLOCKED_BY_EXTERNAL_CONFIG。 | 受影响流程:审批补偿拉取 POC runner -> 脱敏报告;验证步骤:cd server && node --check src/scripts/check-wecom-approval-compensation-poc.js;cd server && npx vitest run tests/unit/scripts/check-wecom-approval-compensation-poc.test.js --reporter=verbose。 | node|vitest | DONE | DONE | DONE | server/src/scripts/check-wecom-approval-compensation-poc.js|server/package.json | ["WACP3-1"] | 已新增 QA-only runner 和 package script;隐私边界:报告不输出手机号、邮箱、token、secret、完整 userid、完整 template_id、完整 sp_no、表单值、附件、评论或原始 payload。回滚/清理:删除 runner 和 package script。 |
| 5 | WACP3-3 | 回调证据比对与差异分类 | runner 读取 WCBK1 脱敏回调事件证据,与补偿拉取到的审批详情做脱敏比对,输出漏回调、重复回调、状态不一致和样例不完整等发现。 | 1) 能读取 WECOM_APPROVAL_CALLBACK_EVIDENCE_FILE 或默认证据文件;2) 按脱敏 sp_no/template/status 摘要比对;3) 无回调证据时返回 PARTIAL_COMPENSATION_NEEDS_CONFIG;4) 有差异时返回 PASS_WITH_FINDINGS;5) 不保存原始 XML、密文或完整 sp_no。 | 受影响流程:真实回调事件 -> 补偿拉取复核 -> 差异审计;验证步骤:cd server && npx vitest run tests/unit/scripts/check-wecom-approval-compensation-poc.test.js tests/unit/scripts/check-wecom-approval-callback-poc.test.js --reporter=verbose。 | vitest | DONE | DONE | DONE | server/src/scripts/check-wecom-approval-compensation-poc.js|server/src/services/integrations/wecomCallbackCrypto.js | ["WACP3-2"] | 已实现回调证据脱敏比对;公网因缺模板 ID 未进入详情拉取和比对。本轮不写入镜像表,只输出 QA-only 脱敏报告。回滚/清理:移除比对逻辑,不影响 WCBK1 已有回调接收。 |
| 6 | WACP3-4 | Focused 单测与隐私回归 | 新增 focused vitest 覆盖 WACP3 runner、服务函数、错误分类、回调证据比对和隐私边界。 | 1) 覆盖固定 WECOM_AGENT_SECRET;2) 覆盖无 Secret fallback;3) 覆盖分页/窗口参数和 template filters;4) 覆盖审批单号拉取和详情拉取;5) 覆盖空窗口、API 错误、回调证据缺失、状态不一致;6) 覆盖隐私字段不泄露。 | 受影响流程:WACP3 本地质量门禁;验证步骤:cd server && npx vitest run tests/unit/scripts/check-wecom-approval-compensation-poc.test.js tests/unit/scripts/check-wecom-approval-poc.test.js tests/unit/scripts/check-wecom-approval-callback-poc.test.js --reporter=verbose。 | vitest | DONE | DONE | DONE | server/tests/unit/scripts/check-wecom-approval-compensation-poc.test.js | ["WACP3-3"] | focused vitest 已覆盖固定 Secret、无 fallback、窗口/分页、详情拉取、错误分类、比对和隐私边界;单测使用 mock,不访问公网,不写 OA/企微数据。回滚/清理:删除测试文件。 |
| 7 | WACP3-5 | 事实源回写 | 更新路线图、企微 API 能力目录、统一审批规约、企业微信基础设施规约、试运行报告、文档索引、事实源矩阵和项目 skill,登记 WACP3 当前能力和仍未放行镜像。 | 1) 文档记录 WACP3 只证明补偿拉取 POC;2) 文档仍要求 WREAD1、WADM1、WARCH1 后才能评估 deep mirror;3) 文档登记 PASS/PARTIAL/SKIP 真实结论;4) skill 提醒后续企微审批先读 WACP3 证据。 | 受影响流程:后续企微审批路线、事实源读取和人工问答;验证步骤: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 'WACP3|补偿拉取|getapprovalinfo|PASS_COMPENSATION_POC|WREAD1' docs .agents/skills/hyb-oa-delivery/SKILL.md。 | node|python3|rg | DONE | DONE | DONE | docs|.agents/skills/hyb-oa-delivery/SKILL.md | ["WACP3-4"] | 事实源已回写 WACP3 runner、公网只读结论和仍未放行镜像的门禁。回滚/清理:只撤回事实源文字;不改变业务运行状态。 |
| 8 | WACP3-6 | 本地门禁与公网只读复跑 | 本地门禁通过后以 SYNC_ENV=0 受控部署,远端只读执行 check:wecom-approval-compensation-poc,不新建企微数据。 | 1) process baseline 和 WACP3 issue profile 通过;2) node --check、prisma validate、focused vitest、文档审计、skill 校验、git diff --check 和 scripts/check-minimal.sh 通过;3) SYNC_ENV=0 部署;4) /ready 正常;5) 远端报告为 PASS_COMPENSATION_POC、PASS_WITH_FINDINGS、PARTIAL_COMPENSATION_NEEDS_CONFIG 或真实 SKIP/BLOCKED_BY_EXTERNAL_CONFIG。 | 受影响流程:公网企微审批补偿拉取只读验证;验证步骤:node scripts/qa/check-process-contract.mjs --baseline --json;node scripts/qa/check-process-contract.mjs --issue issues/2026-05-19_19-03-06-wecom-approval-compensation-pull-poc-v1.csv --profile wecom --json;cd server && npm run prisma:validate;cd server && npx vitest run tests/unit/scripts/check-wecom-approval-compensation-poc.test.js tests/unit/scripts/check-wecom-approval-poc.test.js tests/unit/scripts/check-wecom-approval-callback-poc.test.js --reporter=verbose;node scripts/qa/audit-docs.mjs --check-registry;bash scripts/check-minimal.sh;SYNC_ENV=0 bash deploy/trialrun/deploy.sh;远端 npm run check:wecom-approval-compensation-poc -- --live --format=json;复检 /ready。 | node|npm|vitest|bash|ssh|curl | DONE | DONE | DONE | N/A | ["WACP3-5"] | 本地门禁、SYNC_ENV=0 部署和 /ready 已通过;公网只读报告 /app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T112117Z/summary.json 结论为 PARTIAL_COMPENSATION_NEEDS_CONFIG,原因是远端缺 WECOM_APPROVAL_LEAVE_TEMPLATE_ID、WECOM_APPROVAL_MISSED_PUNCH_TEMPLATE_ID,未拉详情、未比对回调;本轮无 OA/企微写入。回滚/清理:部署回滚沿用 deploy 流程;本轮无企微写入可清理。 |
| 9 | WACP3-7 | 状态回填与中文提交 | 按真实测试和公网复跑结果回填 WACP3 Issue 状态,完成中文提交。 | 1) WACP3 全部 Test_Method 已执行并通过或真实 SKIP;2) Issue Notes 记录本地和公网报告路径、结论和剩余缺口;3) git diff --check 通过;4) 中文 commit 引用 WACP3。 | 受影响流程:WACP3 交付闭环;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-19_19-03-06-wecom-approval-compensation-pull-poc-v1.csv;git diff --check;git status --short;git commit -m 'WACP3 实现企微审批补偿拉取 POC'。 | python3|git | DONE | DONE | DONE | N/A | ["WACP3-6"] | 已按真实结果回填:公网为 PARTIAL_COMPENSATION_NEEDS_CONFIG,不伪造成 PASS;剩余人工/配置项是把完整请假和补卡 OA-POC 模板 ID 配到远端环境后复跑。回滚/清理:git revert 本提交;无数据库迁移、无 OA/企微写入。 |