"ID","Title","Description","Acceptance","Test_Method","Tools","Dev_Status","Review1_Status","Regression_Status","Files","Dependencies","Notes" "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;不写企业微信。" "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 测试数据;不写企微。" "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;不写仓库中的真实员工信息。" "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。" "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 不修改文件;如发现风险,暂停部署和远端执行。" "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 ;node scripts/qa/check-process-contract.mjs --baseline --json;node scripts/qa/check-process-contract.mjs --issue --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 并暂停部署。" "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 人工提交后复核;隐私扫描通过。回滚/清理:恢复脚本和解析修正;不写企微。" "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;未写企业微信。" "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 状态和脚本解析/报告口径修正;不删除远端报告,正式模板人工测试另行授权。"