文件
hyb-oa/issues/2026-05-10_13-20-38-deployment-version-sync-governance.csv
T

7 行
5.6 KiB
CSV

ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
D1,部署版本差异确认,"基于 R4 只读预检结果确认远端运行时文件与本轮 release candidate 不一致的范围,固定同步目标和禁止项;本 Issue 不执行部署。","1) 明确目标提交为 2bab4e5,业务运行时代码基线为 537e608;2) 列出远端不一致文件和影响面;3) 确认不采用远端手工补丁;4) 明确 R5 继续保持 TODO。","流程级验证:人工核对 docs/trialrun/deployment-preflight-2026-05-10.md 的版本差异表;命令:git diff --name-only 537e608..2bab4e5;命令:对比本地与远端关键运行时文件 sha256sum;确认差异结论可复现。","git|ssh|manual",DONE,DONE,DONE,"docs/trialrun/deployment-preflight-2026-05-10.md|issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv","[]","D1 只读复核完成:537e608..2bab4e5 仍仅含测试、文档和 CSV;远端仍有 workspaceSettings.js、NavLinks.tsx、workflow.js 与目标不一致,其余抽查运行时文件一致;同步目标固定为 2bab4e5,业务代码基线固定为 537e608;不采用远端手工补丁,R5 保持 TODO。"
D2,部署前备份与回滚确认,"在执行任何部署前确认远端 DB 备份、文件存储备份、配置备份和回滚路径;只检查存在性和可用口径,不打印 secret。","1) 最近 DB 与 storage 备份存在;2) 回滚路径明确为上一部署文件树或备份包 + 数据库备份 + 配置备份;3) 若备份缺失,先补备份并记录,不继续部署。","流程级验证:deploy 用户只读列出 deploy/trialrun/backups 最近 DB dump 和 storage tar;人工核对 deploy/trialrun/runbook.md 的备份/恢复章节;若需创建新备份,必须另行批准后执行。","ssh|manual",DONE,DONE,DONE,"deploy/trialrun/runbook.md|docs/trialrun/deployment-preflight-2026-05-10.md","[\"D1\"]","D2 解阻完成:远端 backup/env/compose/storage/postgres 目录存在,runbook 含备份、恢复和代码/DB 回滚步骤;已创建部署前新近备份 hyb-oa-db-20260510_134340.dump 2691566 bytes 与 hyb-oa-storage-20260510_134341.tar.gz 2610057 bytes;D3 仍需用户单独批准后才能执行。"
D3,受控同步 release candidate,"在 D1/D2 通过并获得明确部署批准后,使用既有部署流程同步 release candidate 到 /opt/hyb-oa-trialrun,构建服务并执行脚本内置 smoke。","1) 远端文件树同步到目标版本;2) deploy 脚本内置 env contract、/ready、external deps smoke、runtime smoke 通过;3) 未同步本地 secret 到仓库;4) 失败时按回滚路径恢复。","流程级验证:经批准后执行 bash deploy/trialrun/deploy.sh;部署脚本输出契约校验、Prisma status、/ready、external deps smoke、runtime smoke 和服务状态;失败则停止并记录错误,不进入 R5。","bash|ssh|node|manual",DONE,DONE,DONE,"deploy/trialrun/deploy.sh|deploy/trialrun/docker-compose.yml|deploy/trialrun/runbook.md","[\"D2\"]","D3 完成:bash deploy/trialrun/deploy.sh 成功;SYNC_ENV=0 未同步本地 .env;脚本完成 env contract、rsync、容器重建、init、Prisma migrate status、/ready、external deps smoke、runtime smoke、公网 bundle 文案扫描;LIVE_SMOKE_* 缺失,部署后 live smoke 按脚本跳过。"
D4,部署后 R4 只读复检,"部署同步后重新执行 R4 只读预检,确认远端版本、服务状态、迁移状态、Caddy、/ready、企业微信 config 和公网资源均可核对。","1) 关键运行时文件哈希与本地目标版本一致;2) Prisma migrate status up to date;3) /ready 200;4) Caddy active 且反代到 127.0.0.1:3000;5) 企业微信 config 不返回 secret;6) R4 可回填 DONE/DONE/DONE。","流程级验证:执行 docs/trialrun/deployment-preflight-2026-05-10.md 中的本地和远端只读检查;命令:node scripts/qa/check-live-smoke-env.mjs;命令:node scripts/qa/check-public-bundle-copy.mjs https://oa.hyinda.com;命令:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv。","ssh|node|python3|manual",DONE,DONE,DONE,"docs/trialrun/deployment-preflight-2026-05-10.md|docs/trialrun/release-readiness-checklist.md|issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv","[\"D3\"]","D4 完成:远端关键运行时文件哈希与本地一致;server/db 容器运行,DB healthy;本机 /ready 200;Prisma migrate status up to date;Caddy active/enabled 且反代到 127.0.0.1:3000;企业微信 config 200 且不含 secret;公网 bundle 扫描 0 findings。"
D5,R5 live smoke 解锁判断,"R4 复检通过后,判断是否具备 R5 公网账号、企业微信真机和真实 OCR 样票条件;条件不足时继续 SKIP,不宣称通过。","1) node scripts/qa/check-live-smoke-env.mjs 能清晰显示 liveSmokeReady/liveOcrReady;2) 若缺账号或样票,R5 继续 TODO/SKIP;3) 若条件齐备,形成 R5 执行清单但不在本 Issue 中跑真实业务。","流程级验证:node scripts/qa/check-live-smoke-env.mjs;人工核对 LIVE_SMOKE_*、企业微信测试账号和 OCR 样票路径仅存在本机安全位置,不提交仓库;确认 R5 是否可开始。","node|manual",DONE,DONE,DONE,"scripts/qa/check-live-smoke-env.mjs|docs/trialrun/live-smoke-readiness.md|issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv","[\"D4\"]","D5 完成 readiness 判断:publicReady=true,wecom=ready,liveSmokeReady=false,liveOcrReady=false;缺 LIVE_SMOKE_* 与 OCR live 文件或目录,主 R5 保持 TODO/SKIP,不宣称真机或真实 OCR 通过。"