E1-E3 创建部署前备份并解阻 D2

这个提交包含在:
2026-05-10 13:46:33 +08:00
父节点 755f083fab
当前提交 651ebe118f
共修改 3 个文件,包含 6 行新增和 6 行删除
@@ -121,8 +121,8 @@ R4 未通过,保持 `DOING/TODO/TODO`,原因是远端运行时代码与本
| D1 远端哈希复核 | 与 R4 一致:`workspaceSettings.js`、`NavLinks.tsx`、`workflow.js` 未对齐,其余抽查运行时文件一致 |
| D1 结论 | 同步目标仍固定为 `2bab4e5`;业务运行时代码基线仍为 `537e608`;不采用远端手工补丁 |
| D2 备份目录 | 远端 `deploy/trialrun/backups` 存在 |
| D2 最近备份 | 最近 DB 与 storage 备份仍为 2026-05-06,不满足部署前新近备份门槛 |
| D2 最近备份 | 2026-05-10 13:43 已创建 `hyb-oa-db-20260510_134340.dump`(2691566 bytes)和 `hyb-oa-storage-20260510_134341.tar.gz`(2610057 bytes) |
| D2 回滚路径 | runbook 已包含 DB/storage 备份、恢复、仅代码回滚和 DB 回滚步骤 |
| D2 结论 | `BLOCKED`:需先执行 `issues/2026-05-10_13-34-26-pre-deploy-backup.csv`,获得明确批准后创建部署前备份 |
| D2 结论 | `DONE`:部署前新近备份已创建;D3 受控同步 release candidate 仍需用户单独批准 |
D3 受控同步 release candidate 仍未执行。R5 live smoke 仍保持 `TODO/SKIP`。
@@ -1,6 +1,6 @@
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",DOING,TODO,TODO,"deploy/trialrun/runbook.md|docs/trialrun/deployment-preflight-2026-05-10.md","[\"D1\"]","D2 只读确认发现:远端 backup/env/compose/storage/postgres 目录存在,runbook 含备份、恢复和代码/DB 回滚步骤;但最近 DB 与 storage 备份为 2026-05-06,不满足部署前新近备份门槛,D2 保持未完成;需先执行 issues/2026-05-10_13-34-26-pre-deploy-backup.csv 并获得写操作批准。"
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",TODO,TODO,TODO,"deploy/trialrun/deploy.sh|deploy/trialrun/docker-compose.yml|deploy/trialrun/runbook.md","[\"D2\"]","高风险写操作;未获部署批准前不得执行。默认不修改远端 .env,除非另有明确批准。"
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",TODO,TODO,TODO,"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\"]","只读复检;若发现迁移 drift、配置缺项、Caddy 异常或版本仍不一致,R4 不得标完成。"
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",TODO,TODO,TODO,"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\"]","R5 涉及真实公网账号、企业微信真机和真实 OCR;必须等 R4 DONE 后单独执行。"
无法渲染此文件,因为它包含了意外字符,其位于第 3 行和第 725 列。
@@ -1,4 +1,4 @@
ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
E1,部署前备份授权确认,"在 release candidate 同步前创建部署前新近备份属于远端写操作,本 Issue 先确认授权、范围和禁止项;未授权前不执行备份。","1) 明确备份目标为试运行服务器 /opt/hyb-oa-trialrun;2) 明确只创建 DB dump 和 storage tar,不修改业务数据、不部署、不重启;3) 明确不打印 .env secret 或数据库连接串;4) 获得明确批准后才进入 E2。","流程级验证:人工核对 docs/trialrun/deployment-preflight-2026-05-10.md 与 issues/2026-05-10_13-20-38-deployment-version-sync-governance.csv 的 D2 阻断说明;确认备份写操作获批前 E2 保持 TODO。","manual|ssh",TODO,TODO,TODO,"deploy/trialrun/runbook.md|issues/2026-05-10_13-20-38-deployment-version-sync-governance.csv","[]","需要用户明确批准;不执行 deploy、不执行 migration、不重启服务、不修改远端 .env。"
E2,创建部署前 DB 与 storage 备份,"在 E1 获批后,按现有 runbook 和脚本在远端创建一组部署前 DB dump 与 storage tar;只做备份,不做部署。","1) deploy/trialrun/backups 下生成当日 DB dump;2) 生成当日 storage tar;3) 命令退出成功;4) 备份文件名、时间和大小记录到 D2 Notes 或证据文档;5) 备份失败时停止,不进入 D3。","流程级验证:ssh [email protected] 进入 /opt/hyb-oa-trialrun;按 runbook 执行 ./scripts/backup-db.sh 与 ./scripts/backup-storage.sh;只读列出新生成文件名、时间、大小;不打印 secret。","ssh|bash|manual",TODO,TODO,TODO,"deploy/trialrun/runbook.md|scripts/backup-db.sh|scripts/backup-storage.sh","[\"E1\"]","远端写操作;只创建备份文件。若脚本需要读取 .env,只 source 不 echo;失败时保留 D2 BLOCKED。"
E3,备份后 D2 解阻复核,"备份创建后回到部署版本同步治理合同,复核 D2 是否满足部署前新近备份和回滚路径要求。","1) 新 DB/storage 备份均存在且时间为部署前新近;2) runbook 回滚路径可执行;3) 将 D2 回填为 DONE/DONE/DONE;4) D3 仍需用户单独批准后才能执行。","流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-10_13-20-38-deployment-version-sync-governance.csv;git diff --check;人工确认 D3 仍未执行。","python3|manual",TODO,TODO,TODO,"issues/2026-05-10_13-20-38-deployment-version-sync-governance.csv|docs/trialrun/deployment-preflight-2026-05-10.md","[\"E2\"]","E3 只回填状态和证据;不部署、不迁移、不重启。"
E1,部署前备份授权确认,"在 release candidate 同步前创建部署前新近备份属于远端写操作,本 Issue 先确认授权、范围和禁止项;未授权前不执行备份。","1) 明确备份目标为试运行服务器 /opt/hyb-oa-trialrun;2) 明确只创建 DB dump 和 storage tar,不修改业务数据、不部署、不重启;3) 明确不打印 .env secret 或数据库连接串;4) 获得明确批准后才进入 E2。","流程级验证:人工核对 docs/trialrun/deployment-preflight-2026-05-10.md 与 issues/2026-05-10_13-20-38-deployment-version-sync-governance.csv 的 D2 阻断说明;确认备份写操作获批前 E2 保持 TODO。","manual|ssh",DONE,DONE,DONE,"deploy/trialrun/runbook.md|issues/2026-05-10_13-20-38-deployment-version-sync-governance.csv","[]","用户已批准执行本计划;本轮远端写操作仅限创建 DB dump 与 storage tar,不部署、不迁移、不重启、不修改远端 .env、不打印 secret。"
E2,创建部署前 DB 与 storage 备份,"在 E1 获批后,按现有 runbook 和脚本在远端创建一组部署前 DB dump 与 storage tar;只做备份,不做部署。","1) deploy/trialrun/backups 下生成当日 DB dump;2) 生成当日 storage tar;3) 命令退出成功;4) 备份文件名、时间和大小记录到 D2 Notes 或证据文档;5) 备份失败时停止,不进入 D3。","流程级验证:ssh [email protected] 进入 /opt/hyb-oa-trialrun;按 runbook 执行 ./scripts/backup-db.sh 与 ./scripts/backup-storage.sh;只读列出新生成文件名、时间、大小;不打印 secret。","ssh|bash|manual",DONE,DONE,DONE,"deploy/trialrun/runbook.md|scripts/backup-db.sh|scripts/backup-storage.sh","[\"E1\"]","E2 完成:远端创建 hyb-oa-db-20260510_134340.dump 2691566 bytes;hyb-oa-storage-20260510_134341.tar.gz 2610057 bytes;未部署、未迁移、未重启、未修改远端 .env。"
E3,备份后 D2 解阻复核,"备份创建后回到部署版本同步治理合同,复核 D2 是否满足部署前新近备份和回滚路径要求。","1) 新 DB/storage 备份均存在且时间为部署前新近;2) runbook 回滚路径可执行;3) 将 D2 回填为 DONE/DONE/DONE;4) D3 仍需用户单独批准后才能执行。","流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-10_13-20-38-deployment-version-sync-governance.csv;git diff --check;人工确认 D3 仍未执行。","python3|manual",DONE,DONE,DONE,"issues/2026-05-10_13-20-38-deployment-version-sync-governance.csv|docs/trialrun/deployment-preflight-2026-05-10.md","[\"E2\"]","E3 完成:D2 已由备份阻断转为 DONE;D3 仍保持 TODO,需用户单独批准后才能执行部署同步。"
无法渲染此文件,因为它包含了意外字符,其位于第 3 行和第 737 列。