文件
hyb-oa/issues/2026-05-22_12-34-41-wecom-remote-closeout-and-full-smoke-v1.csv
T

10 KiB

1IDTitleDescriptionAcceptanceTest_MethodToolsDev_StatusReview1_StatusRegression_StatusFilesDependenciesNotes
2WREMOTE1-0建立远端可信 IP 收口合同建立 WREMOTE1/WFULLSMOKE2/WEXT1-FORMAL/WREAL1/WMIRROR1 后续路线合同,承接 WTCLOSE2F 后只能从部署服务器访问企微 API 的边界;企微审批、打卡、消息和运行态检查固定 WECOM_AGENT_SECRET,不尝试其他 Secret、无 fallback、不允许运行时猜 Secret。1) 新合同使用 WREMOTE1-0..WREMOTE1-8;2) 明确企微 API 证据只来自部署服务器可信 IP;3) 明确本地只做合同、语法、文档、静态门禁;4) 明确 WEXT1-FORMAL 改为正式模板人工提交,不再自动创建 OA-POC 外出/加班模板。受影响流程:路线合同 -> 远端 WTCLOSE2 -> 全域 smoke -> 正式模板外出/加班 -> WREAL1;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-22_12-34-41-wecom-remote-closeout-and-full-smoke-v1.csv;node scripts/qa/check-process-contract.mjs --issue issues/2026-05-22_12-34-41-wecom-remote-closeout-and-full-smoke-v1.csv --profile wecom --json。python3|nodeDONEDONEDONEissues/2026-05-22_12-34-41-wecom-remote-closeout-and-full-smoke-v1.csv[]回滚/清理:恢复本轮合同、脚本和文档改动;不修改 Prisma schema;不写企业微信。
3WREMOTE1-1WFULLSMOKE2 增加远端执行入口给 scripts/qa/run-three-day-full-goal-smoke.sh、scripts/qa/run-wecom-test-account-final-closeout.sh 和 WAUTO1 汇总脚本增加 --remote 和可信 IP 保护,避免本地误跑企微链路;远端容器内设置 *_EXECUTION_MODE=remote 和 *_REMOTE_CONTEXT=deployment-server。1) 本地直接执行默认拒绝并提示 --remote;2) --remote 经 SSH 到部署服务器 server 容器执行;3) 可通过 WFULLSMOKE_ALLOW_PUBLIC_WRITES 控制是否允许 OA 测试业务数据写入;4) summary 记录 executionMode 和 trustedIpBoundary;5) 不新增企微写入开关。受影响流程:WFULLSMOKE2/WAUTO1/WTCLOSE2 远端执行 -> 企微链路可信 IP -> OA 主办域公网 smoke;验证步骤:bash -n scripts/qa/run-three-day-full-goal-smoke.sh scripts/qa/run-wecom-test-account-final-closeout.sh scripts/qa/collect-wecom-controlled-trial-evidence.sh;bash scripts/qa/run-three-day-full-goal-smoke.sh --help;本地直接执行三个脚本均应返回非 0 且提示 --remote。bash|sshDONEDONEDONEscripts/qa/run-three-day-full-goal-smoke.sh|scripts/qa/run-wecom-test-account-final-closeout.sh|scripts/qa/collect-wecom-controlled-trial-evidence.sh["WREMOTE1-0"]回滚/清理:恢复脚本;远端全域 smoke 只允许 TEST-SMOKE-WFULL 标记 OA 测试数据;不写企微。
4WREMOTE1-2更新事实源为正式模板外出加班测试更新路线图、管理员手册、统一审批规约、试运行报告、文档索引、事实源矩阵和项目 skill,固化外出/加班 live 使用正式模板人工提交 + 系统只读校验。1) 文档不再把下一步描述为自动创建外出/加班 OA-POC 模板;2) 明确 SMOKE002 真机提交正式模板、SMOKE101 先看详情再审批;3) 系统只读补偿拉取、归档和 WRULE1;4) WREAL1 仍需另行问答和临时 env。受影响流程:后续执行者读取事实源 -> 正确执行正式模板测试;验证步骤:rg -n "WREMOTE1|WFULLSMOKE2|WEXT1-FORMAL|正式模板|/tmp/hyb-oa-wreal1.env" docs .agents/skills/hyb-oa-delivery/SKILL.md;node scripts/qa/audit-docs.mjs --check-registry;quick_validate.py .agents/skills/hyb-oa-delivery。rg|node|python3DONEDONEDONEdocs/企微优先开发路线图.md|docs/管理员手册.md|docs/trialrun/人工试运行报告.md|docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/需求-统一审批中心规约.md|.agents/skills/hyb-oa-delivery/SKILL.md["WREMOTE1-1"]回滚/清理:恢复文档和 skill;不写仓库中的真实员工信息。
5WREMOTE1-3准备 WREAL1 临时 env 模板在 /tmp/hyb-oa-wreal1.env 准备真实试用临时配置占位,供用户后续填写真实员工和审批人/观察人,不进仓库。1) 文件只在 /tmp;2) 只包含注释和空值占位;3) 不输出真实员工号;4) 后续只校验非空和脱敏。受影响流程:WREAL1 启动前人工配置 -> 系统脱敏读取;验证步骤:test -f /tmp/hyb-oa-wreal1.env;awk -F= '/^WREAL1_/ {print $1"="($2==""?"EMPTY":"SET")}' /tmp/hyb-oa-wreal1.env 确认只输出 key 和 SET/EMPTY,不输出真实员工号。bashDONEDONEDONE/tmp/hyb-oa-wreal1.env["WREMOTE1-2"]回滚/清理:删除 /tmp/hyb-oa-wreal1.env;该文件不纳入 git。
6WREMOTE1-4只读 reviewer 审查远端与正式模板边界涉及审批规则、权限和真实试用准入,实施后由只读 reviewer 检查是否可能误用本地结果、误授权企微写入或跳过人工门禁。1) reviewer 只读;2) 审查 WFULLSMOKE2 本地默认阻断;3) 审查 WEXT1-FORMAL 不创建模板、不自动提交审批;4) 审查 WREAL1 信息不入仓库;5) blocker 必须修复。受影响流程:脚本/文档修正 -> 独立评审 -> 门禁回填;验证步骤:reviewer subagent 输出无 blocker 或 blocker 已处理。subagent|manualDONEDONEDONEN/A["WREMOTE1-3"]回滚/清理:reviewer 不修改文件;如发现风险,暂停部署和远端执行。
7WREMOTE1-5本地静态门禁复跑复跑合同、process gate、脚本语法、文档审计、skill 校验、diff 检查和最小回归。1) validate_issues_csv 通过;2) baseline 和 issue-specific process gate 通过;3) bash -n 通过;4) audit-docs、quick_validate、git diff --check 通过;5) bash scripts/check-minimal.sh 通过。受影响流程:本地静态门禁 -> 提交 -> 部署;验证步骤:validate_issues_csv.py <csv>;node scripts/qa/check-process-contract.mjs --baseline --json;node scripts/qa/check-process-contract.mjs --issue <csv> --profile wecom --json;bash -n scripts/qa/run-three-day-full-goal-smoke.sh scripts/qa/run-wecom-test-account-final-closeout.sh scripts/qa/collect-wecom-controlled-trial-evidence.sh;bash scripts/check-minimal.sh。python3|node|bash|gitDONEDONEDONEscripts/qa/run-three-day-full-goal-smoke.sh|scripts/qa/run-wecom-test-account-final-closeout.sh|scripts/qa/collect-wecom-controlled-trial-evidence.sh|docs/*|.agents/skills/hyb-oa-delivery/SKILL.md["WREMOTE1-4"]回滚/清理:若门禁失败,保留 TODO 并暂停部署。
8WREMOTE1-6部署并远端执行 WTCLOSE2本地门禁通过并提交后,使用 SYNC_ENV=0 部署/同步,然后从部署服务器可信 IP 执行 WTCLOSE2 远端收口。1) SYNC_ENV=0 部署成功;2) /ready 正常;3) bash scripts/qa/run-wecom-test-account-final-closeout.sh --remote 生成远端报告;4) 报告不泄露完整 sp_no/template_id/userid/token/Secret/表单值/原始 payload。受影响流程:部署 -> 远端 WTCLOSE2 -> WEXT1-FORMAL 问答;验证步骤:SYNC_ENV=0 bash deploy/trialrun/deploy.sh;curl -fsS https://oa.hyinda.com/ready;bash scripts/qa/run-wecom-test-account-final-closeout.sh --remote。bash|ssh|curlDONEDONEDONEdeploy/trialrun/*|scripts/qa/run-wecom-test-account-final-closeout.sh|server/src/services/integrations/wecomApprovalArchive.js|server/tests/unit/services/wecomApprovalArchive.test.js["WREMOTE1-5"]远端部署通过,/ready OK;WTCLOSE2 报告 /app/artifacts/qa-flow/wecom-test-account-final-closeout-20260522-055840/summary.json,结论 SKIP/BLOCKED_BY_EXTERNAL_CONFIG:新补偿归档中请假/补卡各 1 条已可 WRULE1 PASS_RULE_MATCH;历史 callback-only 旧行缺 applicant/approver,外出/加班尚无正式模板归档,需 WEXT1-FORMAL 人工提交后复核;隐私扫描通过。回滚/清理:恢复脚本和解析修正;不写企微。
9WREMOTE1-7远端执行 WFULLSMOKE2 全域 smoke远端运行 WFULLSMOKE2,允许创建 TEST-SMOKE-WFULL 标记的 OA 主办域测试数据,验证全域主路径。1) 远端执行全域 smoke;2) 只创建 TEST-SMOKE-WFULL 标记 OA 测试业务数据;3) 不写企业微信、不真实付款、不接支付、不写 ERP、不导入银行流水;4) 输出 PASS_FULL_GOAL_SMOKE_READY、PASS_WITH_FINDINGS、PAUSED_MANUAL_CONFIRMATION 或 SKIP/BLOCKED_BY_EXTERNAL_CONFIG。受影响流程:OA 报销 -> 采购 -> 合同/项目 -> 付款批次 -> 移动/企微入口;验证步骤:WFULLSMOKE_ALLOW_PUBLIC_WRITES=1 bash scripts/qa/run-three-day-full-goal-smoke.sh --remote;核对 summary.json 和测试标记。bash|ssh|playwrightDONEDONEDONEscripts/qa/run-three-day-full-goal-smoke.sh["WREMOTE1-6"]WFULLSMOKE2 远端报告 /app/artifacts/qa-flow/three-day-full-goal-smoke-20260522-055953/summary.json,结论 PASS_WITH_FINDINGS;/ready、WARCH3、WAUTO1、隐私扫描通过;OA public write flows 因缺 LIVE_SMOKE_* 业务凭据未创建测试数据;移动/企微入口 spec 未打入运行镜像,记录 finding;未写企业微信。
10WREMOTE1-8提交并报告后续人工门禁回填 WREMOTE1 状态并中文提交;远端 WTCLOSE2/WFULLSMOKE2 结果决定是否进入正式模板外出/加班人工提交问答。1) CSV 状态按真实验证回填;2) 中文提交包含 WREMOTE1;3) 最终说明是否已部署、远端报告路径和下一步人工操作;4) 若未远端执行,明确阻断原因。受影响流程:提交 -> 人工 WEXT1-FORMAL 问答 -> WREAL1;验证步骤:git status --short;git log -1 --oneline。gitDONEDONEDONEissues/2026-05-22_12-34-41-wecom-remote-closeout-and-full-smoke-v1.csv|scripts/qa/run-three-day-full-goal-smoke.sh|scripts/qa/run-wecom-test-account-final-closeout.sh|server/src/services/integrations/wecomApprovalArchive.js|server/tests/unit/services/wecomApprovalArchive.test.js["WREMOTE1-7"]本轮回填远端报告路径和真实结论;WEXT1-FORMAL 不自动开始,需用户按 A/B/C 选择是否由 SMOKE002 人工提交正式模板外出+加班测试单。回滚/清理:恢复本轮 CSV 状态和脚本解析/报告口径修正;不删除远端报告,正式模板人工测试另行授权。