WREMOTE1 规划远端收口和正式模板测试

这个提交包含在:
2026-05-22 13:41:48 +08:00
父节点 170b9f9146
当前提交 6361dc2efb
共修改 18 个文件,包含 330 行新增和 171 行删除
+16 -6
查看文件
@@ -355,7 +355,7 @@ WF8-3、WF8-4、WF8-5 实现前必须基于本设计给技术方案;实现后
- 采购单附件、合同正文、报价、供应商资料、发票、银行回单、代账资料和其他高敏附件不进入企业微信原生审批或企业微信附件;企业微信只做提醒、deeplink 和免登录回流。
- 按域镜像是默认规则:企微主办 HR/考勤域镜像到 OA;OA 主办采购、合同、项目、财务和报销域不反向全量镜像到企微。
- WFDG 后,审批相关页面和接口必须区分 `OA 主办`、`企微镜像` 和 `OA 应急接管`;企微镜像不得被误用为 OA 日常新建入口,OA 应急接管单据必须带 `EMERGENCY` 并进入恢复回写队列。
- WAPI/WRRA/WOUA-FIX/WAPC1/WAPC2/WPROC1/WEGOV1 后,审批相关运行时迁移必须先读 [企微优先开发路线图](./企微优先开发路线图.md) 和 [企微 API 能力目录](./企微API能力目录.md),按 `wecom_hr_master_sync_v1` -> `runtime_first_wecom_enablement` -> `WOUA-FIX / WECOM-RUNTIME-READY-V1` -> `WAPC1 审批配置准备` -> `WAPC2 请假/补卡只读 POC` -> `WAPC2F 自动生成 POC 样件` -> `WAPC2FLIVE live 创建与 WAPC2 自动复跑` -> `WCBK1 回调只读 POC` -> `WEGOV1 企微主办治理与自建留存路线修正` -> `WACP3/WACP3R 补偿拉取 POC` -> `WREAD1 审批可读性与误审批防护门禁` -> `WADM1 自建留存/镜像数据模型设计` -> `WARCH1 最小自建历史留存实现` -> `WARCH2 正式只读历史查询` -> `WROAD2+OPS 受控上线与每日巡检` -> `WARCH3 归档稳定化自动巡检` -> `WCHECK1 打卡摘要留存` -> `WEXT1 外出/加班 dry-run` -> `WOPS1 巡检告警降噪` -> `WROAD2-CLOSEOUT 三天验收` -> `WROAD2-BIZ1 三天业务冒烟` -> `WAPPR1 审批规则规范化` -> `WRULE1 审批链校验器 POC` -> `WAUTO1 自动证据汇总` -> `WEXT1LD 外出/加班 live 前 dry-run` -> `WFULLSMOKE1 三天全域最终目标测试` -> `WROUTE2 测试号收口到最小镜像路线锁定` -> `WTCLOSE2 测试号最终收口与证据复核` -> `WTCLOSE2F 远端可信 IP 执行口径修正` -> `WEXT1-LIVE 外出/加班测试号 live POC` -> `四类测试号证据和审批规则门禁通过后问答 WREAL1 小范围真实试用(首批 1 名真实员工 + 1 名审批人/管理员观察)` -> `wecom_attendance_approval_mirror_v1 最小完整镜像` -> `oa_hr_emergency_mode_v1` -> `wecom_recovery_writeback_v1` 的顺序拆单功能 Issue CSV;WOUA-FIX 只收口了用户一致性测试账号差异和处理决策,WRV1/WRA1/WMSG1 只验证入口、OAuth/绑定、脱敏消息、deeplink、通讯录、人事助手、打卡只读主链路和真实消息回流。WAPC1 只固化审批配置准备清单;WAPC2 只读模板详情和低风险 `sp_no` 审批详情;WAPC2FLIVE 只生成 OA-POC 低风险测试样件并自动复跑只读 POC;WCBK1 只证明真实审批状态回调可验签、可解密、可脱敏留证;WACP3R 只证明补偿拉取和详情读取可用,并发现回调证据文件未持久化;WEGOV1 只修正混合主办、自建留存和测试治理口径;WREAD1 只证明请假/补卡当前样例可读;WADM1 只完成模型设计;WARCH1 已实现请假/补卡最小历史留存;WARCH2 只提供只读查询 API 和历史页;WEXT1 只完成外出/加班 dry-run;WROAD2-BIZ1 只补充测试账号人工业务冒烟清单;WAPPR1 将申请人任意选择审批人列为真实试用前阻断 finding;WRULE1 只校验已归档审批链;WAUTO1 只做自动证据汇总,WEXT1LD 只做 live 前 dry-run,WFULLSMOKE1 只做全域主路径总控;WROUTE2 只锁定路线,WTCLOSE2 只做最终自动收口,不授权写入;WEXT1-LIVE 写入前必须另建合同并再次人工确认。完整企微审批镜像必须等 WREAL1 通过后再规划,应急接管和恢复回写仍后置,不得用 WARCH1/WARCH2 或测试号证据直接放行。
- WAPI/WRRA/WOUA-FIX/WAPC1/WAPC2/WPROC1/WEGOV1 后,审批相关运行时迁移必须先读 [企微优先开发路线图](./企微优先开发路线图.md) 和 [企微 API 能力目录](./企微API能力目录.md),按 `wecom_hr_master_sync_v1` -> `runtime_first_wecom_enablement` -> `WOUA-FIX / WECOM-RUNTIME-READY-V1` -> `WAPC1 审批配置准备` -> `WAPC2 请假/补卡只读 POC` -> `WAPC2F 自动生成 POC 样件` -> `WAPC2FLIVE live 创建与 WAPC2 自动复跑` -> `WCBK1 回调只读 POC` -> `WEGOV1 企微主办治理与自建留存路线修正` -> `WACP3/WACP3R 补偿拉取 POC` -> `WREAD1 审批可读性与误审批防护门禁` -> `WADM1 自建留存/镜像数据模型设计` -> `WARCH1 最小自建历史留存实现` -> `WARCH2 正式只读历史查询` -> `WROAD2+OPS 受控上线与每日巡检` -> `WARCH3 归档稳定化自动巡检` -> `WCHECK1 打卡摘要留存` -> `WEXT1 外出/加班 dry-run` -> `WOPS1 巡检告警降噪` -> `WROAD2-CLOSEOUT 三天验收` -> `WROAD2-BIZ1 三天业务冒烟` -> `WAPPR1 审批规则规范化` -> `WRULE1 审批链校验器 POC` -> `WAUTO1 自动证据汇总` -> `WEXT1LD 外出/加班 live 前 dry-run` -> `WFULLSMOKE1 三天全域最终目标测试` -> `WROUTE2 测试号收口到最小镜像路线锁定` -> `WTCLOSE2 测试号最终收口与证据复核` -> `WTCLOSE2F 远端可信 IP 执行口径修正` -> `WREMOTE1/WFULLSMOKE2 远端收口` -> `WEXT1-FORMAL 正式模板外出/加班测试` -> `四类测试号证据和审批规则门禁通过后问答 WREAL1 小范围真实试用(首批 1 名真实员工 + 1 名审批人/管理员观察)` -> `wecom_attendance_approval_mirror_v1 最小完整镜像` -> `oa_hr_emergency_mode_v1` -> `wecom_recovery_writeback_v1` 的顺序拆单功能 Issue CSV;WOUA-FIX 只收口了用户一致性测试账号差异和处理决策,WRV1/WRA1/WMSG1 只验证入口、OAuth/绑定、脱敏消息、deeplink、通讯录、人事助手、打卡只读主链路和真实消息回流。WAPC1 只固化审批配置准备清单;WAPC2 只读模板详情和低风险 `sp_no` 审批详情;WAPC2FLIVE 只生成 OA-POC 低风险测试样件并自动复跑只读 POC;WCBK1 只证明真实审批状态回调可验签、可解密、可脱敏留证;WACP3R 只证明补偿拉取和详情读取可用,并发现回调证据文件未持久化;WEGOV1 只修正混合主办、自建留存和测试治理口径;WREAD1 只证明请假/补卡当前样例可读;WADM1 只完成模型设计;WARCH1 已实现请假/补卡最小历史留存;WARCH2 只提供只读查询 API 和历史页;WEXT1 只完成外出/加班 dry-run;WROAD2-BIZ1 只补充测试账号人工业务冒烟清单;WAPPR1 将申请人任意选择审批人列为真实试用前阻断 finding;WRULE1 只校验已归档审批链;WAUTO1 只做自动证据汇总,WEXT1LD 只做 live 前 dry-run,WFULLSMOKE1 只做全域主路径总控;WROUTE2 只锁定路线,WTCLOSE2/WREMOTE1 只做远端收口和全域 smoke,不授权写企微;WEXT1-FORMAL 人工提交前必须另建合同并再次人工确认。完整企微审批镜像必须等 WREAL1 通过后再规划,应急接管和恢复回写仍后置,不得用 WARCH1/WARCH2 或测试号证据直接放行。
- WRV1/WRA1 runner `npm run check:wecom-runtime-ready` 中的审批模板、测试 `sp_no` 和真实回调检查只允许输出 `NEEDS_CONFIG`;这类缺口不阻断运行优先主链路的 `PASS_WITH_CONFIG_GAPS`,但必须阻断 `wecom_attendance_approval_mirror_v1`、应急恢复回写和 RuleOps。`WECOM_CHECKIN_SYNC_ENABLED` 只控制正式考勤同步批次,不阻断 QA-only 打卡只读能力探测。
- WMSG1 已证明企业微信应用消息可达和 Deeplink 可进入 OA 通知页;该证据只清除通知链路,不清除审批模板、测试 `sp_no` 或真实回调前置。WAPC1 固化配置准备清单后,WAPC2 先提供请假/补卡模板详情和低风险审批详情只读 POC;WPROC1 后优先用 WAPC2F 自动生成 POC 样件,不默认要求人工手动创建模板或测试单。人工介入限于写入批准、密钥/回调配置、企微后台无法 API 化配置、真机确认和风险拍板。
- 后续企微审批同步的 POC 必须输出 `CAN_REUSE_NOW`、`NEEDS_CONFIG`、`NEEDS_API_POC`、`KEEP_OA_PRIMARY`、`NOT_SUPPORTED_BY_API`,缺模板、回调、Secret 或权限时记录 `SKIP/BLOCKED_BY_EXTERNAL_CONFIG`。
@@ -407,7 +407,7 @@ WAPC2F 是 WAPC2 后的自动化优先补缺阶段,目标是尽量用 QA-only
- 预检两者必须 active、已绑定企微、可见、不是同一 OA 员工、不是同一企微 userid。
- 自审硬阻断,不因 `admin`、`manager`、`ceo`、`finance` 或其他角色放开。
- 如果 `SMOKE101` 不可用,不自动换成 `HYD000007` 或其他人员;必须返回配置缺口并用问答方式确认新链路。
- live 写入必须有显式 CLI 参数 `--live --create-templates --submit-test-approvals` 和单次进程环境变量 `WECOM_APPROVAL_FIXTURE_WRITE=1`,默认 dry-run 不获取写入 token、不调用企微写接口。
- live 创建 OA-POC 样件必须有显式 CLI 参数 `--live --create-templates --submit-test-approvals` 和单次进程环境变量 `WECOM_APPROVAL_FIXTURE_WRITE=1`,默认 dry-run 不获取写入 token、不调用企微写接口;WEXT1-FORMAL 正式模板测试不走该写入路径。
- 报告只保存脱敏模板 ID/`sp_no` 前缀、计数、状态和错误分类,不保存完整 `sp_no`、表单值、附件、评论、完整 userid、Secret、token 或原始 payload。
### 9.3.1 WAPPR1 企微审批规则规范化门禁
@@ -421,7 +421,7 @@ WAPPR1 承接 WROAD2 期间发现的补卡申请仍需申请人手动选择审
- WAPPR1 验收必须由三类证据组合:管理员在企微后台确认无“申请人自选”节点;`SMOKE002` 真机提交页确认审批人自动带出且不能任意改人;提交后用 `getapprovaldetail` 校验实际审批人为 `SMOKE101` 且无自审。
- 2026-05-21 人工门禁结论:测试员工直属上级已设置为测试主管,用户真机确认请假、补卡、外出、加班提交页均自动带出测试主管,且申请人不能删除、改人或新增审批人;四类模板均按 A / `PASS_APPROVER_RULES_READY` 记录。
- 结论按模板分别记录:`PASS_APPROVER_RULES_READY`、`PASS_WITH_TEMPLATE_ADJUSTMENTS`、`FAIL_KEEP_OA_PRIMARY_FOR_THIS_TEMPLATE` 或 `SKIP/BLOCKED_BY_EXTERNAL_CONFIG`。
- A/B/C/D 人工门禁口径不变:只有 A 可作为规则门禁通过条件;B、C、D 均阻断 WEXT1-LIVE、WREAL1 和后续 `wecom_attendance_approval_mirror_v1`。
- A/B/C/D 人工门禁口径不变:只有 A 可作为规则门禁通过条件;B、C、D 均阻断 WEXT1-FORMAL、WREAL1 和后续 `wecom_attendance_approval_mirror_v1`。
- 如果企微模板能力或后台配置暂时无法做到自动审批人规则,对应模板继续保持测试账号 POC 或 OA 主办,不进入 WREAL1 真实员工试用。
### 9.3.2 WRULE1 企微 HR/考勤审批链校验器 POC
@@ -436,11 +436,11 @@ WRULE1 不新造 HR/考勤审批引擎,也不读取企微后台规则配置。
- 未传 `--manual-gate=<template>:A/B/C/D` 时输出 `PAUSED_MANUAL_CONFIRMATION`,表示缺少后台人工确认或真机提交页证据,不得把实际审批链匹配误读为模板规则已合规。
- 结论限定为 `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`。
- 报告只输出审批类型、计数、脱敏 `sp_no`/template/employee 前缀和 finding 类型,不输出完整 userid、完整 template_id、完整 `sp_no`、手机号、邮箱、token、Secret、表单值、附件、评论或原始 payload。
- `PASS_RULE_MATCH` 或可解释 `PASS_WITH_ADMIN_FALLBACK` 只是进入测试号收口的自动证据之一;四类模板仍必须先由 WAPPR1 人工确认 A,才能进入 WEXT1-LIVE、WREAL1 和最小完整镜像。
- `PASS_RULE_MATCH` 或可解释 `PASS_WITH_ADMIN_FALLBACK` 只是进入测试号收口的自动证据之一;四类模板仍必须先由 WAPPR1 人工确认 A,才能进入 WEXT1-FORMAL、WREAL1 和最小完整镜像。
### 9.3.3 WTCLOSE2 测试号最终收口与证据复核
WTCLOSE2 是 WEXT1-LIVE 前的最后自动收口。它复跑并汇总 WAUTO1、WFULLSMOKE1、外出/加班 dry-run 和 WRULE1 证据,确认测试号链路是否可解释通过;它不写企业微信、不创建外出/加班模板或审批单、不启用真实员工。
WTCLOSE2 是正式模板外出/加班测试前的最后自动收口。它复跑并汇总 WAUTO1、WFULLSMOKE1、外出/加班 dry-run 和 WRULE1 证据,确认测试号链路是否可解释通过;它不写企业微信、不创建外出/加班模板或审批单、不启用真实员工。
- 企业微信 API 受可信 IP 限制,WTCLOSE2 真实运行必须在部署服务器执行;runner 为 `bash scripts/qa/run-wecom-test-account-final-closeout.sh --remote`,由 SSH 到部署服务器并在 server 容器中生成 `artifacts/qa-flow/wecom-test-account-final-closeout-*/summary.json`。
- 本地直接执行 WTCLOSE2 脚本默认拒绝跑企微链路;本地只允许做 `bash -n`、合同、文档和静态门禁,不得把本地缺 env/DB 输出当作企微业务阻断证据。
@@ -448,7 +448,17 @@ WTCLOSE2 是 WEXT1-LIVE 前的最后自动收口。它复跑并汇总 WAUTO1、W
- WRULE1 固定传入 `--manual-gate=all:A`,但仍只代表已提交审批链校验,不替代 WAPPR1 人工后台和真机门禁。
- 外出/加班步骤只执行 dry-run,不设置 `WECOM_APPROVAL_FIXTURE_WRITE=1`,不带 `--live`、`--create-templates` 或 `--submit-test-approvals`。
- 结论限定为 `PASS_TEST_ACCOUNT_CLOSEOUT_READY`、`PASS_WITH_FINDINGS`、`PAUSED_MANUAL_CONFIRMATION` 或 `SKIP/BLOCKED_BY_EXTERNAL_CONFIG`。
- WTCLOSE2 可解释通过后只能进入 WEXT1-LIVE 问答;live 创建、真实员工试用和最小完整镜像仍需各自独立合同和人工批准。
- WTCLOSE2 可解释通过后只能进入 WREMOTE1/WFULLSMOKE2 远端收口和 WEXT1-FORMAL 人工提交问答;真实员工试用和最小完整镜像仍需各自独立合同和人工批准。
### 9.3.4 WREMOTE1/WEXT1-FORMAL 正式模板外出/加班测试
WTCLOSE2F 后,企业微信审批相关业务证据必须来自部署服务器可信 IP。外出/加班下一步不再自动创建 OA-POC 测试模板,也不由系统自动提交审批单;改为使用企业微信后台现有正式模板做真实提交页和审批链验证。
- WREMOTE1 先部署/同步代码并执行 `bash scripts/qa/run-wecom-test-account-final-closeout.sh --remote`;全域 smoke 使用 `WFULLSMOKE_ALLOW_PUBLIC_WRITES=1 bash scripts/qa/run-three-day-full-goal-smoke.sh --remote`。
- WEXT1-FORMAL 人工操作为 `SMOKE002` 在正式外出、加班模板提交低风险测试单,`SMOKE101` 先打开详情页再审批。
- 系统只读校验为补偿拉取、审批详情读取、OA 归档读取、WRULE1 审批链校验和隐私扫描;不得调用创建模板、提交审批或其他企微写接口。
- 若正式模板出现申请人可任意改审批人、自审、审批人不一致、可见范围或可信 IP 阻断,结论记录为 blocking finding,不进入 WREAL1。
- WREAL1 真实员工和审批人信息只通过 `/tmp/hyb-oa-wreal1.env` 临时文件提供,不写入 Issue CSV、仓库文档或聊天。
### 9.4 WEGOV1 / WACP3 / WREAD1 / WADM1 / WARCH1 前置门禁