文件
hyb-oa/issues/2026-05-19_19-03-06-wecom-approval-compensation-pull-poc-v1.csv
T

9.6 KiB

1IDTitleDescriptionAcceptanceTest_MethodToolsDev_StatusReview1_StatusRegression_StatusFilesDependenciesNotes
2WACP3-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|manualDONEDONEDONEissues/2026-05-19_19-03-06-wecom-approval-compensation-pull-poc-v1.csv[]已完成合同建档和边界冻结;本轮无 OA/企微写入、无新增模板或审批单。回滚/清理:删除本合同和本轮代码/文档变更;本轮不部署写入能力、不创建企微数据、不写数据库。
3WACP3-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|vitestDONEDONEDONEserver/src/services/integrations/wecomApproval.js["WACP3-0"]已新增 getapprovalinfo 只读能力并固定 WECOM_AGENT_SECRET;缺权限、可信 IP、可见范围或审批数据权限时输出 SKIP/BLOCKED_BY_EXTERNAL_CONFIG。回滚/清理:移除新增只读函数和导出。
4WACP3-2QA-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|vitestDONEDONEDONEserver/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。
5WACP3-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。vitestDONEDONEDONEserver/src/scripts/check-wecom-approval-compensation-poc.js|server/src/services/integrations/wecomCallbackCrypto.js["WACP3-2"]已实现回调证据脱敏比对;公网因缺模板 ID 未进入详情拉取和比对。本轮不写入镜像表,只输出 QA-only 脱敏报告。回滚/清理:移除比对逻辑,不影响 WCBK1 已有回调接收。
6WACP3-4Focused 单测与隐私回归新增 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。vitestDONEDONEDONEserver/tests/unit/scripts/check-wecom-approval-compensation-poc.test.js["WACP3-3"]focused vitest 已覆盖固定 Secret、无 fallback、窗口/分页、详情拉取、错误分类、比对和隐私边界;单测使用 mock,不访问公网,不写 OA/企微数据。回滚/清理:删除测试文件。
7WACP3-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|rgDONEDONEDONEdocs|.agents/skills/hyb-oa-delivery/SKILL.md["WACP3-4"]事实源已回写 WACP3 runner、公网只读结论和仍未放行镜像的门禁。回滚/清理:只撤回事实源文字;不改变业务运行状态。
8WACP3-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|curlDONEDONEDONEN/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 流程;本轮无企微写入可清理。
9WACP3-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|gitDONEDONEDONEN/A["WACP3-6"]已按真实结果回填:公网为 PARTIAL_COMPENSATION_NEEDS_CONFIG,不伪造成 PASS;剩余人工/配置项是把完整请假和补卡 OA-POC 模板 ID 配到远端环境后复跑。回滚/清理:git revert 本提交;无数据库迁移、无 OA/企微写入。