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

这个提交包含在:
2026-05-22 13:41:48 +08:00
父节点 170b9f9146
当前提交 6361dc2efb
共修改 18 个文件,包含 330 行新增和 171 行删除
+25 -14
查看文件
@@ -465,11 +465,11 @@ Go 结论边界:
| WEXT1 外出/加班 | 公网 dry-run 通过,live 未批准 | `npm run check:wecom-approval-fixtures` 支持 `--target=outing --target=overtime`;公网报告 `/app/artifacts/qa-flow/wecom-approval-fixtures-20260520T054940Z/summary.json` 为 `PASS_FIXTURE_DRY_RUN_READY`;本轮只构建最小通用模板和审批申请 payload,不创建企微模板、不提交审批单 |
| 隐私边界 | 保持 | 报告和告警只输出状态、计数、报告路径、脱敏 userid/template/sp_no 前缀;不输出手机号、邮箱、token、Secret、完整外部键、位置、人脸、设备明文、表单值、附件、评论或原始 payload |
上述能力仍不代表完整审批镜像、应急接管、恢复回写或 RuleOps 已完成。WROAD2-CLOSEOUT 三天验收期间同步执行 WROAD2-BIZ1 三天业务冒烟和 WAPPR1 审批规则规范化门禁;通过后再问答是否进入 WEXT1-LIVE 外出/加班测试号 live POC。请假、补卡、外出、加班四类测试号证据和审批规则门禁均通过后,才单独问答是否启动 WREAL1 小范围真实试用。
上述能力仍不代表完整审批镜像、应急接管、恢复回写或 RuleOps 已完成。WROAD2-CLOSEOUT 三天验收期间同步执行 WROAD2-BIZ1 三天业务冒烟和 WAPPR1 审批规则规范化门禁;通过后再问答是否进入 WEXT1-FORMAL 正式模板外出/加班测试。请假、补卡、外出、加班四类测试号证据和审批规则门禁均通过后,才单独问答是否启动 WREAL1 小范围真实试用。
## WOPS1 / WROAD2-CLOSEOUT / WREAL1-PREP 后续规划
执行时间:2026-05-20。基于 WARCH3/WCHECK1/WEXT1 后的受控上线结果和用户后续选择,当前不扩大真实员工、不立即创建外出/加班 live 样件,先完成三天稳态验收,并在三天内并行执行 WROAD2-BIZ1 人工业务冒烟与 WAPPR1 审批规则规范化;通过后再另建 WEXT1-LIVE 合同创建外出+加班测试号样件,四类测试号证据和审批规则门禁通过后才问是否进入真实小范围试用。
执行时间:2026-05-20。基于 WARCH3/WCHECK1/WEXT1 后的受控上线结果和用户后续选择,当前不扩大真实员工、不立即创建外出/加班 live 样件,先完成三天稳态验收,并在三天内并行执行 WROAD2-BIZ1 人工业务冒烟与 WAPPR1 审批规则规范化;WREMOTE1 后改为 WEXT1-FORMAL 正式模板人工提交测试,四类测试号证据和审批规则门禁通过后才问是否进入真实小范围试用。
| 项 | 当前结果 | 证据和边界 |
| --- | --- | --- |
@@ -479,9 +479,9 @@ Go 结论边界:
| WAPPR1 审批规则规范化 | 已建档,作为真实试用前门禁 | 用户发现补卡申请需要申请人手动选择审批人,该现象作为 blocking finding 治理。测试模板固定 `SMOKE002 -> SMOKE101`;正式请假、补卡、外出、加班模板必须按直属主管、部门负责人或指定审批角色自动带出审批人;申请人不得任意选择审批人,审批人缺失、停用、未绑定、不可见或自审时阻断。 |
| WRULE1 审批链校验器 | 已建档并进入本地 POC | 固定“单一组织规则,两个执行域”:OA 维护主管链、业务审批角色和管理员兜底,企微执行 HR/考勤审批,OA 只读已归档审批详情并校验理论审批人是否匹配实际审批链。WRULE1 不读取企微后台规则、不写企微、不替代 WAPPR1 人工门禁。 |
| WREAL1-PREP 真实试用准备 | 仅规划,不启用真实员工 | 固化候选员工 active/已绑定/可见、审批人非本人、回滚联系人、允许流程、暂停条件和验收标准。当前继续测试账号;真实试用必须等请假、补卡、外出、加班四类测试号证据和 WAPPR1/WRULE1 审批规则门禁通过后再问答确认,默认仍从 1 名真实员工 + 1 名审批人/管理员观察开始。 |
| 外出/加班 | live POC 待三天验收后另建合同 | WEXT1 dry-run 证据保留;当前不创建企微外出/加班模板或审批单。已锁定 WEXT1-LIVE 方向:外出+加班两类一起创建 OA-POC 测试模板和低风险审批单,固定 `SMOKE002 -> SMOKE101`、`WECOM_AGENT_SECRET` 和双开关,样件保留审计,由 `SMOKE101` 真机确认。 |
| 外出/加班 | 正式模板测试待远端收口后问答 | WEXT1 dry-run 证据保留;当前不创建企微外出/加班模板或审批单。已锁定 WEXT1-FORMAL 方向:使用现有正式模板,由 `SMOKE002` 真机提交低风险外出/加班测试单,`SMOKE101` 先看详情再审批,系统只读补偿、归档和 WRULE1。 |
三天验收结束后的人工问答选项固定为:进入 WEXT1-LIVE、先处理指定 finding、或暂停。外出/加班 live 写入前必须再次说明当前状态、改了什么、测了什么、结果是什么和会留下什么企微记录;四类测试号证据和 WAPPR1/WRULE1 审批规则门禁通过后,再问是否进入真实小范围试用。
三天验收结束后的人工问答选项固定为:进入 WEXT1-FORMAL、先处理指定 finding、或暂停。外出/加班正式模板人工测试前必须再次说明当前状态、改了什么、测了什么、结果是什么和会留下什么企微记录;四类测试号证据和 WAPPR1/WRULE1 审批规则门禁通过后,再问是否进入真实小范围试用。
## WAUTO1 / WEXT1LD 自动证据汇总与 live 前 dry-run
@@ -491,9 +491,9 @@ Go 结论边界:
| --- | --- | --- |
| WAUTO1 自动证据汇总 | 远端 `PAUSED_MANUAL_CONFIRMATION` | 新增 `scripts/qa/collect-wecom-controlled-trial-evidence.sh`,汇总 WROAD2/WARCH3/WCHECK1/WROAD2-BIZ1/WAPPR1/WEXT1 dry-run 证据,复跑公网 `/ready`、审批补偿只读、审批归档离线、打卡摘要 offline、外出/加班 dry-run 和隐私扫描。公网报告 `/app/artifacts/qa-flow/wecom-controlled-trial-evidence-20260520-103617/summary.json`:`/ready` 通过,外出/加班 dry-run 通过,审批补偿和归档离线为 `PASS_WITH_FINDINGS`,WARCH3 历史 summary 在容器内不可见记为人工缺口;脚本默认不设置 `WECOM_ARCHIVE_WRITE=1`、`WECOM_CHECKIN_ARCHIVE_WRITE=1` 或 `WECOM_APPROVAL_FIXTURE_WRITE=1`,不写 OA DB、不写企业微信、不创建模板或审批单。 |
| WAPPR1 人工确认模板 | 已补充 | 请假、补卡、外出、加班逐模板确认:A 审批人自动带出且申请人不能任意选择;B 默认带出但申请人仍可改人;C 必须申请人手选审批人;D 当前看不到或模板未配置。B/C/D 均不得直接进入真实员工试用。不要记录 Secret、token、完整 userid、完整审批单号、完整 template_id、表单值、附件、评论或原始 payload。 |
| WAPPR1 人工门禁结果 | `PASS_APPROVER_RULES_READY` | 2026-05-21 用户确认测试员工直属上级已设置为测试主管;请假、补卡、外出、加班提交页均自动带出测试主管,且申请人不能删除、改人或新增审批人,四类模板均为 A。该结论仍需结合 WRULE1 提交后实际审批链校验、WROAD2-BIZ1 业务动作和三天自动汇总,不自动触发 WEXT1-LIVE 或 WREAL1。 |
| WEXT1LD 外出/加班 dry-run gate | 远端 dry-run 通过 | 远端只执行 `npm run check:wecom-approval-fixtures -- --format=json --target=outing --target=overtime`,不带 live 写入参数,不设置写入环境变量。报告 `/app/artifacts/qa-flow/wecom-controlled-trial-evidence-20260520-103617/wecom-approval-fixtures-dryrun/summary.json` 为 `PASS_FIXTURE_DRY_RUN_READY`,且 `liveWrite.requested=false`、`liveWrite.allowed=false`。dry-run 通过后,仍需问答选择:批准一次 live 创建外出+加班 OA-POC 样件、只保留 dry-run、或外出/加班移出 V1。 |
| 后续人工问答 | 待三天汇总 | 三天汇总后选项固定为:接受 `PASS_AUTO_EVIDENCE_READY` 并进入 WEXT1-LIVE live 问答;接受 `PASS_WITH_FINDINGS` 但先处理指定 finding;暂停,不进入外出/加班 live 或真实试用。 |
| WAPPR1 人工门禁结果 | `PASS_APPROVER_RULES_READY` | 2026-05-21 用户确认测试员工直属上级已设置为测试主管;请假、补卡、外出、加班提交页均自动带出测试主管,且申请人不能删除、改人或新增审批人,四类模板均为 A。该结论仍需结合 WRULE1 提交后实际审批链校验、WROAD2-BIZ1 业务动作和三天自动汇总,不自动触发 WEXT1-FORMAL 或 WREAL1。 |
| WEXT1LD 外出/加班 dry-run gate | 远端 dry-run 通过 | 远端只执行 `npm run check:wecom-approval-fixtures -- --format=json --target=outing --target=overtime`,不带 live 写入参数,不设置写入环境变量。报告 `/app/artifacts/qa-flow/wecom-controlled-trial-evidence-20260520-103617/wecom-approval-fixtures-dryrun/summary.json` 为 `PASS_FIXTURE_DRY_RUN_READY`,且 `liveWrite.requested=false`、`liveWrite.allowed=false`。dry-run 通过后,不自动创建模板或审批单;下一步按 WEXT1-FORMAL 问答决定是否人工提交正式模板测试单。 |
| 后续人工问答 | 待三天汇总 | 三天汇总后选项固定为:接受 `PASS_AUTO_EVIDENCE_READY` 并进入 WEXT1-FORMAL 问答;接受 `PASS_WITH_FINDINGS` 但先处理指定 finding;暂停,不进入外出/加班正式模板测试或真实试用。 |
## WFULLSMOKE1 三天全域最终目标测试
@@ -503,7 +503,7 @@ Go 结论边界:
| --- | --- | --- |
| 总控合同 | 已建档 | 新增 `issues/2026-05-20_19-01-12-three-day-full-goal-smoke-v1.csv`,覆盖企微 HR/考勤、OA 报销、采购、合同/项目、付款批次、移动端和运维巡检。 |
| QA 编排脚本 | 已新增 | 新增 `scripts/qa/run-three-day-full-goal-smoke.sh`,聚合公网 `/ready`、feature flag、WARCH3/WAUTO1、审批补偿与归档离线读取、打卡摘要 offline、OA 主办域浏览器主路径、移动/企微入口矩阵和隐私扫描。 |
| 数据边界 | 已固定 | 允许创建带 `TEST/SMOKE/WFULL` 标记的 OA 测试业务数据并保留审计;不写企业微信、不创建外出/加班样件、不启用真实员工、不真实付款、不接真实支付、不写 ERP、不导入银行流水。 |
| 数据边界 | 已固定 | 允许创建带 `TEST-SMOKE-WFULL` 标记的 OA 测试业务数据并保留审计;不写企业微信、不创建外出/加班样件、不启用真实员工、不真实付款、不接真实支付、不写 ERP、不导入银行流水。 |
| 人工门禁 | 待执行 | Day 1/2/3 仍由 `SMOKE002`、`SMOKE101`、`HYD000006` 完成打卡、请假/补卡、审批详情确认、OA 历史查看和四类模板审批规则 A/B/C/D 确认;只有 WAPPR1 为 A 才能进入后续 live 或真实试用问答。 |
| 后续问答 | 待三天汇总 | 三天汇总后按结果选择:接受主路径闭环、先处理 finding、或暂停;外出/加班 live 和 WREAL1 真实小范围试用均不能由 WFULLSMOKE1 自动启动。 |
@@ -514,8 +514,8 @@ Go 结论边界:
| 项 | 当前结果 | 证据和边界 |
| --- | --- | --- |
| 路线合同 | 已建档 | 新增 `issues/2026-05-20_20-15-29-wecom-test-account-closeout-to-minimal-mirror-route-v1.csv`,作为 WFULLSMOKE1 后的路线锁定合同。 |
| 测试号收口 | 已锁定 | 当前优先完成 WROAD2-CLOSEOUT、WROAD2-BIZ1、WAPPR1、WRULE1、WAUTO1、WEXT1LD 和 WFULLSMOKE1;WAPPR1 四类模板必须为 A,WRULE1 必须为 `PASS_RULE_MATCH` 或可解释 `PASS_WITH_ADMIN_FALLBACK`,否则不进入 WEXT1-LIVE 或 WREAL1。 |
| 外出/加班 live | 待后续问答 | 只有三天验收、全域主路径、业务冒烟、规则门禁和 dry-run 均可解释通过后,才另建 WEXT1-LIVE 合同并再次问答是否一次性 live 创建外出+加班测试号样件。 |
| 测试号收口 | 已锁定 | 当前优先完成 WROAD2-CLOSEOUT、WROAD2-BIZ1、WAPPR1、WRULE1、WAUTO1、WEXT1LD 和 WFULLSMOKE1;WAPPR1 四类模板必须为 A,WRULE1 必须为 `PASS_RULE_MATCH` 或可解释 `PASS_WITH_ADMIN_FALLBACK`,否则不进入 WEXT1-FORMAL 或 WREAL1。 |
| 外出/加班正式模板测试 | 待后续问答 | 只有三天验收、全域主路径、业务冒烟、规则门禁和 dry-run 均可解释通过后,才另建 WEXT1-FORMAL 合同并再次问答是否让 `SMOKE002` 人工提交正式模板外出+加班测试单。 |
| 真实试用与镜像 | 后置 | WREAL1 首批固定为 1 名真实员工 + 1 名审批人/管理员观察;WREAL1 通过后优先规划 `wecom_attendance_approval_mirror_v1` 最小完整镜像,应急接管、恢复回写和 RuleOps 均后置。 |
## WTCLOSE1 小团队自动审批规则与测试号全域收口 dry-run
@@ -527,11 +527,11 @@ Go 结论边界:
| 执行合同 | 已建档 | 新增 `issues/2026-05-20_21-10-00-wecom-test-account-closeout-auto-dryrun-v1.csv`,ID 为 `WTCLOSE1-0..WTCLOSE1-8`。 |
| 审批规则 | 执行目标 A | 小团队 HR/考勤审批采用一层直属主管或指定审批角色自动带出审批人;申请人不能任意改人;主管链缺失、审批人不可见/停用/未绑定或命中自审时,由管理员兜底或阻断。请假、补卡、外出、加班四类模板若为 B/C/D,均为阻断 finding。 |
| WAPPR1 API 边界调研 | 已确认需人工门禁 | 企业微信 `gettemplatedetail` 只返回模板控件,`getapprovaldetail` 只返回已提交审批单的实际审批节点和审批人,均不能只读读取“申请人是否可手选审批人/审批规则配置”。`applyevent` 的 `use_template_approver=1` 可使用后台流程,但属于写入型验证且存在模板限制,不能作为通用只读门禁。因此 WAPPR1 必须由后台人工确认、真机提交页确认和 API 提交后实际审批链校验共同组成。 |
| 自动范围 | 只到汇总和 dry-run | 复跑 WAUTO1、WFULLSMOKE1 和外出/加班 dry-run;公网 OA 测试业务数据必须带 `TEST/SMOKE/WFULL` 标记并保留审计;不设置企微写入开关,不执行 live 创建。 |
| 自动范围 | 只到汇总和 dry-run | 复跑 WAUTO1、WFULLSMOKE1 和外出/加班 dry-run;公网 OA 测试业务数据必须带 `TEST-SMOKE-WFULL` 标记并保留审计;不设置企微写入开关,不执行 live 创建。 |
| WAUTO1 公网汇总 | `PAUSED_MANUAL_CONFIRMATION` | 公网报告 `/app/artifacts/qa-flow/wecom-controlled-trial-evidence-20260520-130010/summary.json`;`/ready`、审批补偿只读、审批归档离线、打卡摘要 offline、外出/加班 dry-run 和隐私扫描完成;finding 为 WARCH3 历史 summary 缺口、审批补偿和归档离线既有 `PASS_WITH_FINDINGS`。人工门禁仍待 WROAD2-BIZ1 三天业务动作和 WAPPR1 四类模板确认。 |
| WFULLSMOKE1 公网全域 smoke | `PASS_WITH_FINDINGS` | 公网报告 `/app/artifacts/qa-flow/three-day-full-goal-smoke-20260520-125909/summary.json`;主控脚本完成三天全域目标聚合。finding 为 live feature flag/OA 公网写流程需凭据或人工确认、运行镜像缺部分浏览器 spec、既有 WARCH3/WROAD2/WAUTO1 观察项;未写企业微信,未创建外出/加班样件,未启用真实员工。 |
| 外出/加班 live 前 dry-run | `PASS_FIXTURE_DRY_RUN_READY` | 公网报告 `/app/artifacts/qa-flow/wecom-approval-fixtures-20260520T125941Z/summary.json`;`secretMatrix=OK`、`actors=OK`、`liveWrite=DRY_RUN_READY`、`autoRerun=DRY_RUN_SKIPPED`。本轮没有设置 `WECOM_APPROVAL_FIXTURE_WRITE=1`,没有带 `--live --create-templates --submit-test-approvals`,没有创建企微模板或审批单。 |
| 后续问答 | 待自动复核和三天业务收口 | dry-run 已具备进入问答的自动证据,且 2026-05-21 WAPPR1 四类模板人工门禁均为 A。下一步需复跑只读证据汇总和 WRULE1 实际审批链校验,并结合三天业务动作可解释通过后,再问是否进入 WEXT1-LIVE;真实员工试用仍固定后置为 1 名真实员工 + 1 名审批人/管理员观察。 |
| 后续问答 | 待自动复核和三天业务收口 | dry-run 已具备进入问答的自动证据,且 2026-05-21 WAPPR1 四类模板人工门禁均为 A。下一步需复跑只读证据汇总和 WRULE1 实际审批链校验,并结合三天业务动作可解释通过后,再问是否进入 WEXT1-FORMAL;真实员工试用仍固定后置为 1 名真实员工 + 1 名审批人/管理员观察。 |
## WRULE1 企微 HR/考勤审批链校验器 POC
@@ -554,9 +554,9 @@ Go 结论边界:
| 执行合同 | 已建档 | 新增 `issues/2026-05-22_10-21-12-wecom-test-account-final-closeout-v1.csv`,ID 为 `WTCLOSE2-0..WTCLOSE2-8`。 |
| QA 编排脚本 | 已新增 | 新增 `scripts/qa/run-wecom-test-account-final-closeout.sh`,复跑公网 `/ready`、WAUTO1、WFULLSMOKE1、外出/加班 dry-run 和 WRULE1,并汇总 WROAD2/WARCH3 既有报告索引。 |
| 写入边界 | 已固定 | WFULLSMOKE1 在 WTCLOSE2 中以 `WFULLSMOKE_ALLOW_PUBLIC_WRITES=0` 运行,不新增 OA 测试业务数据;外出/加班仅 dry-run,不设置 `WECOM_APPROVAL_FIXTURE_WRITE=1`,不带 live 写入参数。 |
| 规则门禁 | 已固定 | WRULE1 复跑时使用 `--manual-gate=all:A`,引用用户 2026-05-21 真机确认;该证据仍只支持进入问答,不等于批准 WEXT1-LIVE 或 WREAL1。 |
| 规则门禁 | 已固定 | WRULE1 复跑时使用 `--manual-gate=all:A`,引用用户 2026-05-21 真机确认;该证据仍只支持进入问答,不等于批准 WEXT1-FORMAL 或 WREAL1。 |
| 结论分类 | 已固定 | `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 名审批人/管理员观察,且需另行问答。 |
| 后续问答 | 待 WTCLOSE2 汇总 | 若 WTCLOSE2 可解释通过,再问是否批准 WEXT1-FORMAL 正式模板外出+加班人工测试;真实员工试用仍固定后置为 1 名真实员工 + 1 名审批人/管理员观察,且需另行问答。 |
## WTCLOSE2F 远端可信 IP 执行口径修正
@@ -569,6 +569,17 @@ Go 结论边界:
| 本地边界 | 已固定 | 本地直接执行脚本默认拒绝跑企微链路;本地只用于 `bash -n`、合同、文档和静态门禁。此前本地缺 env/DB 造成的 WTCLOSE2 阻断不能作为企微业务阻断证据。 |
| 写入边界 | 不变 | 远端 WTCLOSE2 仍不写企业微信、不创建外出/加班模板或审批单、不启用真实员工;WFULLSMOKE1 仍以 `WFULLSMOKE_ALLOW_PUBLIC_WRITES=0` 运行。 |
## WREMOTE1 / WFULLSMOKE2 / WEXT1-FORMAL 后续路线执行口径
执行时间:2026-05-22。WTCLOSE2F 后,后续路线改为先远端可信 IP 收口,再用正式模板做外出/加班测试号人工提交,最后再问答进入 1 人真实试用。
| 项目 | 状态 | 证据与边界 |
| --- | --- | --- |
| 执行合同 | 已建档 | 新增 `issues/2026-05-22_12-34-41-wecom-remote-closeout-and-full-smoke-v1.csv`,ID 为 `WREMOTE1-0..WREMOTE1-8`。 |
| 全域 smoke | 已规划 | `scripts/qa/run-three-day-full-goal-smoke.sh` 增加 `--remote`,必须在部署服务器执行;允许 `TEST-SMOKE-WFULL` 标记 OA 测试数据,不写企业微信。 |
| 外出/加班 | 路线修正 | 不自动创建 OA-POC 外出/加班模板;由 `SMOKE002` 在正式模板真机提交,`SMOKE101` 先看详情再审批,系统只读补偿、归档和 WRULE1。 |
| 真实试用 | 待问答 | 首批仍为 1 名真实员工 + 1 名审批人/管理员观察;真实员工号只通过 `/tmp/hyb-oa-wreal1.env` 临时文件提供,不进仓库。 |
## 历史恢复
需要追溯 R70-R91 的详细流水时,使用: