WTCLOSE2F 修正测试号收口远端执行口径

这个提交包含在:
2026-05-22 11:36:31 +08:00
父节点 592cf6524c
当前提交 170b9f9146
共修改 9 个文件,包含 97 行新增和 16 行删除
+11
查看文件
@@ -558,6 +558,17 @@ Go 结论边界:
| 结论分类 | 已固定 | `PASS_TEST_ACCOUNT_CLOSEOUT_READY`、`PASS_WITH_FINDINGS`、`PAUSED_MANUAL_CONFIRMATION`、`SKIP/BLOCKED_BY_EXTERNAL_CONFIG`。 |
| 后续问答 | 待 WTCLOSE2 汇总 | 若 WTCLOSE2 可解释通过,再问是否批准 WEXT1-LIVE 单次 live 创建外出+加班 OA-POC 样件;真实员工试用仍固定后置为 1 名真实员工 + 1 名审批人/管理员观察,且需另行问答。 |
## WTCLOSE2F 远端可信 IP 执行口径修正
执行时间:2026-05-22。用户确认企业微信后台已限制 API 只能由部署服务器访问,本地执行 WTCLOSE2 会因缺远端 env、DB 和可信 IP 产生误导性阻断,因此修正如下:
| 项目 | 状态 | 证据与边界 |
| --- | --- | --- |
| 执行合同 | 已建档 | 新增 `issues/2026-05-22_11-10-06-wecom-test-account-closeout-remote-only-v1.csv`,ID 为 `WTCLOSE2F-0..WTCLOSE2F-5`。 |
| 执行入口 | 已修正 | WTCLOSE2 真实运行命令改为 `bash scripts/qa/run-wecom-test-account-final-closeout.sh --remote`,由 SSH 到部署服务器并在 server 容器中执行。 |
| 本地边界 | 已固定 | 本地直接执行脚本默认拒绝跑企微链路;本地只用于 `bash -n`、合同、文档和静态门禁。此前本地缺 env/DB 造成的 WTCLOSE2 阻断不能作为企微业务阻断证据。 |
| 写入边界 | 不变 | 远端 WTCLOSE2 仍不写企业微信、不创建外出/加班模板或审批单、不启用真实员工;WFULLSMOKE1 仍以 `WFULLSMOKE_ALLOW_PUBLIC_WRITES=0` 运行。 |
## 历史恢复
需要追溯 R70-R91 的详细流水时,使用:
+5 -4
查看文件
@@ -2,15 +2,16 @@
**文档状态**:当前开发路线图事实源。
**分类**:开发治理 / 路线图。
**适用时间**:WDRG / WCP1 / WHMSLIVE / WOUA / WAPI / WRRA / WOUA-FIX / WRV1 / WRA1 / WMSG1 / WAPC1 / WAPC2 / WPROC1 / WPROC2 / WAPC2F / WAPC2FLIVE / WCBK1 / WEGOV1 / WACP3 / WACP3R / WREAD1 / WREAD1F / WADM1 / WARCH1 / WARCH2 / WROAD2 / WARCH3 / WCHECK1 / WEXT1 / WOPS1 / WROAD2-CLOSEOUT / WROAD2-BIZ1 / WAPPR1 / WAUTO1 / WEXT1LD / WFULLSMOKE1 / WROUTE2 / WTCLOSE1 / WRULE1 / WTCLOSE2 / WREAL1-PREP / WEXT1-LIVE 路线选择之后。
**关联 Issue**:`WDRG,WCP1,WHMS,WHMSLIVE,WOUA,WAPI,WRRA,WOUAFIX,WRV1,WRA1,WMSG1,WAPC1,WAPC2,WPROC1,WPROC2,WAPC2F,WAPC2FLIVE,WCBK1,WEGOV1,WACP3,WACP3R,WREAD1,WREAD1F,WADM1,WARCH1,WARCH2,WROAD2,WARCH3,WCHECK1,WEXT1,WOPS1,WROAD2C,WROAD2B,WAPPR1,WAUTO1,WEXT1LD,WFULLSMOKE1,WROUTE2,WTCLOSE1,WRULE1,WTCLOSE2,WREAL1P`。
**适用时间**:WDRG / WCP1 / WHMSLIVE / WOUA / WAPI / WRRA / WOUA-FIX / WRV1 / WRA1 / WMSG1 / WAPC1 / WAPC2 / WPROC1 / WPROC2 / WAPC2F / WAPC2FLIVE / WCBK1 / WEGOV1 / WACP3 / WACP3R / WREAD1 / WREAD1F / WADM1 / WARCH1 / WARCH2 / WROAD2 / WARCH3 / WCHECK1 / WEXT1 / WOPS1 / WROAD2-CLOSEOUT / WROAD2-BIZ1 / WAPPR1 / WAUTO1 / WEXT1LD / WFULLSMOKE1 / WROUTE2 / WTCLOSE1 / WRULE1 / WTCLOSE2 / WTCLOSE2F / WREAL1-PREP / WEXT1-LIVE 路线选择之后。
**关联 Issue**:`WDRG,WCP1,WHMS,WHMSLIVE,WOUA,WAPI,WRRA,WOUAFIX,WRV1,WRA1,WMSG1,WAPC1,WAPC2,WPROC1,WPROC2,WAPC2F,WAPC2FLIVE,WCBK1,WEGOV1,WACP3,WACP3R,WREAD1,WREAD1F,WADM1,WARCH1,WARCH2,WROAD2,WARCH3,WCHECK1,WEXT1,WOPS1,WROAD2C,WROAD2B,WAPPR1,WAUTO1,WEXT1LD,WFULLSMOKE1,WROUTE2,WTCLOSE1,WRULE1,WTCLOSE2,WTCLOSE2F,WREAL1P`。
**最近审计**:2026-05-22。
**不得误读**:本文只控制后续开发节奏、阶段顺序和门禁。WHMSLIVE 后只代表企微 HR 主数据镜像已部署并受控验证;WAPI 后进一步固定企微 API/Secret 口径并转为运行优先;WRRA 后明确 `PASS_WITH_FINDINGS` 只代表只读对账成功且存在差异,不代表企微考勤/审批镜像、OA 应急接管、恢复回写或 RuleOps 已完成运行时实现。WMSG1 只证明企业微信应用消息可达和 Deeplink 可回到 OA;WAPC1 只固化审批配置准备清单;WAPC2 只新增请假/补卡模板详情和低风险 `sp_no` 审批详情只读 POC,不代表真实回调或镜像能力已完成。WPROC1 后,WAPC2 不直接放行深度镜像,必须先完成自动样件、回调、补偿拉取和镜像数据模型设计门禁。WPROC2 只新增可执行 process gate。WAPC2FLIVE 已创建 OA-POC 请假/补卡测试模板和低风险测试审批单,并自动复跑 WAPC2 得到 `PASS_APPROVAL_POC`。WCBK1 已完成真实回调 URL 验证和一条现有 OA-POC 测试审批单事件确认,公网报告为 `PASS_CALLBACK_EVENT_CONFIRMED`;WEGOV1 后路线明确为“企微成熟功能优先上线,OA 做自建留存、审计、入口、消息和应急兜底”。WACP3R 已将补偿拉取复跑修正为自动按 `SMOKE002` creator 发现 OA-POC 请假/补卡模板,公网报告 `/app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T115944Z/summary.json` 为 `PASS_WITH_FINDINGS`。WREAD1F 新样例后,审批人真机确认请假和补卡消息卡片、列表、详情页均可看清;远端人工结果报告 `/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T133628Z/summary.json` 为 `PASS_READABLE`。但同意按钮单击即通过仍是操作风险,需在 WARCH1/WARCH2 的留存、审计、提示或操作规程中继续处理。WADM1 只完成自建留存/镜像数据模型设计;WARCH1 只实现请假/补卡最小审批历史留存、回调事件入库、补偿拉取入库和 QA-only 离线读取证明;WARCH2 只提供 OA DB 只读查询 API 和 PC/移动历史页,不调用企微 API、不读取企微 Secret、不代表完整镜像、外出/加班、应急接管、恢复回写或 RuleOps 已完成。WROAD2 后当前策略是测试账号受控上线和每日脚本化巡检,允许补偿归档写 OA 自建留存库,但不写企业微信、不扩大真实员工范围;WARCH3 将每日巡检升级为服务器 `systemd timer` 与脱敏企微告警,WCHECK1 增加打卡规范化明细、日/月摘要和规则快照留存,WEXT1 只完成外出/加班 dry-run 支持。WOPS1 已公网验证巡检告警降噪:`HYD000006` 是管理员 `wangshunli` 的 employee_no,脚本不再把姓名字符串当员工号;已知 finding 不重复发送,只有阻断、脚本失败、新增 finding 或状态恶化才告警。WROAD2-BIZ1 在三天内补充测试账号人工业务冒烟;WAPPR1 将申请人任意选择审批人列为真实试用前阻断 finding。WAUTO1 只做只读证据汇总,WEXT1LD 只做外出/加班 live 前 dry-run,均不授权 live 创建。WFULLSMOKE1 是三天全域最终目标测试总控,只聚合企微 HR/考勤、OA 主办域、移动端和运维巡检证据;它允许在公网试运行环境创建带 `TEST/SMOKE/WFULL` 标记的 OA 测试业务数据,但不写企业微信、不创建外出/加班样件、不做真实付款、不接真实支付、不写 ERP、不导入银行流水、不启用真实员工。WREAL1-PREP 只准备真实小范围试用清单,不启用真实员工;后续顺序收紧为 WROAD2-CLOSEOUT 三天验收 -> WROAD2-BIZ1 三天业务冒烟 -> WAPPR1 审批规则规范化 -> WAUTO1 自动证据汇总 -> WEXT1LD 外出/加班 live 前 dry-run -> WFULLSMOKE1 三天全域最终目标测试 -> WEXT1-LIVE 外出/加班测试号 live POC -> 请假/补卡/外出/加班四类测试号证据和审批规则门禁通过后再问真实小范围试用。上述阶段仍不代表完整深度镜像、应急接管、恢复回写或 RuleOps 已完成。
**WTCLOSE2F 顺序修正**:上一条长段中的“后续顺序”以本条为准:WROAD2-CLOSEOUT -> WROAD2-BIZ1 -> WAPPR1 -> WRULE1 -> WAUTO1 -> WEXT1LD -> WFULLSMOKE1 -> WTCLOSE2/WTCLOSE2F 远端可信 IP 收口 -> WEXT1-LIVE 问答 -> WREAL1 问答 -> 最小完整镜像。
**WROUTE2 补充口径**:WFULLSMOKE1 之后先锁定测试号全域收口,再进入 WEXT1-LIVE 问答;WREAL1 首批固定为 1 名真实员工 + 1 名审批人/管理员观察;WREAL1 通过后优先规划 `wecom_attendance_approval_mirror_v1` 最小完整镜像,应急接管、恢复回写和 RuleOps 后置。
**WTCLOSE1 执行口径**:公司不到 10 人,WAPPR1 四类模板目标按 A 执行;正式 HR/考勤审批采用一层直属主管或指定审批角色自动带出审批人,主管链缺失、审批人不可见/停用/未绑定或命中自审时由管理员兜底或阻断。本轮自动执行到 WAUTO1/WFULLSMOKE1 汇总和 WEXT1-LIVE 前 dry-run,不授权任何企微写入。
**WAPPR1 2026-05-21 人工门禁结论**:测试员工直属上级已设置为测试主管;用户真机确认请假、补卡、外出、加班提交页均自动带出测试主管,且申请人不能删除、改人或新增审批人,四类模板均为 A。该结论只放行规则门禁,不等于批准外出/加班 live 写入或真实员工试用;后续仍需 WRULE1 实际审批链校验和 WEXT1-LIVE/WREAL1 问答。
**WRULE1 执行口径**:采用“单一组织规则,两个执行域”。OA 维护员工、直属主管、业务角色和管理员兜底事实;企业微信只执行 HR/考勤审批;OA 通过 `check:wecom-approval-rule-validator` 读取已归档企微审批详情,计算理论审批人并对比实际审批链。WRULE1 是只读校验器,不新增 HR/考勤审批引擎,不写企微,不替代 WAPPR1 的后台人工确认和真机提交页确认。
**WTCLOSE2 执行口径**:新增 `scripts/qa/run-wecom-test-account-final-closeout.sh` 汇总测试号最终证据,复跑 WAUTO1、WFULLSMOKE1、外出/加班 dry-run 和 WRULE1。WFULLSMOKE1 在 WTCLOSE2 中以 `WFULLSMOKE_ALLOW_PUBLIC_WRITES=0` 运行,不新增 OA 测试业务数据;脚本不写企业微信、不创建外出/加班样件、不启用真实员工。WTCLOSE2 结论只进入 WEXT1-LIVE 问答,不自动执行 live。
**WTCLOSE2/WTCLOSE2F 执行口径**:新增 `scripts/qa/run-wecom-test-account-final-closeout.sh` 汇总测试号最终证据,复跑 WAUTO1、WFULLSMOKE1、外出/加班 dry-run 和 WRULE1。由于企业微信 API 已配置可信 IP,只允许部署服务器访问,WTCLOSE2 运行证据必须来自部署服务器:本地直接执行脚本默认拒绝跑企微链路,正确命令为 `bash scripts/qa/run-wecom-test-account-final-closeout.sh --remote`,由 SSH 到部署服务器并在 server 容器中执行;本地只做合同、语法、文档和静态门禁。WFULLSMOKE1 在 WTCLOSE2 中以 `WFULLSMOKE_ALLOW_PUBLIC_WRITES=0` 运行,不新增 OA 测试业务数据;如子 runner 触发既有归档写库,只能走 WARCH3/WCHECK1 已批准的 OA 自建留存路径。脚本不写企业微信、不创建外出/加班样件、不启用真实员工。WTCLOSE2 结论只进入 WEXT1-LIVE 问答,不自动执行 live;此前本地缺 env/DB 造成的 WTCLOSE2 阻断不能作为企微业务阻断证据。
## 1. 路线图原则
@@ -106,7 +107,7 @@
| 24 | `WEXT1LD 外出/加班 live 前 dry-run gate` | 在 live 创建前远端只执行外出/加班 dry-run。 | WEXT1 dry-run runner 已存在;用户要求 live 前先自动 dry-run。 | 不带 live 写入参数;通过后只进入问答,不自动创建模板或审批单。 |
| 25 | `WFULLSMOKE1 三天全域最终目标测试` | 汇总企微 HR/考勤、OA 报销、采购、合同/项目、付款批次、移动/企微入口和运维巡检主路径。 | 用户要求三天内测试整个项目最终目标;WROAD2/WARCH3/WCHECK1/WROAD2-BIZ1/WAPPR1/WRULE1/WAUTO1/WEXT1LD 已建立。 | 输出 `PASS_FULL_GOAL_SMOKE_READY`、`PASS_WITH_FINDINGS`、`PAUSED_MANUAL_CONFIRMATION` 或 `SKIP/BLOCKED_BY_EXTERNAL_CONFIG`;只允许 `TEST/SMOKE/WFULL` OA 测试数据,不写企微、不真实付款、不写 ERP、不导入银行流水。 |
| 26 | `WREAL1-PREP / WROUTE2 真实试用准备和路线锁定` | 固化候选员工、审批人、允许流程、暂停条件、回滚联系人和验收标准,不启用真实员工,并锁定测试号收口到最小完整镜像的后续顺序。 | 用户选择先收口测试账号,不提前启用真实员工。 | 文档和合同明确真实试用需等四类测试号证据、WAPPR1/WRULE1 审批规则门禁和 WFULLSMOKE1 可解释通过后再问;当前继续测试账号,首批真实试用固定为 1 名真实员工 + 1 名审批人/管理员观察。 |
| 27 | `WTCLOSE2 测试号最终收口与证据复核` | 自动复跑测试号收口证据,确认是否可以进入 WEXT1-LIVE 问答。 | WAPPR1 四类模板均为 A;WRULE1 已实现;WAUTO1/WEXT1LD/WFULLSMOKE1 已存在。 | 输出 `PASS_TEST_ACCOUNT_CLOSEOUT_READY`、`PASS_WITH_FINDINGS`、`PAUSED_MANUAL_CONFIRMATION` 或 `SKIP/BLOCKED_BY_EXTERNAL_CONFIG`;不写企业微信、不创建样件、不启用真实员工。 |
| 27 | `WTCLOSE2/WTCLOSE2F 测试号最终收口与证据复核` | 在部署服务器可信 IP 上自动复跑测试号收口证据,确认是否可以进入 WEXT1-LIVE 问答。 | WAPPR1 四类模板均为 A;WRULE1 已实现;WAUTO1/WEXT1LD/WFULLSMOKE1 已存在;远端代码与本地合同同步。 | 通过 `bash scripts/qa/run-wecom-test-account-final-closeout.sh --remote` 输出 `PASS_TEST_ACCOUNT_CLOSEOUT_READY`、`PASS_WITH_FINDINGS`、`PAUSED_MANUAL_CONFIRMATION` 或 `SKIP/BLOCKED_BY_EXTERNAL_CONFIG`;不写企业微信、不创建样件、不启用真实员工;本地直接执行不作为业务证据。 |
| 28 | `WEXT1-LIVE 外出/加班测试号 live POC` | 单次创建外出+加班 OA-POC 模板和低风险测试审批单,并做真机可读性和审批规则确认。 | WTCLOSE2 可解释通过;新建独立 Issue CSV;再次说明会留下的企微记录并取得人工确认。 | 两类样件保留审计;固定 `SMOKE002 -> SMOKE101`、`WECOM_AGENT_SECRET` 和双开关;只保存脱敏 template/`sp_no`/userid 前缀;`SMOKE101` 真机确认消息、列表、详情、按钮风险和审批人是否自动带出。 |
| 29 | `WREAL1 小范围真实试用` | 在 1 名真实员工 + 1 名审批人/管理员观察范围验证企微主办 HR/考勤和 OA 留存。 | 请假、补卡、外出、加班四类测试号证据通过;WAPPR1/WRULE1 规则门禁通过;WTCLOSE2 和 WEXT1-LIVE 可解释通过;用户通过问答确认真实员工、审批人、试用周期、暂停条件和回滚联系人。 | 试用报告可解释通过或暂停;仍不直接全员推广。 |
| 30 | `wecom_attendance_approval_mirror_v1 最小完整镜像` | 企微打卡、请假、补卡、外出、加班、假期余额和审批历史镜像到 OA。 | WREAL1 通过后优先规划;不得仅凭测试号证据进入,也不先做应急接管、恢复回写或 RuleOps。 | OA 可查询企微 HR/考勤镜像、附件摘要、审批历史、考勤解释和审计;不把 OA 主办高敏审批迁到企微。 |
+2 -1
查看文件
@@ -102,9 +102,10 @@
| `WAUTO1` | `issues/2026-05-20_18-04-16-wecom-controlled-trial-auto-evidence-v1.csv` | `CURRENT` | 受控试用证据自动汇总合同已实现:新增 `scripts/qa/collect-wecom-controlled-trial-evidence.sh`,只读汇总 WROAD2/WARCH3/WCHECK1/WROAD2-BIZ1/WAPPR1/WEXT1 dry-run 证据,复跑 `/ready`、WARCH3 summary-only、审批补偿只读、审批归档离线、打卡摘要 offline、外出/加班 dry-run 和隐私扫描;默认不写 OA DB、不写企业微信、不创建模板或审批单 |
| `WEXT1LD` | `issues/2026-05-20_18-04-16-wecom-outing-overtime-live-dryrun-gate-v1.csv` | `CURRENT` | 外出/加班 live 前 dry-run gate 已实现:远端只执行 `npm run check:wecom-approval-fixtures -- --format=json --target=outing --target=overtime`,固定 `SMOKE002 -> SMOKE101` 与 `WECOM_AGENT_SECRET`;不设置写入环境变量、不带 live 写入参数,dry-run 通过后仍需人工问答批准或暂停 |
| `WFULLSMOKE1` | `issues/2026-05-20_19-01-12-three-day-full-goal-smoke-v1.csv` | `CURRENT` | 三天全域最终目标测试总控合同已建立:新增 `scripts/qa/run-three-day-full-goal-smoke.sh` 聚合企微 HR/考勤、OA 报销、采购、合同/项目、付款批次、移动/企微入口和运维巡检;允许带 `TEST/SMOKE/WFULL` 标记的 OA 测试业务数据,不写企业微信、不创建外出/加班样件、不启用真实员工、不真实付款、不接真实支付、不写 ERP、不导入银行流水 |
| `WROUTE2` | `issues/2026-05-20_20-15-29-wecom-test-account-closeout-to-minimal-mirror-route-v1.csv` | `CURRENT` | 测试号收口到最小完整镜像路线锁定合同已建立:当前先收口 WROAD2/WROAD2-BIZ1/WAPPR1/WAUTO1/WEXT1LD/WFULLSMOKE1,不提前启用真实员工;WAPPR1 四类模板必须达到 A 才能进入 WEXT1-LIVE 或 WREAL1;WREAL1 首批固定为 1 名真实员工 + 1 名审批人/管理员观察;WREAL1 通过后优先规划 `wecom_attendance_approval_mirror_v1` 最小完整镜像,应急接管、恢复回写和 RuleOps 后置 |
| `WROUTE2` | `issues/2026-05-20_20-15-29-wecom-test-account-closeout-to-minimal-mirror-route-v1.csv` | `CURRENT` | 测试号收口到最小完整镜像路线锁定合同已建立:当前先收口 WROAD2/WROAD2-BIZ1/WAPPR1/WRULE1/WAUTO1/WEXT1LD/WFULLSMOKE1/WTCLOSE2,不提前启用真实员工;WAPPR1 四类模板必须达到 A 才能进入 WEXT1-LIVE 或 WREAL1;WREAL1 首批固定为 1 名真实员工 + 1 名审批人/管理员观察;WREAL1 通过后优先规划 `wecom_attendance_approval_mirror_v1` 最小完整镜像,应急接管、恢复回写和 RuleOps 后置 |
| `WTCLOSE1` | `issues/2026-05-20_21-10-00-wecom-test-account-closeout-auto-dryrun-v1.csv` | `CURRENT` | 小团队自动审批规则与测试号全域收口 dry-run 合同:公司不到 10 人,WAPPR1 四类模板目标均为 A;正式 HR/考勤审批采用一层直属主管或指定审批角色自动带出审批人,主管链缺失、审批人不可见/停用/未绑定或自审时管理员兜底或阻断;本轮自动执行 WAUTO1/WFULLSMOKE1 汇总和外出/加班 live 前 dry-run,不写企业微信、不启用真实员工 |
| `WTCLOSE2` | `issues/2026-05-22_10-21-12-wecom-test-account-final-closeout-v1.csv` | `CURRENT` | 测试号最终收口与证据复核合同:WAPPR1 四类模板均为 A 后,自动复跑 `/ready`、WAUTO1、WFULLSMOKE1、外出/加班 dry-run 和 WRULE1;不写企业微信、不创建模板或审批单、不启用真实员工,只进入 WEXT1-LIVE 问答 |
| `WTCLOSE2F` | `issues/2026-05-22_11-10-06-wecom-test-account-closeout-remote-only-v1.csv` | `CURRENT` | WTCLOSE2 远端可信 IP 执行口径修正:企微 API 只能由部署服务器访问,WTCLOSE2 真实运行必须使用 `--remote` 在 server 容器内执行;本地直接执行默认阻断,只保留静态门禁用途 |
| `WREAL1-PREP` | `issues/2026-05-20_14-35-42-wecom-real-trial-prep-v1.csv` | `CURRENT` | 真实小范围试用准备合同:只固化候选员工、非自审审批人、回滚联系人、允许流程、暂停条件和验收标准;当前不启用真实员工,真实试用必须等请假/补卡/外出/加班四类测试号证据、WAPPR1 审批规则门禁和 WFULLSMOKE1 全域主路径可解释通过后再问 |
旧 Issue CSV 保留为历史审计证据:不删除、不批量回写、不移动到 `docs/archive/` 或其他归档目录。新连续合同如替代旧合同,只在新合同 `Notes` 或文档索引中说明 supersedes。
+2 -1
查看文件
@@ -20,7 +20,7 @@
## 最近事实源链
R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> MIF7/MIF7T(公网部署与带凭据公网复检已收口) -> DG8 -> DG9 -> R7E -> FBA -> QAOPS9/P2D -> P2-ORG -> P2-FIN-DECISION -> P2-FIN-V1 -> P2-OCR-SAMPLE -> P2Q -> P2AUTO -> P2AF -> P2-FIN-LIVE-DECISION -> P2-FIN-LIVE -> PRELAUNCH -> CASHIER-VOUCHER-V1 -> LAUNCH-DEPLOY-FINANCE -> FIN-PROD-ENABLE -> ACCOUNTING-HANDOFF-V1 -> SYSTEM-COMPLETE-GATE -> LAUNCH-OPS-V1 -> REQ-COMPLETE-AUDIT -> ATTV1 -> LAUNCH-AUTO-OPS-V1 -> AUTO-REMAINING-CLOSEOUT -> HR-WECOM-DIRECTORY-V1 -> HRWD-CONTACT-LIVE-TEST -> WCFB -> WFOC -> DBWFOC -> WFDG -> WDRG -> WCP1 -> WCPC -> WHMS -> WHMSLIVE -> WOUA -> WAPI -> WRRA -> WOUA-FIX -> WRV1 -> WRA1 -> WMSG1 -> WAPC1 -> WAPC2 -> WPROC1 -> WPROC2 -> WAPC2F dry-run -> WAPC2FLIVE -> WCBK1 -> WEGOV1 -> WACP3/WACP3R -> WREAD1 自动汇总 -> WREAD1F 新样例 -> 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 测试号收口到最小镜像路线锁定 -> WTCLOSE1 小团队自动审批规则与测试号全域收口 dry-run -> WTCLOSE2 测试号最终收口与证据复核 -> WEXT1-LIVE 路线选择(待测试号收口、全域主路径、业务冒烟和规则门禁后另建合同) -> 四类测试号证据和审批规则门禁通过后问答 WREAL1 小范围真实试用(首批 1 名真实员工 + 1 名审批人/管理员观察) -> wecom_attendance_approval_mirror_v1 最小完整镜像。
R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> MIF7/MIF7T(公网部署与带凭据公网复检已收口) -> DG8 -> DG9 -> R7E -> FBA -> QAOPS9/P2D -> P2-ORG -> P2-FIN-DECISION -> P2-FIN-V1 -> P2-OCR-SAMPLE -> P2Q -> P2AUTO -> P2AF -> P2-FIN-LIVE-DECISION -> P2-FIN-LIVE -> PRELAUNCH -> CASHIER-VOUCHER-V1 -> LAUNCH-DEPLOY-FINANCE -> FIN-PROD-ENABLE -> ACCOUNTING-HANDOFF-V1 -> SYSTEM-COMPLETE-GATE -> LAUNCH-OPS-V1 -> REQ-COMPLETE-AUDIT -> ATTV1 -> LAUNCH-AUTO-OPS-V1 -> AUTO-REMAINING-CLOSEOUT -> HR-WECOM-DIRECTORY-V1 -> HRWD-CONTACT-LIVE-TEST -> WCFB -> WFOC -> DBWFOC -> WFDG -> WDRG -> WCP1 -> WCPC -> WHMS -> WHMSLIVE -> WOUA -> WAPI -> WRRA -> WOUA-FIX -> WRV1 -> WRA1 -> WMSG1 -> WAPC1 -> WAPC2 -> WPROC1 -> WPROC2 -> WAPC2F dry-run -> WAPC2FLIVE -> WCBK1 -> WEGOV1 -> WACP3/WACP3R -> WREAD1 自动汇总 -> WREAD1F 新样例 -> 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 测试号收口到最小镜像路线锁定 -> WTCLOSE1 小团队自动审批规则与测试号全域收口 dry-run -> WTCLOSE2 测试号最终收口与证据复核 -> WTCLOSE2F 远端可信 IP 执行口径修正 -> WEXT1-LIVE 路线选择(待测试号收口、全域主路径、业务冒烟和规则门禁后另建合同) -> 四类测试号证据和审批规则门禁通过后问答 WREAL1 小范围真实试用(首批 1 名真实员工 + 1 名审批人/管理员观察) -> wecom_attendance_approval_mirror_v1 最小完整镜像。
- R6、PC6、PA6、FL6、AP6、RI6、LP6 已完成并部署。
- ME6 自动化、公网视觉矩阵和 `ME6-3` 代表性企业微信真机门禁已完成。
@@ -166,6 +166,7 @@ R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> M
| `WROUTE2` | `issues/2026-05-20_20-15-29-wecom-test-account-closeout-to-minimal-mirror-route-v1.csv` | 当前后续路线锁定:测试号全域收口 -> 外出/加班 live POC -> 真实小试用 -> 最小完整镜像 | 固化 WAPPR1 A 为 WEXT1-LIVE 和 WREAL1 硬门禁;WREAL1 首批固定为 1 名真实员工 + 1 名审批人/管理员观察;WREAL1 通过后优先规划 `wecom_attendance_approval_mirror_v1` 最小完整镜像 | 不写企业微信;不启用真实员工;不创建外出/加班样件;应急接管、恢复回写和 RuleOps 继续后置 |
| `WTCLOSE1` | `issues/2026-05-20_21-10-00-wecom-test-account-closeout-auto-dryrun-v1.csv` | 当前小团队自动审批规则与测试号全域收口 dry-run:公司不到 10 人时,四类 HR/考勤模板目标均为 A | 固化一层主管或指定审批角色 + 管理员兜底规则;公网 WAUTO1 `/app/artifacts/qa-flow/wecom-controlled-trial-evidence-20260520-130010/summary.json` 为 `PAUSED_MANUAL_CONFIRMATION`,WFULLSMOKE1 `/app/artifacts/qa-flow/three-day-full-goal-smoke-20260520-125909/summary.json` 为 `PASS_WITH_FINDINGS`,外出/加班 dry-run `/app/artifacts/qa-flow/wecom-approval-fixtures-20260520T125941Z/summary.json` 为 `PASS_FIXTURE_DRY_RUN_READY`;2026-05-21 WAPPR1 四类模板已由用户真机确认均为 A | 不写企业微信;不创建外出/加班模板或审批单;不启用真实员工;进入 WEXT1-LIVE/WREAL1 前仍需 WRULE1、三天业务动作和最终问答 |
| `WTCLOSE2` | `issues/2026-05-22_10-21-12-wecom-test-account-final-closeout-v1.csv` | 当前测试号最终收口与证据复核:WEXT1-LIVE 前最后自动收口 | 新增 `scripts/qa/run-wecom-test-account-final-closeout.sh`,复跑 `/ready`、WAUTO1、WFULLSMOKE1、外出/加班 dry-run 和 WRULE1;WFULLSMOKE1 在该脚本中关闭公网写流程,WRULE1 使用 `--manual-gate=all:A` | 不写企业微信;不新增 OA 测试业务数据;不创建外出/加班模板或审批单;不启用真实员工;结论只进入 WEXT1-LIVE 问答 |
| `WTCLOSE2F` | `issues/2026-05-22_11-10-06-wecom-test-account-closeout-remote-only-v1.csv` | 当前 WTCLOSE2 远端可信 IP 执行口径修正 | WTCLOSE2 真实运行命令改为 `bash scripts/qa/run-wecom-test-account-final-closeout.sh --remote`,由部署服务器 server 容器执行;本地直接执行默认拒绝跑企微链路 | 本地只做合同、语法、文档和静态门禁;此前本地缺 env/DB 的 WTCLOSE2 输出不作为企微业务阻断证据 |
| `WREAL1-PREP` | `issues/2026-05-20_14-35-42-wecom-real-trial-prep-v1.csv` | 当前真实试用准备:不启用真实员工 | 固化候选员工、非自审审批人、回滚联系人、允许流程、暂停条件和验收标准;真实试用必须等请假、补卡、外出、加班四类测试号证据、WAPPR1 和 WFULLSMOKE1 通过后再问 | 当前不创建外出/加班 live 样件;真实员工名单不写入 Issue 或文档,后续通过问答确认 |
旧 Issue CSV 不删除、不批量回写、不移动到归档目录。若新治理流替代旧合同,只在新 CSV 的 `Notes` 或本索引说明 supersedes,旧文件保留历史审计语义。
+4 -4
查看文件
@@ -6,7 +6,7 @@
**WTCLOSE1 小团队规则**:公司不到 10 人时,HR/考勤审批先按一层直属主管或指定审批角色自动带出审批人,申请人不能任意改人;主管链缺失、审批人不可见/停用/未绑定或命中自审时,管理员兜底或阻断。当前目标是请假、补卡、外出、加班四类模板均达到 A;本轮自动工作只到 WAUTO1/WFULLSMOKE1 汇总和 WEXT1-LIVE 前 dry-run,不创建企微样件。
**WAPPR1 2026-05-21 真机结论**:测试员工直属上级已设置为测试主管;请假、补卡、外出、加班提交页均自动带出测试主管,且申请人不能删除、改人或新增审批人,四类模板均按 A 记录。该结论仍需结合提交后的 WRULE1 实际审批链校验和三天业务冒烟证据,不单独放行真实员工试用。
**WRULE1 审批链校验**:管理员后台规则和真机提交页仍由 WAPPR1 人工确认;系统只能用已归档审批详情校验实际审批链。校验命令为 `npm run check:wecom-approval-rule-validator -- --template=<类型> --manual-gate=<类型>:A`,缺人工门禁时结论为 `PAUSED_MANUAL_CONFIRMATION`;自审、实际审批人不符或申请人可手选审批人均阻断 WEXT1-LIVE、WREAL1 和最小镜像。
**WTCLOSE2 测试号最终收口**:命令为 `bash scripts/qa/run-wecom-test-account-final-closeout.sh`。该脚本复跑 WAUTO1、WFULLSMOKE1、外出/加班 dry-run 和 WRULE1,并汇总 WROAD2/WARCH3 既有报告;WFULLSMOKE1 在该脚本中关闭公网写流程,不新增 OA 测试业务数据;脚本不写企业微信、不创建审批样件、不启用真实员工。
**WTCLOSE2/WTCLOSE2F 测试号最终收口**:企业微信 API 已限制只能由部署服务器可信 IP 访问,因此命令必须使用 `bash scripts/qa/run-wecom-test-account-final-closeout.sh --remote`。本地直接执行脚本会拒绝跑企微链路,只能用于 `bash -n`、合同和文档静态门禁;不得把本地缺 env/DB 的结果当作业务阻断。远端脚本复跑 WAUTO1、WFULLSMOKE1、外出/加班 dry-run 和 WRULE1,并汇总 WROAD2/WARCH3 既有报告;WFULLSMOKE1 在该脚本中关闭公网业务写流程,不新增 OA 测试业务数据;如子 runner 触发既有归档写库,只能走 WARCH3/WCHECK1 已批准的 OA 自建留存路径;脚本不写企业微信、不创建审批样件、不启用真实员工。
## 1. 适用范围
- 适用于 `small_team_internal` 工作区模式。
@@ -211,8 +211,8 @@ WCP1/WCPC/WHMS 后续推进:
2. WCP1 历史结论为 `PAUSE_FOR_CONFIG`;WCPC 已用既有在职测试号完成远端只读复跑,报告 `/tmp/wecom-capability-poc-wcpc-smoke002/summary.json`,结论 `GO_TO_HR_MASTER_SYNC`。
3. WCPC 已证明 HR 主数据镜像准入项可用:通讯录成员读取、人事助手花名册读取、打卡短窗口记录/规则读取和假期余额读取均达到可复用状态;审批模板、审批实例和回调配置仍是后续考勤/审批镜像前置项。
4. WHMS 已实现并部署验证 `wecom_hr_master_sync_v1`,包括同步批次、逐员工结果、dry-run/apply、People 管理入口和 QA-only runner;公网验证后最终保持 `force_off`。
5. 正式开发仍按 `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 测试号最终收口与证据复核` -> `WEXT1-LIVE 外出/加班测试号 live POC` -> `四类测试号证据和审批规则门禁通过后问答 WREAL1 小范围真实试用` -> `wecom_attendance_approval_mirror_v1` -> `oa_hr_emergency_mode_v1` -> `wecom_recovery_writeback_v1` -> `wecom_ruleops_v1` 分合同实施;WOUA-FIX 已收口测试账号差异和处理决策,WRV1/WRA1/WMSG1 已验证运行入口、OAuth/绑定、脱敏消息、Deeplink、通讯录、人事助手和打卡读取主链路。WAPC2FLIVE 已生成请假/补卡低风险样例,WCBK1 已证明真实审批回调 URL、验签/解密和事件脱敏留证,WACP3R 已证明请假/补卡补偿拉取和详情读取可用,WREAD1 已确认请假/补卡可读性,WADM1 已明确自建留存模型,WARCH1 已实现最小请假/补卡历史留存,WARCH2 已实现正式只读查询;后续仍不得跳过 WROAD2-CLOSEOUT、WROAD2-BIZ1、WAPPR1、WRULE1、WAUTO1/WEXT1LD/WFULLSMOKE1、WTCLOSE2、WEXT1-LIVE、WREAL1 问答或明确批准,直接进入深度考勤/审批镜像。
- WROUTE2/WTCLOSE2 后尾部顺序修正为:`WFULLSMOKE1` -> `WROUTE2` -> `WTCLOSE2` -> `WEXT1-LIVE` -> `WREAL1(首批 1 名真实员工 + 1 名审批人/管理员观察)` -> `wecom_attendance_approval_mirror_v1 最小完整镜像`;应急接管、恢复回写和 RuleOps 仍排在最小镜像稳定之后。
5. 正式开发仍按 `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 小范围真实试用` -> `wecom_attendance_approval_mirror_v1` -> `oa_hr_emergency_mode_v1` -> `wecom_recovery_writeback_v1` -> `wecom_ruleops_v1` 分合同实施;WOUA-FIX 已收口测试账号差异和处理决策,WRV1/WRA1/WMSG1 已验证运行入口、OAuth/绑定、脱敏消息、Deeplink、通讯录、人事助手和打卡读取主链路。WAPC2FLIVE 已生成请假/补卡低风险样例,WCBK1 已证明真实审批回调 URL、验签/解密和事件脱敏留证,WACP3R 已证明请假/补卡补偿拉取和详情读取可用,WREAD1 已确认请假/补卡可读性,WADM1 已明确自建留存模型,WARCH1 已实现最小请假/补卡历史留存,WARCH2 已实现正式只读查询;后续仍不得跳过 WROAD2-CLOSEOUT、WROAD2-BIZ1、WAPPR1、WRULE1、WAUTO1/WEXT1LD/WFULLSMOKE1、WTCLOSE2、WEXT1-LIVE、WREAL1 问答或明确批准,直接进入深度考勤/审批镜像。
- WROUTE2/WTCLOSE2 后尾部顺序修正为:`WFULLSMOKE1` -> `WROUTE2` -> `WTCLOSE2` -> `WTCLOSE2F` -> `WEXT1-LIVE` -> `WREAL1(首批 1 名真实员工 + 1 名审批人/管理员观察)` -> `wecom_attendance_approval_mirror_v1 最小完整镜像`;应急接管、恢复回写和 RuleOps 仍排在最小镜像稳定之后。
6. 任何生产写接口、企微规则写入、应急模式开启或恢复回写都必须有单独批准、dry-run 或可审计记录。
WCPC 配置复跑清单:
@@ -352,7 +352,7 @@ WROAD2/WARCH3 企微受控上线每日巡检:
19. WEXT1-LIVE 已锁定为外出+加班两类一起创建 OA-POC 测试模板和低风险审批单,固定 `SMOKE002 -> SMOKE101`、`WECOM_AGENT_SECRET` 和双开关;样件保留审计,由 `SMOKE101` 真机确认消息卡片、列表、详情页、按钮风险和审批人是否自动带出。
20. Day 0 公网报告为 `/app/artifacts/qa-flow/wroad2-ops-20260520-041941/summary.json`,结论 `PASS_WITH_FINDINGS`:企微 runtime、补偿归档、离线归档读取和隐私扫描通过;finding 为缺 live smoke 登录凭据/pending OCR 子检查异常以及历史 callback gap,不阻断测试账号受控试用。
21. WROAD2-CLOSEOUT/WROAD2-BIZ1/WAPPR1/WRULE1/WAUTO1/WEXT1LD/WFULLSMOKE1/WTCLOSE2 结束后再做人工问答:进入 WEXT1-LIVE、先处理指定 finding、或暂停;未确认前不启用真实员工,不创建外出/加班 live 样件。
22. WTCLOSE2 作为 WEXT1-LIVE 前的最后自动收口:复跑命令 `bash scripts/qa/run-wecom-test-account-final-closeout.sh`,结论为 `PASS_TEST_ACCOUNT_CLOSEOUT_READY`、`PASS_WITH_FINDINGS`、`PAUSED_MANUAL_CONFIRMATION` 或 `SKIP/BLOCKED_BY_EXTERNAL_CONFIG`;它只进入问答,不自动 live。
22. WTCLOSE2 作为 WEXT1-LIVE 前的最后自动收口:复跑命令必须是 `bash scripts/qa/run-wecom-test-account-final-closeout.sh --remote`,因为企微 API 只允许部署服务器可信 IP 访问;结论为 `PASS_TEST_ACCOUNT_CLOSEOUT_READY`、`PASS_WITH_FINDINGS`、`PAUSED_MANUAL_CONFIRMATION` 或 `SKIP/BLOCKED_BY_EXTERNAL_CONFIG`;它只进入问答,不自动 live。本地直接执行脚本只用于静态门禁,不得作为企微业务证据。
23. WREAL1-PREP/WROUTE2 当前只准备和锁定路线,不要求提供真实员工;后续真实试用必须等请假、补卡、外出、加班四类测试号证据、WAPPR1/WRULE1 审批规则门禁、WTCLOSE2 和 WEXT1-LIVE 可解释通过后再问,首批固定为 1 名真实员工 + 1 名审批人/管理员观察。
24. `wecom_attendance_approval_mirror_v1` 最小完整镜像必须等 WREAL1 通过后优先规划;应急接管、恢复写回、RuleOps、图片 OCR、复杂 BPM、预算、ERP 和银行流水导入继续冻结。
+3 -2
查看文件
@@ -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 测试号最终收口与证据复核` -> `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 执行口径修正` -> `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 或测试号证据直接放行。
- 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`。
@@ -442,7 +442,8 @@ WRULE1 不新造 HR/考勤审批引擎,也不读取企微后台规则配置。
WTCLOSE2 是 WEXT1-LIVE 前的最后自动收口。它复跑并汇总 WAUTO1、WFULLSMOKE1、外出/加班 dry-run 和 WRULE1 证据,确认测试号链路是否可解释通过;它不写企业微信、不创建外出/加班模板或审批单、不启用真实员工。
- runner 为 `bash scripts/qa/run-wecom-test-account-final-closeout.sh`,输出 `artifacts/qa-flow/wecom-test-account-final-closeout-*/summary.json`。
- 企业微信 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 输出当作企微业务阻断证据。
- WFULLSMOKE1 在 WTCLOSE2 中必须以 `WFULLSMOKE_ALLOW_PUBLIC_WRITES=0` 运行,不新增 OA 测试业务数据。
- WRULE1 固定传入 `--manual-gate=all:A`,但仍只代表已提交审批链校验,不替代 WAPPR1 人工后台和真机门禁。
- 外出/加班步骤只执行 dry-run,不设置 `WECOM_APPROVAL_FIXTURE_WRITE=1`,不带 `--live`、`--create-templates` 或 `--submit-test-approvals`。