ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes F1,R5 解阻材料边界确认,"确认本轮只处理 R5 live smoke 解阻材料和证据,不部署、不迁移、不重启、不修改远端 .env,不提交真实账号、密码、OCR 样票或真实路径。","1) 当前基线为 9115c5c;2) R4 已 DONE;3) R5 仍为 DOING;4) 禁止项已写入 Notes。","流程级验证:git status --short 确认工作区初始干净;人工核对 issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv 中 R4 DONE 且 R5 DOING;确认本轮不触碰 deploy、server/src、client/src。","git|manual",DONE,DONE,DONE,"issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv|issues/2026-05-10_16-28-34-r5-live-smoke-unblock.csv","[]","F1 完成:执行前工作区干净,当前基线为 9115c5c;本轮未部署、未迁移、未重启、未修改远端 .env,后续只记录准入阻断。" F2,R5 准入环境变量与 OCR 样票校验,"校验 LIVE_SMOKE_*、企业微信状态预期和 OCR live 样票是否已在本机安全位置准备好。","1) node scripts/qa/check-live-smoke-env.mjs 输出 publicReady=true 且 wecom=ready;2) strict 检查若通过则可进入 F3;3) strict 若失败则记录缺项并停止 F3/F4。","流程级验证:node scripts/qa/check-live-smoke-env.mjs;node scripts/qa/check-live-smoke-env.mjs --strict;不得打印账号、密码、secret 或真实样票内容。","node",DONE,DONE,DONE,"scripts/qa/check-live-smoke-env.mjs|docs/trialrun/live-smoke-readiness.md","[""F1""]","F2 完成并阻断:publicReady=true,wecom=ready;strict 失败,liveSmokeReady=false,liveOcrReady=false;缺 LIVE_SMOKE_ADMIN_IDENTIFIER/PASSWORD、LIVE_SMOKE_EMPLOYEE_IDENTIFIER/PASSWORD、OCR live 账号或员工账号、PLAYWRIGHT_OCR_LIVE_FILE 或 PLAYWRIGHT_OCR_LIVE_DIR。停止 F3/F4。" F3,公网自动化 live smoke,"在 F2 strict 通过后执行公网自动化 readiness、资源扫描、网页 live smoke 和真实 OCR 样票复核。","1) LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readiness.sh 不再出现 live smoke 或真实 OCR SKIP;2) 公网资源扫描 findings=0;3) 真实 OCR 进入可解释终态。","流程级验证:LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readiness.sh;检查 artifacts/qa-flow/live-smoke-readiness-* 下 live-smoke.txt、live-ocr.txt、public-bundle-copy.txt。","bash|node|playwright",TODO,TODO,TODO,"scripts/qa/run-live-smoke-readiness.sh|artifacts/qa-flow","[""F2""]","若 F2 strict 失败,本 Issue 保持 TODO 并在 F5 记录阻断,不执行真实业务 smoke。" F4,企业微信真机与移动浏览器人工验收,"使用真实手机企业微信和移动浏览器按现有清单验证工作台入口、绑定或登录回退、移动审批、报销上传、通知和布局。","1) 企业微信工作台进入海音达工作台;2) 移动页面无 PC 壳、横向溢出或内部码值主展示;3) 审批 deeplink 回 OA;4) 失败项有截图或录屏位置。","流程级验证:按 docs/trialrun/real-device-public-checklist.md 执行;记录测试日期、设备、企业微信版本、账号角色、失败步骤和证据位置。","manual|playwright",TODO,TODO,TODO,"docs/trialrun/real-device-public-checklist.md|docs/trialrun/release-readiness-checklist.md","[""F3""]","真机验收不能被浏览器 UA 自动化替代;证据摘要不得包含隐私或密钥。" F5,R5 状态回填与 R6 Gate,"根据 F2-F4 结果回填主 R5 和本执行合同;只有全部通过才允许规划 R6。","1) 若 F2-F4 全部通过,主 R5 置为 DONE/DONE/DONE;2) 若材料缺失或验证失败,主 R5 保持 DOING/TODO/TODO 并记录阻断;3) R6 保持 TODO。","流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-10_16-28-34-r5-live-smoke-unblock.csv;python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv;git diff --check。","python3|git|manual",DONE,DONE,DONE,"issues/2026-05-10_16-28-34-r5-live-smoke-unblock.csv|issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv|docs/trialrun/release-readiness-checklist.md","[""F2""]","F5 完成:因 F2 strict 仍失败,主 R5 保持 DOING/TODO/TODO,F3/F4 保持 TODO,R6 保持 TODO;提交类型为 R5 记录 live smoke 解阻仍缺材料。"