5.4 KiB
5.4 KiB
| 1 | ID | Title | Description | Acceptance | Test_Method | Tools | Dev_Status | Review1_Status | Regression_Status | Files | Dependencies | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | K1 | 执行前只读确认 | 确认 R4 已完成、R5 未完成、远端 SMOKE001/SMOKE002 active、部署前备份可用,并记录当前 smoke 数据审计计数;本步骤不做写操作。 | 1) 主合同 R4=DONE/DONE/DONE 且 R5 未完成;2) 远端 smoke 账号存在且 active;3) 部署前备份文件名可追溯;4) 记录 smoke 数据审计计数。 | 流程级验证:读取 issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv;ssh [email protected] 进入 /opt/hyb-oa-trialrun 后执行 docker-compose server node src/scripts/audit-smoke-data.js --format=text;只记录账号状态和计数摘要,不打印 secret。 | ssh|node|manual | DONE | DONE | DONE | issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv|external | [] | K1 完成:主合同 R4=DONE/DONE/DONE、R5=DOING/TODO/TODO;远端 SMOKE001/SMOKE002 均 active;部署前备份 hyb-oa-db-20260510_134340.dump 与 hyb-oa-storage-20260510_134341.tar.gz 存在;执行前计数 authSessions=555,reimbursements=1,invoices=5,ocrResultsLinkedFromInvoices=1,auditLogs=258。 |
| 3 | K2 | 重置 smoke 账号密码 | 为 SMOKE001/SMOKE002 在本机生成强密码,写入仓库外 ~/.hyb-oa/live-smoke.env 且权限 600;使用远端容器内 hashPassword 更新两个账号 password_hash 并清空登录失败状态。 | 1) ~/.hyb-oa/live-smoke.env 存在且权限 600;2) 仅更新 SMOKE001/SMOKE002;3) 清空 login_failed_count/login_failed_first_at;4) must_change_password=false;5) 不打印、不提交新密码;6) 当前 schema 无 login_locked_until 时记录为 N/A。 | 流程级验证:stat -c '%a %n' ~/.hyb-oa/live-smoke.env;远端容器内执行受控 reset 脚本,输出只允许包含已更新账号标识、active、must_change_password 和失败计数字段状态,不输出密码或 hash。 | ssh|node | DONE | DONE | DONE | external | ["K1"] | K2 完成:生成 ~/.hyb-oa/live-smoke.env,权限 600,OCR 样票存在;远端仅更新 SMOKE001/SMOKE002,两个账号 status=active、mustChange=false、failedCount=0、firstFailedAt=null;未打印密码或 hash;login_locked_until 在当前 schema 中不存在,记录为 N/A。 |
| 4 | K3 | R5 自动化重跑 | source 本机安全凭据后执行 live smoke strict 准入、公网 readiness、资源扫描、网页登录 smoke 和真实 OCR 样票上传复核。 | 1) check-live-smoke-env --strict 通过;2) run-live-smoke-readiness.sh 完成;3) live smoke 不再 SKIP;4) 真实 OCR 不再 SKIP 并进入可解释终态;5) 公网 bundle 扫描 findings=0。 | 流程级验证:set -a && source ~/.hyb-oa/live-smoke.env && set +a;node scripts/qa/check-live-smoke-env.mjs --strict;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 | DONE | DONE | DONE | scripts/qa/*|artifacts/qa-flow | ["K2"] | K3 完成:首次用 employee_no 登录标识仍 401;确认登录接口只接受 email/phone 后,将本机凭据 identifier 改为 smoke 邮箱并重置失败计数;check-live-smoke-env --strict 通过;run-live-smoke-readiness.sh 通过,公网 bundle findings=0,live smoke 3 passed,真实 OCR 样票不再 SKIP,终态为重复发票/ocr_failed 且页面提示不能重复添加;证据目录 artifacts/qa-flow/live-smoke-readiness-20260510-172421;pending OCR 辅助扫描因缺 DATABASE_URL 继续 SKIP。 |
| 5 | K4 | 副作用只读审计 | R5 自动化后只读审计 smoke 账号产生的会话、票据、OCR 和审计日志数量;不清理测试数据。 | 1) 远端审计脚本只读运行成功;2) 记录自动化前后计数变化;3) 不执行删除、归档、UPDATE 或清理。 | 流程级验证:ssh [email protected] 进入 /opt/hyb-oa-trialrun 后执行 docker-compose server node src/scripts/audit-smoke-data.js --format=text;对比 K1 计数并记录摘要。 | ssh|node|manual | DONE | DONE | DONE | server/src/scripts/audit-smoke-data.js|external | ["K3"] | K4 完成:远端只读审计成功;K1->K4 计数变化 authSessions 555->572、auditLogs 258->263;reimbursements=1、invoices=5、ocrResultsLinkedFromInvoices=1、invoiceVerifications=0、workflowInstances=0 保持不变;未清理数据。 |
| 6 | K5 | R5/R6 状态门禁 | 根据 K1-K4 和企业微信真机人工验收结果回填主 R5;自动化通过但真机未验收时,主 R5 仍保持 DOING/TODO/TODO,R6 保持 TODO。 | 1) 自动化、真实 OCR、企业微信真机均通过时主 R5 才可置 DONE/DONE/DONE;2) 真机未验收时主 R5 不得完成;3) 更新发布清单和本合同 Notes;4) 校验 CSV 和 diff。 | 流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-10_17-10-42-r5-smoke-password-reset-and-live-smoke.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_17-10-42-r5-smoke-password-reset-and-live-smoke.csv|issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv|docs/trialrun/release-readiness-checklist.md | ["K3","K4"] | K5 完成:已回填主 R5 Notes 和 release readiness 清单;因企业微信真机人工验收尚未执行,主 R5 保持 DOING/TODO/TODO,R6 保持 TODO;已校验本合同、主合同和 git diff --check。 |