7.0 KiB
7.0 KiB
| 1 | ID | Title | Description | Acceptance | Test_Method | Tools | Dev_Status | Review1_Status | Regression_Status | Files | Dependencies | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | WRA1-0 | 合同建档与边界冻结 | 建立 WRA1 企微运行验收门禁修正合同,承接人工选择:修正门禁,运行验收优先;本轮不补企微资料、不配置审批模板/sp_no/真实回调、不发送真实消息、不进入深度镜像。 | 1) CSV 校验通过;2) 范围限定为 QA-only 打卡只读探测门禁修正、事实源回写和公网复跑;3) WECOM_CHECKIN_SYNC_ENABLED 继续作为正式考勤同步开关;4) 不改公开业务 API、schema、前端页面或远端 env。 | 受影响流程:企微运行验收 -> QA-only 只读打卡能力探测 -> 公网复跑 -> 后续人工问答;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-19_01-55-43-wecom-runtime-acceptance-v1.csv。 | python3|manual | DONE | DONE | DONE | issues/2026-05-19_01-55-43-wecom-runtime-acceptance-v1.csv | [] | 已校验 CSV;范围保持 QA-only 只读门禁修正和公网复跑;未修改数据库、未同步 env、未写 OA/企微资料。回滚路径:撤回 WRA1 代码和文档变更即可。 |
| 3 | WRA1-1 | 修正打卡只读探测边界 | 为企微打卡读取服务增加显式 QA-only 参数,默认业务调用仍要求 WECOM_CHECKIN_SYNC_ENABLED=true,runner 只读探测可显式绕过同步开关。 | 1) 默认 fetchWecomCheckinData 调用仍在同步开关关闭时返回 wecom_checkin_sync_disabled;2) runner 调用传入 requireSyncEnabled=false;3) 缺 Secret、权限、可信 IP、可见范围或企微 API 错误仍按 BLOCKED 处理。 | 受影响流程:正式考勤同步 -> QA-only 运行验收探测;验证步骤:cd server && node --check src/services/integrations/wecomCheckin.js;cd server && npx vitest run tests/unit/routes/attendance.test.js --reporter=verbose。 | node|vitest | DONE | DONE | DONE | server/src/services/integrations/wecomCheckin.js|server/src/scripts/check-wecom-runtime-ready.js | ["WRA1-0"] | 已实现 requireSyncEnabled 默认 true;WRV1/WRA1 runner 显式传 false;正式同步路由默认行为不变。 |
| 4 | WRA1-2 | 补充运行验收单测 | 补充 focused 单测覆盖 runner 绕过同步开关、业务同步仍受开关保护、企微 API 错误仍阻断和报告脱敏。 | 1) check-wecom-runtime-ready.test.js 覆盖 sync disabled readable 语义;2) attendance.test.js 继续证明业务同步默认被 WECOM_CHECKIN_SYNC_ENABLED 保护;3) 报告不泄露手机号、邮箱、token、secret、完整 userid 或原始 payload。 | 受影响流程:runner 结论分类 -> 业务同步保护 -> 隐私边界;验证步骤:cd server && npx vitest run tests/unit/scripts/check-wecom-runtime-ready.test.js tests/unit/routes/attendance.test.js --reporter=verbose。 | vitest | DONE | DONE | DONE | server/tests/unit/scripts/check-wecom-runtime-ready.test.js|server/tests/unit/routes/attendance.test.js | ["WRA1-1"] | focused vitest 2 files / 16 tests passed;仅 mock fetch/DB;覆盖 QA-only 绕过、企微 API 错误阻断和脱敏。 |
| 5 | WRA1-3 | 事实源回写 | 更新路线图、企微基础设施规约、管理员手册、试运行报告、文档索引、事实源矩阵和 skill,固化 WECOM_CHECKIN_SYNC_ENABLED 是正式同步开关而非 QA-only 只读准入。 | 1) 文档不再把同步开关误写为 QA-only 只读阻断;2) 明确审批模板、sp_no、真实回调仍为 NEEDS_CONFIG;3) 文档审计和 skill 校验通过。 | 受影响流程:事实源读取 -> 后续派工和阶段判断;验证步骤:node scripts/qa/audit-docs.mjs --check-registry;python3 /home/shunli/.codex/skills/.system/skill-creator/scripts/quick_validate.py .agents/skills/hyb-oa-delivery;rg -n 'WRA1|WECOM_CHECKIN_SYNC_ENABLED|QA-only|PASS_WITH_CONFIG_GAPS|BLOCKED_BY_EXTERNAL_CONFIG' docs .agents/skills/hyb-oa-delivery/SKILL.md。 | node|python3|rg | DONE | DONE | DONE | docs|.agents/skills/hyb-oa-delivery/SKILL.md | ["WRA1-2"] | 文档审计 errors=0 warnings=1(既有未登记文档 warning);skill quick_validate 通过;已记录 WRA1 报告路径和 PASS_WITH_CONFIG_GAPS。 |
| 6 | WRA1-4 | 本地静态和回归门禁 | 执行本地语法、Prisma、focused 单测、文档和 diff 门禁,确认变更不破坏正式考勤同步保护和企微运行 runner。 | 1) node --check 通过;2) prisma validate 通过;3) focused vitest 通过;4) docs/skill 门禁通过;5) git diff --check 通过。 | 受影响流程:本地实现 -> 可部署 QA-only 验证;验证步骤:cd server && node --check src/scripts/check-wecom-runtime-ready.js;cd server && node --check src/services/integrations/wecomCheckin.js;cd server && node --check src/routes/attendance.js;cd server && npm run prisma:validate;cd server && npx vitest run tests/unit/scripts/check-wecom-runtime-ready.test.js tests/unit/routes/attendance.test.js --reporter=verbose;git diff --check。 | node|npm|git | DONE | DONE | DONE | server|docs|.agents/skills/hyb-oa-delivery/SKILL.md | ["WRA1-3"] | node --check、prisma validate、focused vitest、docs/skill 门禁和 git diff --check 均通过。 |
| 7 | WRA1-5 | 公网受控部署与复跑 | 以 SYNC_ENV=0 受控部署 WRA1,远端执行 npm run check:wecom-runtime-ready -- --live --format=json;默认不发送真实消息。 | 1) 部署不覆盖远端 env;2) /ready、runtime smoke、public bundle scan 通过;3) 远端报告若打卡 API 可读则应为 PASS_WITH_CONFIG_GAPS;4) 若仍为 SKIP,阻断原因必须来自真实企微侧配置/权限/可信 IP/可见范围或 Secret。 | 受影响流程:公网运行验收 -> 后续人工问答;验证步骤:SYNC_ENV=0 bash deploy/trialrun/deploy.sh;ssh 远端容器执行 npm run check:wecom-runtime-ready -- --live --format=json;curl -fsS https://oa.hyinda.com/ready。 | bash|ssh|curl | DONE | DONE | DONE | external|artifacts/qa-flow/wecom-runtime-ready-* | ["WRA1-4"] | 已用 SYNC_ENV=0 受控部署,未覆盖远端 env;/ready、runtime smoke、public bundle scan 通过;远端报告 /app/artifacts/qa-flow/wecom-runtime-ready-20260518T180506Z/summary.json 为 PASS_WITH_CONFIG_GAPS;checkinRead=readable_sync_disabled;未发送真实消息,未写 OA/企微资料。 |
| 8 | WRA1-6 | 状态回填与中文提交 | 按实际本地和公网结果回填 Issue,执行隐私检查并中文提交。 | 1) WRA1-0..5 按实际结果回填;2) git diff 不含 secret、token、手机号、邮箱、完整 userid 或原始 payload;3) 中文 commit 引用 WRA1;4) 最终答复包含公网报告结论和下一步人工问答项。 | 受影响流程:Issue CSV -> 验证证据 -> 提交审计 -> 下一阶段入口;验证步骤:git status --short;git log -1 --oneline。 | git|manual | DONE | DONE | DONE | issues/2026-05-19_01-55-43-wecom-runtime-acceptance-v1.csv|server|docs|.agents/skills/hyb-oa-delivery/SKILL.md | ["WRA1-5"] | diff 人工隐私检查未发现 secret、token、手机号、邮箱、完整 userid 或原始 payload;中文提交引用 WRA1;下一步按 PASS_WITH_CONFIG_GAPS 问是否做低风险真实企微应用消息验证。 |