QAOPS8 补齐备份恢复策略

这个提交包含在:
2026-05-13 18:12:25 +08:00
父节点 e7de1a360b
当前提交 ec276e8089
共修改 2 个文件,包含 22 行新增和 2 行删除
+20
查看文件
@@ -84,6 +84,26 @@ SYNC_ENV=1 bash deploy/trialrun/deploy.sh
恢复演练只在独立窗口执行。演练记录只写备份文件名、恢复环境、恢复耗时和检查结果,不记录真实文件内容。
QAOPS8 备份策略基线(只定义策略,不执行备份命令):
| 对象 | 触发频率 | 保留口径 | 验证方式 | 仓库记录 |
| --- | --- | --- | --- | --- |
| PostgreSQL 数据库 | 每次受控部署或 R7E 窗口前;R7E 期间每日收口后 | 最近 7 天每日备份 + 每次部署前基线 | 非生产环境 `pg_restore --list` 或抽样恢复演练 | 只记录备份文件名、时间、负责人和校验摘要 |
| 上传附件 / 对象存储 | 与数据库备份同窗口执行 | 与对应数据库备份保持同一批次 | 抽样校验文件数量、大小和关键附件下载 | 不提交真实附件,只记录路径占位和校验摘要 |
| 运行配置 | 每次 `.env`、Caddy、Compose、systemd 或环境变量变更前后 | 最近 3 个可回滚版本 | 校验配置 hash、权限和敏感字段不外泄 | 不记录 secret 明文,只记录版本和外部安全存放位置 |
| 部署包 / commit | 每次部署 | 当前版本 + 上一可用版本 + 本轮试运行基线 | 部署后 `/ready`、public bundle、live readiness | 记录 commit、部署时间和验证摘要 |
QAOPS8 恢复演练方案(执行前必须再次确认窗口):
1. 确认演练窗口、负责人、回滚联系人、影响范围和停止条件。
2. 冻结演练期间的写入或改用隔离环境;生产恢复演练必须先备份当前状态。
3. 在非生产或隔离环境恢复数据库备份,确认 schema、迁移状态和关键表可读。
4. 恢复附件或对象存储备份,抽样检查报销详情、附件下载和财务台账。
5. 使用目标 commit 或部署包启动应用,执行 `/ready`、public bundle、登录、报销详情、附件下载和财务台账检查。
6. 记录 RTO/RPO 实测值、失败点、修正动作和是否允许进入 R7E 或上线窗口。
R7E 前演练口径:RTO/RPO 先作为演练实测值记录,不承诺正式 SLA;若无法在确认窗口内完成恢复验证,R7E Go/No-Go 必须判定为 Pause 或 No-Go。
## 6. 账号交接
R7 前账号交接只记录角色和交付状态:
@@ -9,8 +9,8 @@ QAOPS8-6,带凭据 live readiness 稳定化,"稳定带凭据 live smoke、真实
QAOPS8-7,真实 OCR 测试策略,"定义真实 OCR 测试的数据授权、样票脱敏、provider 判定、pending OCR 和失败重试策略。","1) mock 与真实 provider 结论分离;2) 样票有授权或脱敏;3) pending OCR 可解释;4) 失败不阻塞无关流程但不得写 PASS。","流程级验证:node scripts/qa/check-live-smoke-env.mjs;node scripts/qa/check-pending-ocr.mjs --thresholds=2,5,10;缺环境时记录 SKIP。",node|manual,DONE,DONE,DONE,scripts/qa/check-live-smoke-env.mjs|scripts/qa/check-pending-ocr.mjs|docs/报销发票附件规则.md,"[""QAOPS8-6""]","LIVE_SMOKE_BASE_URL=https://oa.hyinda.com node scripts/qa/check-live-smoke-env.mjs 通过公网和企业微信配置探测;node scripts/qa/check-pending-ocr.mjs --thresholds=2,5,10 因缺 DATABASE_URL 按规则 SKIP;真实 OCR 执行仍需授权 PDF 样票和凭据。"
QAOPS8-8,移动矩阵回归策略,"把移动浏览器和企业微信 WebView 视口矩阵固定为上线前可复跑策略。","1) 覆盖 320、360、375、390、393、414、430 关键宽度;2) 企业微信 UA 与真机确认分离;3) 截图路径明确;4) 新增移动页必须进入矩阵。","流程级验证:cd client && npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts --workers=1 --reporter=list;人工核对真机清单。",playwright|manual,DONE,DONE,DONE,client/tests/e2e|docs/trialrun/真机公网测试清单.md|output/playwright,"[""QAOPS8-4""]",复用 QAOPS8-4 Playwright 证据 5 passed;output/playwright/mobile-ia-flow-remediation 当前有 22 个截图文件;真机清单已明确自动化不能替代未来 R7E 真机验收。
QAOPS8-9,证据归档规范,"定义 QAOPS8 证据路径、命名、保留和引用规则,避免报告、截图、日志散落。","1) 自动化报告、截图、命令输出和人工结论有稳定路径;2) 不提交大体积临时产物;3) Issue Notes 可追溯证据;4) 隐私和密钥不入库。","流程级验证:rg -n 'output/playwright|artifacts/qa-flow|证据|截图|trace|日志' docs/测试规约与回归门禁.md docs/试运行与自动化验证手册.md issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv。",rg|manual,DONE,DONE,DONE,docs/测试规约与回归门禁.md|docs/试运行与自动化验证手册.md|artifacts|output,"[""QAOPS8-1""]",rg 复核通过;.gitignore 已忽略 artifacts、output、client/test-results 和 client/playwright-report;证据只在 Issue Notes 引用路径。
QAOPS8-10,备份策略,"收敛上线前备份策略,包括数据库、上传附件、配置、部署包和恢复责任。","1) 备份对象清楚;2) 频率和保留期清楚;3) 密钥和配置备份不入库;4) 备份成功有可验证证据。","流程级验证:人工核对 docs/trialrun/OPS7运维交接Runbook.md 与 docs/ops/非功能基线.md;不得执行生产备份命令。",manual|rg,TODO,TODO,TODO,docs/trialrun/OPS7运维交接Runbook.md|docs/ops/非功能基线.md,"[""QAOPS8-0""]",本行只制定策略;执行生产备份前需用户确认。
QAOPS8-11,恢复演练方案,"设计恢复演练方案,明确 RTO、RPO、演练窗口、验证步骤和回滚边界。","1) 演练目标和范围明确;2) 不在未确认时改生产;3) 恢复验证步骤可复现;4) 失败有停止条件。","流程级验证:人工核对恢复演练步骤;必要时在隔离环境演练并记录证据。",manual,TODO,TODO,TODO,docs/trialrun/OPS7运维交接Runbook.md|docs/ops/非功能基线.md,"[""QAOPS8-10""]",任何生产恢复演练必须另行确认窗口和责任人。
QAOPS8-10,备份策略,"收敛上线前备份策略,包括数据库、上传附件、配置、部署包和恢复责任。","1) 备份对象清楚;2) 频率和保留期清楚;3) 密钥和配置备份不入库;4) 备份成功有可验证证据。","流程级验证:人工核对 docs/trialrun/OPS7运维交接Runbook.md 与 docs/ops/非功能基线.md;不得执行生产备份命令。",manual|rg,DONE,DONE,DONE,docs/trialrun/OPS7运维交接Runbook.md|docs/ops/非功能基线.md,"[""QAOPS8-0""]",已在 OPS7 Runbook 增加 QAOPS8 备份策略基线;覆盖数据库、附件、运行配置、部署包、触发频率、保留口径、验证方式和仓库记录规则;未执行生产备份命令。
QAOPS8-11,恢复演练方案,"设计恢复演练方案,明确 RTO、RPO、演练窗口、验证步骤和回滚边界。","1) 演练目标和范围明确;2) 不在未确认时改生产;3) 恢复验证步骤可复现;4) 失败有停止条件。","流程级验证:人工核对恢复演练步骤;必要时在隔离环境演练并记录证据。",manual,DONE,DONE,DONE,docs/trialrun/OPS7运维交接Runbook.md|docs/ops/非功能基线.md,"[""QAOPS8-10""]",已在 OPS7 Runbook 增加 QAOPS8 恢复演练方案;执行前必须确认窗口、负责人、回滚联系人和停止条件;RTO/RPO 先记录演练实测值,不承诺正式 SLA。
QAOPS8-12,SLO 和错误预算,"建立 OA MVP 当前可用性、接口成功率、关键业务流成功率和错误预算口径。","1) SLI、SLO、统计窗口和错误预算清楚;2) 不承诺无法监控的指标;3) 与用户体验和试运行风险对应;4) 违反预算有动作。","流程级验证:rg -n 'SLO|错误预算|SLI|可用性|延迟|成功率' docs/ops/SLO错误预算.md docs/测试规约与回归门禁.md。",rg|manual,TODO,TODO,TODO,docs/ops/SLO错误预算.md|docs/测试规约与回归门禁.md,"[""QAOPS8-1""]",参考 Google SRE SLI/SLO/error budget;先轻量落地,不引入重型平台。
QAOPS8-13,DORA 交付指标基线,"建立部署频率、变更前置时间、变更失败率和恢复时间的轻量采集口径。","1) 四项指标定义清楚;2) 能从 git、Issue、部署记录或事故记录追溯;3) 不为指标牺牲交付质量;4) 只做轻量统计。","流程级验证:rg -n 'DORA|部署频率|前置时间|变更失败率|恢复时间|CFR|MTTR' docs/ops/DORA指标.md docs/开发交付与变更管理规约.md。",rg|manual,TODO,TODO,TODO,docs/ops/DORA指标.md|docs/开发交付与变更管理规约.md,"[""QAOPS8-1""]",参考 DORA 四指标;作为治理改进,不作为个人绩效指标。
QAOPS8-14,安全发布前检查,"建立发布前安全检查,包括权限、敏感信息、日志、配置、依赖和等保相关底线。","1) 不泄露 token、密码、票据和个人隐私;2) 权限直连审计有证据;3) 日志不记录敏感明文;4) 高风险项进入 Go/No-Go。","流程级验证:node scripts/qa/audit-docs.mjs --check-links;rg -n 'password|token|secret|密钥|权限直连|敏感' docs scripts issues。",node|rg|manual,TODO,TODO,TODO,scripts/qa/audit-docs.mjs|docs|scripts|issues,"[""QAOPS8-9""]",参考 GB/T 22239-2019 的安全管理和运维底线;不声明完成等保测评。
1 ID Title Description Acceptance Test_Method Tools Dev_Status Review1_Status Regression_Status Files Dependencies Notes
9 QAOPS8-7 真实 OCR 测试策略 定义真实 OCR 测试的数据授权、样票脱敏、provider 判定、pending OCR 和失败重试策略。 1) mock 与真实 provider 结论分离;2) 样票有授权或脱敏;3) pending OCR 可解释;4) 失败不阻塞无关流程但不得写 PASS。 流程级验证:node scripts/qa/check-live-smoke-env.mjs;node scripts/qa/check-pending-ocr.mjs --thresholds=2,5,10;缺环境时记录 SKIP。 node|manual DONE DONE DONE scripts/qa/check-live-smoke-env.mjs|scripts/qa/check-pending-ocr.mjs|docs/报销发票附件规则.md ["QAOPS8-6"] LIVE_SMOKE_BASE_URL=https://oa.hyinda.com node scripts/qa/check-live-smoke-env.mjs 通过公网和企业微信配置探测;node scripts/qa/check-pending-ocr.mjs --thresholds=2,5,10 因缺 DATABASE_URL 按规则 SKIP;真实 OCR 执行仍需授权 PDF 样票和凭据。
10 QAOPS8-8 移动矩阵回归策略 把移动浏览器和企业微信 WebView 视口矩阵固定为上线前可复跑策略。 1) 覆盖 320、360、375、390、393、414、430 关键宽度;2) 企业微信 UA 与真机确认分离;3) 截图路径明确;4) 新增移动页必须进入矩阵。 流程级验证:cd client && npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts --workers=1 --reporter=list;人工核对真机清单。 playwright|manual DONE DONE DONE client/tests/e2e|docs/trialrun/真机公网测试清单.md|output/playwright ["QAOPS8-4"] 复用 QAOPS8-4 Playwright 证据 5 passed;output/playwright/mobile-ia-flow-remediation 当前有 22 个截图文件;真机清单已明确自动化不能替代未来 R7E 真机验收。
11 QAOPS8-9 证据归档规范 定义 QAOPS8 证据路径、命名、保留和引用规则,避免报告、截图、日志散落。 1) 自动化报告、截图、命令输出和人工结论有稳定路径;2) 不提交大体积临时产物;3) Issue Notes 可追溯证据;4) 隐私和密钥不入库。 流程级验证:rg -n 'output/playwright|artifacts/qa-flow|证据|截图|trace|日志' docs/测试规约与回归门禁.md docs/试运行与自动化验证手册.md issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv。 rg|manual DONE DONE DONE docs/测试规约与回归门禁.md|docs/试运行与自动化验证手册.md|artifacts|output ["QAOPS8-1"] rg 复核通过;.gitignore 已忽略 artifacts、output、client/test-results 和 client/playwright-report;证据只在 Issue Notes 引用路径。
12 QAOPS8-10 备份策略 收敛上线前备份策略,包括数据库、上传附件、配置、部署包和恢复责任。 1) 备份对象清楚;2) 频率和保留期清楚;3) 密钥和配置备份不入库;4) 备份成功有可验证证据。 流程级验证:人工核对 docs/trialrun/OPS7运维交接Runbook.md 与 docs/ops/非功能基线.md;不得执行生产备份命令。 manual|rg TODO DONE TODO DONE TODO DONE docs/trialrun/OPS7运维交接Runbook.md|docs/ops/非功能基线.md ["QAOPS8-0"] 本行只制定策略;执行生产备份前需用户确认。 已在 OPS7 Runbook 增加 QAOPS8 备份策略基线;覆盖数据库、附件、运行配置、部署包、触发频率、保留口径、验证方式和仓库记录规则;未执行生产备份命令。
13 QAOPS8-11 恢复演练方案 设计恢复演练方案,明确 RTO、RPO、演练窗口、验证步骤和回滚边界。 1) 演练目标和范围明确;2) 不在未确认时改生产;3) 恢复验证步骤可复现;4) 失败有停止条件。 流程级验证:人工核对恢复演练步骤;必要时在隔离环境演练并记录证据。 manual TODO DONE TODO DONE TODO DONE docs/trialrun/OPS7运维交接Runbook.md|docs/ops/非功能基线.md ["QAOPS8-10"] 任何生产恢复演练必须另行确认窗口和责任人。 已在 OPS7 Runbook 增加 QAOPS8 恢复演练方案;执行前必须确认窗口、负责人、回滚联系人和停止条件;RTO/RPO 先记录演练实测值,不承诺正式 SLA。
14 QAOPS8-12 SLO 和错误预算 建立 OA MVP 当前可用性、接口成功率、关键业务流成功率和错误预算口径。 1) SLI、SLO、统计窗口和错误预算清楚;2) 不承诺无法监控的指标;3) 与用户体验和试运行风险对应;4) 违反预算有动作。 流程级验证:rg -n 'SLO|错误预算|SLI|可用性|延迟|成功率' docs/ops/SLO错误预算.md docs/测试规约与回归门禁.md。 rg|manual TODO TODO TODO docs/ops/SLO错误预算.md|docs/测试规约与回归门禁.md ["QAOPS8-1"] 参考 Google SRE SLI/SLO/error budget;先轻量落地,不引入重型平台。
15 QAOPS8-13 DORA 交付指标基线 建立部署频率、变更前置时间、变更失败率和恢复时间的轻量采集口径。 1) 四项指标定义清楚;2) 能从 git、Issue、部署记录或事故记录追溯;3) 不为指标牺牲交付质量;4) 只做轻量统计。 流程级验证:rg -n 'DORA|部署频率|前置时间|变更失败率|恢复时间|CFR|MTTR' docs/ops/DORA指标.md docs/开发交付与变更管理规约.md。 rg|manual TODO TODO TODO docs/ops/DORA指标.md|docs/开发交付与变更管理规约.md ["QAOPS8-1"] 参考 DORA 四指标;作为治理改进,不作为个人绩效指标。
16 QAOPS8-14 安全发布前检查 建立发布前安全检查,包括权限、敏感信息、日志、配置、依赖和等保相关底线。 1) 不泄露 token、密码、票据和个人隐私;2) 权限直连审计有证据;3) 日志不记录敏感明文;4) 高风险项进入 Go/No-Go。 流程级验证:node scripts/qa/audit-docs.mjs --check-links;rg -n 'password|token|secret|密钥|权限直连|敏感' docs scripts issues。 node|rg|manual TODO TODO TODO scripts/qa/audit-docs.mjs|docs|scripts|issues ["QAOPS8-9"] 参考 GB/T 22239-2019 的安全管理和运维底线;不声明完成等保测评。