WRULE1 实现企微审批链校验器 POC
这个提交包含在:
@@ -0,0 +1,9 @@
|
||||
"ID","Title","Description","Acceptance","Test_Method","Tools","Dev_Status","Review1_Status","Regression_Status","Files","Dependencies","Notes"
|
||||
"WRULE1-0","审批链校验器合同建档","建立 WRULE1 企微 HR/考勤审批链校验器 POC 合同,承接单一组织规则 + 企微 HR/考勤执行 + OA 校验留存路线。OA 按员工直属主管、指定审批角色和管理员兜底计算理论审批人,再对比 OA 已归档的企微审批详情实际审批链。企微审批详情上游 Secret 来源固定 WECOM_AGENT_SECRET,不尝试其他 Secret、无 fallback、不允许运行时猜 Secret;缺 Secret、权限、可信 IP、模板、可见范围或数据缺口时记录 NEEDS_CONFIG 或 SKIP/BLOCKED_BY_EXTERNAL_CONFIG。","1) 新合同使用 WRULE1-0..WRULE1-7;2) 默认只读 OA DB,不写 OA、不写企业微信、不创建模板或审批单;3) 不启用真实员工;4) 不替代 WAPPR1 人工 A/B/C/D 门禁;5) 输出结论限定 PASS_RULE_MATCH、PASS_WITH_ADMIN_FALLBACK、FAIL_APPLICANT_CAN_CHOOSE、FAIL_SELF_APPROVAL、FAIL_APPROVER_MISMATCH、PAUSED_MANUAL_CONFIRMATION 或 SKIP/BLOCKED_BY_EXTERNAL_CONFIG;6) 报告不泄露手机号、邮箱、token、Secret、EncodingAESKey、完整 userid、完整 template_id、完整 sp_no、表单值、附件、评论或原始 payload。","受影响流程:OA 组织规则 -> 企微 HR/考勤审批归档 -> 理论审批人和实际审批链校验 -> WEXT1-LIVE/WREAL1 准入;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-20_23-56-15-wecom-hr-approval-rule-validator-v1.csv;node scripts/qa/check-process-contract.mjs --issue issues/2026-05-20_23-56-15-wecom-hr-approval-rule-validator-v1.csv --profile wecom --json。","python3|node","DONE","DONE","DONE","issues/2026-05-20_23-56-15-wecom-hr-approval-rule-validator-v1.csv","[]","回滚/清理:删除本 CSV 或恢复事实源即可;本合同不授权企微写入、不部署真实员工、不修改 Prisma schema。"
|
||||
"WRULE1-1","只读审批链校验服务","新增校验逻辑:读取归档审批的申请人、实际审批人、OA 直属主管、业务审批角色和管理员兜底账号,计算理论审批人并输出逐单 finding。","1) 直属主管 active、已绑定企微且非本人时优先匹配直属主管;2) 无有效直属主管时允许配置的业务审批角色;3) 仍无候选时仅允许管理员兜底并标记 PASS_WITH_ADMIN_FALLBACK;4) 实际审批人为申请人时输出 FAIL_SELF_APPROVAL;5) 实际审批人不在理论审批候选中输出 FAIL_APPROVER_MISMATCH;6) WAPPR1 人工门禁 B/C 输出 FAIL_APPLICANT_CAN_CHOOSE,D 输出 SKIP/BLOCKED_BY_EXTERNAL_CONFIG。","受影响流程:员工主管链/角色 -> 企微审批实际审批人 -> 规则一致性判定;验证步骤:cd server && npx vitest run tests/unit/services/wecomApprovalRuleValidator.test.js --reporter=verbose。","node|vitest","DONE","DONE","DONE","server/src/services/integrations/wecomApprovalRuleValidator.js|server/tests/unit/services/wecomApprovalRuleValidator.test.js","[""WRULE1-0""]","回滚/清理:删除新增服务和测试;不涉及数据库迁移或运行态写入。"
|
||||
"WRULE1-2","QA-only runner 和脚本入口","新增 QA-only runner check-wecom-approval-rule-validator,默认读取 OA DB 已归档企微审批详情和组织规则,生成脱敏 summary.json;增加 npm 脚本入口。","1) 支持 --template=leave/missed_punch/outing/overtime;2) 支持 --manual-gate=<template|all>:A/B/C/D;3) 支持 --approval-role 和 --fallback-employee-no;4) 默认不调用企微 API,不读取 Secret,不写 OA/企微;5) 报告目录为 artifacts/qa-flow/wecom-approval-rule-validator-*;6) package 脚本为 check:wecom-approval-rule-validator。","受影响流程:WAPPR1 人工门禁 -> OA 归档审批读取 -> 审批链校验报告 -> 后续准入问答;验证步骤:cd server && node --check src/scripts/check-wecom-approval-rule-validator.js;cd server && npx vitest run tests/unit/scripts/check-wecom-approval-rule-validator.test.js --reporter=verbose。","node|vitest","DONE","DONE","DONE","server/src/scripts/check-wecom-approval-rule-validator.js|server/package.json|server/tests/unit/scripts/check-wecom-approval-rule-validator.test.js","[""WRULE1-1""]","回滚/清理:删除新增 runner、测试和 package 脚本;已生成 artifacts 报告可保留审计或删除本地目录。"
|
||||
"WRULE1-3","WAPPR1 人工门禁闭环口径","继续沿用现有 WAPPR1 合同,明确请假、补卡、外出、加班四类模板必须人工确认 A;本 runner 只能校验已提交审批链,不能读取企微后台是否允许申请人手选审批人。","1) 四类模板 A 才放行;2) B/C/D 均阻断 WEXT1-LIVE、WREAL1 和最小完整镜像;3) runner 缺少 --manual-gate 时输出 PAUSED_MANUAL_CONFIRMATION;4) API 边界继续登记为 NOT_SUPPORTED_BY_API / NEEDS_MANUAL_GATE。","受影响流程:企微后台模板配置 -> 真机提交页确认 -> 提交后审批详情校验 -> 准入门禁;验证步骤:rg -n ""WAPPR1|A/B/C/D|申请人不能任意选择|PAUSED_MANUAL_CONFIRMATION|NOT_SUPPORTED_BY_API|NEEDS_MANUAL_GATE"" docs .agents/skills/hyb-oa-delivery/SKILL.md server/src/scripts/check-wecom-approval-rule-validator.js。","rg|manual","DONE","DONE","DONE","docs/企微API能力目录.md|docs/需求-统一审批中心规约.md|docs/管理员手册.md|server/src/scripts/check-wecom-approval-rule-validator.js","[""WRULE1-2""]","回滚/清理:恢复事实源文档;不修改企微后台、不写业务数据。"
|
||||
"WRULE1-4","路线事实源回写","更新路线图、API 能力目录、统一审批规约、管理员手册、试运行报告、文档索引、事实源矩阵和项目 skill,固化单一组织规则、企微执行、OA 校验留存和 WRULE1 准入位置。","1) 路线改为 WAPPR1 -> WRULE1 -> WTCLOSE1/WAUTO1/WFULLSMOKE1 -> WEXT1-LIVE -> WREAL1 -> 最小完整镜像;2) 明确 OA 不维护另一套 HR/考勤审批规则;3) 明确 OA 主办域仍为报销、采购、合同、项目、付款、发票、高敏附件和经营审计;4) 应急接管、恢复写回、RuleOps 后置;5) 文档审计和 skill 校验通过。","受影响流程:事实源读取 -> 后续合同规划 -> 自动/人工门禁;验证步骤: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 ""WRULE1|单一组织规则|理论审批人|实际审批链|PASS_RULE_MATCH"" docs .agents/skills/hyb-oa-delivery/SKILL.md。","node|python3|rg","DONE","DONE","DONE","docs/企微优先开发路线图.md|docs/企微API能力目录.md|docs/需求-统一审批中心规约.md|docs/管理员手册.md|docs/trialrun/人工试运行报告.md|docs/文档索引.md|docs/文档事实源状态矩阵.md|.agents/skills/hyb-oa-delivery/SKILL.md","[""WRULE1-3""]","回滚/清理:恢复本轮文档和 skill 改动;不修改历史 Issue 快照。"
|
||||
"WRULE1-5","本地门禁和隐私核对","执行合同、语法、单测、文档、最小门禁和隐私核对,确认报告不泄露完整外部键或敏感字段。","1) validate_issues_csv 通过;2) process baseline 和 WRULE1 wecom profile 通过;3) node --check 通过;4) focused vitest 通过;5) prisma validate 通过;6) audit-docs、quick_validate、git diff --check、scripts/check-minimal.sh 通过;7) 报告隐私边界通过。","受影响流程:本地实现 -> 自动验证 -> 交付准入;验证步骤:node scripts/qa/check-process-contract.mjs --baseline --json;cd server && npm run prisma:validate;cd server && npx vitest run tests/unit/services/wecomApprovalRuleValidator.test.js tests/unit/scripts/check-wecom-approval-rule-validator.test.js --reporter=verbose;git diff --check;bash scripts/check-minimal.sh。","python3|node|npm|git|bash","DONE","DONE","DONE","server/src/services/integrations/wecomApprovalRuleValidator.js|server/src/scripts/check-wecom-approval-rule-validator.js|server/tests/unit","[""WRULE1-4""]","回滚/清理:测试失败时不提交;本轮不部署、不写远端 env、不写企微。"
|
||||
"WRULE1-6","只读 reviewer subagent 审查","审批规则属于高风险治理项,实施后另开只读 reviewer subagent 审查,不允许修改代码,重点检查双规则源、权限泄漏、准入误判和漏测项。","1) reviewer 只读;2) 审查单一组织规则 + 企微执行 + OA 校验留存是否会形成双事实源;3) 审查 B/C/D、self approval、mismatch 是否阻断真实试用;4) 审查 findings 和隐私边界;5) 如有 blocker 必须修复或记录。","受影响流程:实现完成 -> 独立评审 -> 状态回填;验证步骤:评审 subagent 输出 review 结论;人工核对无 blocker 或 blocker 已处理。","subagent|manual","DONE","DONE","DONE","N/A","[""WRULE1-5""]","回滚/清理:reviewer 不修改文件;如发现高风险,暂停 WEXT1-LIVE/WREAL1。"
|
||||
"WRULE1-7","状态回填和中文提交","按测试和 reviewer 结果回填 WRULE1 状态,完成中文提交。","1) 所有 WRULE1 行按通过结果回填 DONE;2) git status 仅包含本轮相关改动;3) 中文提交包含 WRULE1;4) final 说明改动、验证、未部署状态和下一步人工门禁。","受影响流程:合同 -> 实施 -> 验证 -> review -> 提交 -> 后续问答;验证步骤:git status --short;git log -1 --oneline。","git|manual","DONE","DONE","DONE","issues/2026-05-20_23-56-15-wecom-hr-approval-rule-validator-v1.csv|N/A","[""WRULE1-6""]","回滚/清理:如提交前发现问题,恢复本轮新增文件和文档;本轮不部署、不写企微、不修改远端环境。提交建议:WRULE1 实现企微审批链校验器 POC。"
|
||||
|
在新工单中引用
屏蔽一个用户