8.6 KiB
OPS7 运维交接 Runbook
文档状态:草案。用于 R7 前运维交接和上线前检查;不代表已执行回滚、恢复或生产配置变更。
1. 原则
- 所有生产或试运行配置变更必须先确认窗口、负责人和回滚路径。
- 不得记录密码、不得记录 token、不得打印 secret、不得提交真实票据或导出文件。
- 备份恢复、Caddy/systemd 调整、数据库写操作都必须单独确认,不在本 Runbook 中直接执行。
- 企业微信只承担入口、免登/绑定、个人应用消息和 deeplink;正式审批仍以 OA 审批历史和审计日志为准。
2. 发布前检查
git status --short
python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/<target>.csv
node scripts/qa/check-ui-design-rules.mjs --strict
cd client && npm run typecheck && npm run build
cd server && npm run prisma:validate
公网检查:
curl -fsS https://oa.hyinda.com/ready
PUBLIC_BASE_URL=https://oa.hyinda.com node scripts/qa/check-public-bundle-copy.mjs
LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readiness.sh
若缺少 live smoke 凭据或真实 OCR 样票,脚本应记录 SKIP,不得把 SKIP 写成真实业务通过。
3. 部署
标准部署命令:
bash deploy/trialrun/deploy.sh
默认不覆盖远端 .env。只有确认本地 deploy/trialrun/.env 可直接上服务器时,才允许在单独确认后使用:
SYNC_ENV=1 bash deploy/trialrun/deploy.sh
部署完成后必须记录:
- 本地提交 hash。
- 公网
/ready结果。 - public bundle 扫描结果。
- live readiness 报告目录。
- 如执行视觉矩阵,记录
output/playwright/<issue-id>/和artifacts/qa-flow/<issue-id>/。
4. 回滚
回滚前先判断问题级别:
- 阻断:主链路无法提交、审批、查看状态或权限泄露。
- 严重:影响多人使用或财务/审批可信度,但存在临时绕行。
- 一般:不阻断主链路的文案、视觉或效率问题。
回滚需要人工确认:
- 确认回滚联系人和执行窗口。
- 确认目标版本或上一个部署包。
- 确认数据库是否需要回滚。多数前端/脚本问题不应回滚数据库。
- 执行回滚后重新检查
/ready、public bundle、live readiness。
不得在未确认时执行:
- 删除数据库。
- 手工修改生产表结构。
- 覆盖生产
.env。 - 清理真实票据、附件或审计记录。
5. 备份与恢复
上线或 R7 前至少确认备份策略:
- 数据库备份文件位置、时间、负责人。
- 附件或对象存储备份位置、时间、负责人。
- 恢复演练负责人和预估耗时。
- 恢复后检查命令:
/ready、登录、报销详情、附件下载、财务台账。
恢复演练只在独立窗口执行。演练记录只写备份文件名、恢复环境、恢复耗时和检查结果,不记录真实文件内容。
QAOPS8 备份策略基线(只定义策略,不执行备份命令):
| 对象 | 触发频率 | 保留口径 | 验证方式 | 仓库记录 |
|---|---|---|---|---|
| PostgreSQL 数据库 | 每次受控部署或 R7E 窗口前;R7E 期间每日收口后 | 最近 7 天每日备份 + 每次部署前基线 | 非生产环境 pg_restore --list 或抽样恢复演练 |
只记录备份文件名、时间、负责人和校验摘要 |
| 上传附件 / 对象存储 | 与数据库备份同窗口执行 | 与对应数据库备份保持同一批次 | 抽样校验文件数量、大小和关键附件下载 | 不提交真实附件,只记录路径占位和校验摘要 |
| 运行配置 | 每次 .env、Caddy、Compose、systemd 或环境变量变更前后 |
最近 3 个可回滚版本 | 校验配置 hash、权限和敏感字段不外泄 | 不记录 secret 明文,只记录版本和外部安全存放位置 |
| 部署包 / commit | 每次部署 | 当前版本 + 上一可用版本 + 本轮试运行基线 | 部署后 /ready、public bundle、live readiness |
记录 commit、部署时间和验证摘要 |
QAOPS8 恢复演练方案(执行前必须再次确认窗口):
- 确认演练窗口、负责人、回滚联系人、影响范围和停止条件。
- 冻结演练期间的写入或改用隔离环境;生产恢复演练必须先备份当前状态。
- 在非生产或隔离环境恢复数据库备份,确认 schema、迁移状态和关键表可读。
- 恢复附件或对象存储备份,抽样检查报销详情、附件下载和财务台账。
- 使用目标 commit 或部署包启动应用,执行
/ready、public bundle、登录、报销详情、附件下载和财务台账检查。 - 记录 RTO/RPO 实测值、失败点、修正动作和是否允许进入 R7E 或上线窗口。
R7E 前演练口径:RTO/RPO 先作为演练实测值记录,不承诺正式 SLA;若无法在确认窗口内完成恢复验证,R7E Go/No-Go 必须判定为 Pause 或 No-Go。
6. 账号交接
R7 前账号交接只记录角色和交付状态:
| 账号/角色 | 检查项 |
|---|---|
| 员工 | active、employee、直属主管正确、可登录 |
| 审批人 | active、正式审批角色、不是 admin-only 代批 |
财务 wangzhiling |
active、employee + finance、不授予管理员 |
管理员 wangshunli |
系统管理、回滚联系人、问题登记负责人 |
一次性密码只能通过仓库外安全渠道交付,不写入 Issue、文档、截图或聊天摘要。
7. 企业微信通知检查
执行前只读确认:
curl -fsS https://oa.hyinda.com/api/auth/wecom/config
检查点:
status=ready。- 工作台入口指向 OA 移动入口。
- 个人应用消息通道启用。
- 回调和可信域名与公网域名一致。
- 配置接口不返回 secret。
人工检查点:
- 企业微信工作台能看到海音达工作台。
- 已绑定用户从手机企业微信进入后不反复要求登录。
- 收到审批消息后能 deeplink 回 OA 移动审批或详情。
8. 问题登记模板
每个问题至少记录:
- 编号:
- 等级:阻断 / 严重 / 一般 / 体验建议
- 角色与账号:
- 设备与入口:
- URL 或页面:
- 操作步骤:
- 期望结果:
- 实际结果:
- 证据位置:
- 负责人:
- 当日处理结论:修复 / 降级 / 回滚 / 后续 Issue
9. OPS8 R7E 前最小运维准备
当前公网部署追踪口径:
- 本次 OPS8 起始基线:
0260bc7 R7EP/OPS8/QAF8/UX8/P2T 调整后续计划。 - 最近已确认部署基线:MIF7TD 部署包含
cf2bba0的 MIF7T 代码;后续若部署新提交,必须在本节追加新 commit。 deploy/trialrun/deploy.sh默认SYNC_ENV=0,不得覆盖远端.env;需要同步.env时必须另行确认。- R7E 前公网只读检查命令固定为:
curl -fsS https://oa.hyinda.com/ready、PUBLIC_BASE_URL=https://oa.hyinda.com node scripts/qa/check-public-bundle-copy.mjs、带凭据scripts/qa/run-live-smoke-readiness.sh。
R7E 前备份和回滚占位:
| 项目 | 当前记录方式 |
|---|---|
| 数据库备份 | R7E 前由运维负责人填写备份文件名、位置和生成时间;本文不记录真实数据内容 |
| 附件备份 | R7E 前由运维负责人填写对象存储或服务器路径占位;不得提交真实附件 |
| 回滚目标 commit | 部署时记录“当前 commit”和“上一可用 commit”;前端/脚本问题优先回滚应用版本,不默认回滚数据库 |
| 回滚联系人 | 待用户在 R7E 启动前确认 |
| 恢复演练窗口 | 不在 OPS8 中执行;必须另拆 Issue 并确认窗口 |
live readiness 归档规则:
- 报告统一放在
artifacts/qa-flow/live-smoke-readiness-<timestamp>/。 - 引用时至少记录
summary.json、public-bundle-copy.txt、live-smoke.txt、live-ocr.txt、pending-ocr.txt。 live-smoke.txt和live-ocr.txt不含SKIP才能作为真实通过证据;pending OCR缺DATABASE_URL时可记录为非阻断SKIP,不得写成数据库健康通过。- R7EP 或上线前结论必须同时说明
/ready、public bundle、live smoke、真实 OCR 和移动矩阵状态。
2026-05-13 已按默认部署目标 [email protected]:/opt/hyb-oa-trialrun 补跑 OPS8-3 远端运行状态只读检查,证据目录 artifacts/qa-flow/ops8-remote-readonly-20260513-152024/:/ready ok,Caddy active,Docker Compose 中 db/server Up,Prisma migration status up to date。该检查未打印远端 env,未重启服务,未执行数据库写操作或 migrate reset。
后续每次 R7E 或上线前复跑 OPS8-3 时,仍只允许 ps、status、config、docker compose ps、prisma migrate status 等不改变状态的命令;不得打印远端 env,不得执行 migrate reset 或数据库写操作。