10 KiB
10 KiB
| 1 | ID | Title | Description | Acceptance | Test_Method | Tools | Dev_Status | Review1_Status | Regression_Status | Files | Dependencies | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | WREMOTE1-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|node | DONE | DONE | DONE | issues/2026-05-22_12-34-41-wecom-remote-closeout-and-full-smoke-v1.csv | [] | 回滚/清理:恢复本轮合同、脚本和文档改动;不修改 Prisma schema;不写企业微信。 |
| 3 | WREMOTE1-1 | WFULLSMOKE2 增加远端执行入口 | 给 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|ssh | DONE | DONE | DONE | 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 | ["WREMOTE1-0"] | 回滚/清理:恢复脚本;远端全域 smoke 只允许 TEST-SMOKE-WFULL 标记 OA 测试数据;不写企微。 |
| 4 | WREMOTE1-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|python3 | DONE | DONE | DONE | docs/企微优先开发路线图.md|docs/管理员手册.md|docs/trialrun/人工试运行报告.md|docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/需求-统一审批中心规约.md|.agents/skills/hyb-oa-delivery/SKILL.md | ["WREMOTE1-1"] | 回滚/清理:恢复文档和 skill;不写仓库中的真实员工信息。 |
| 5 | WREMOTE1-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,不输出真实员工号。 | bash | DONE | DONE | DONE | /tmp/hyb-oa-wreal1.env | ["WREMOTE1-2"] | 回滚/清理:删除 /tmp/hyb-oa-wreal1.env;该文件不纳入 git。 |
| 6 | WREMOTE1-4 | 只读 reviewer 审查远端与正式模板边界 | 涉及审批规则、权限和真实试用准入,实施后由只读 reviewer 检查是否可能误用本地结果、误授权企微写入或跳过人工门禁。 | 1) reviewer 只读;2) 审查 WFULLSMOKE2 本地默认阻断;3) 审查 WEXT1-FORMAL 不创建模板、不自动提交审批;4) 审查 WREAL1 信息不入仓库;5) blocker 必须修复。 | 受影响流程:脚本/文档修正 -> 独立评审 -> 门禁回填;验证步骤:reviewer subagent 输出无 blocker 或 blocker 已处理。 | subagent|manual | DONE | DONE | DONE | N/A | ["WREMOTE1-3"] | 回滚/清理:reviewer 不修改文件;如发现风险,暂停部署和远端执行。 |
| 7 | WREMOTE1-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|git | DONE | DONE | DONE | 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|docs/*|.agents/skills/hyb-oa-delivery/SKILL.md | ["WREMOTE1-4"] | 回滚/清理:若门禁失败,保留 TODO 并暂停部署。 |
| 8 | WREMOTE1-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|curl | DONE | DONE | DONE | deploy/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 人工提交后复核;隐私扫描通过。回滚/清理:恢复脚本和解析修正;不写企微。 |
| 9 | WREMOTE1-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|playwright | DONE | DONE | DONE | scripts/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;未写企业微信。 |
| 10 | WREMOTE1-8 | 提交并报告后续人工门禁 | 回填 WREMOTE1 状态并中文提交;远端 WTCLOSE2/WFULLSMOKE2 结果决定是否进入正式模板外出/加班人工提交问答。 | 1) CSV 状态按真实验证回填;2) 中文提交包含 WREMOTE1;3) 最终说明是否已部署、远端报告路径和下一步人工操作;4) 若未远端执行,明确阻断原因。 | 受影响流程:提交 -> 人工 WEXT1-FORMAL 问答 -> WREAL1;验证步骤:git status --short;git log -1 --oneline。 | git | DONE | DONE | DONE | issues/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 状态和脚本解析/报告口径修正;不删除远端报告,正式模板人工测试另行授权。 |