# hyb-oa 试运行发布 Checklist(E19) > 目标:一次发布可追踪、可回归、可回滚(10 分钟内恢复到上个版本)。 ## A. 发布前(Pre-flight) - [ ] 确认当前版本已打 tag:`git tag -a trialrun-YYYYMMDD-NN -m "trialrun release"` - [ ] 本地门禁:`./scripts/check-minimal.sh` - [ ] 全量回归(建议):`cd server && RUN_AUDIT_REGRESSION=1 RUN_OCR_REGRESSION=1 ./scripts/regression-all.sh` - [ ] 备份(DB + 文件存储): - [ ] `set -a && source deploy/trialrun/.env && set +a` - [ ] `./scripts/backup-db.sh`(记录输出文件名) - [ ] `./scripts/backup-storage.sh`(记录输出文件名) ## B. 发布(Deploy) - [ ] `git checkout ` - [ ] 构建并启动: - [ ] `docker compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env up -d --build server` - [ ] `docker compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env run --rm init` - [ ] 探活: - [ ] `curl -fsS http://127.0.0.1:3000/ready` - [ ] 登录验证(管理员账号): - [ ] 访问 `http://127.0.0.1:3000` - [ ] 登录成功,菜单权限正确 ## C. 发布后(Post-check) - [ ] 关键链路手工验证(建议至少一次): - [ ] 员工:新建报销 → 上传票据 → 绑定 → 提交 - [ ] 经理:待办审批(approve) - [ ] 财务:付款(含凭证字段) - [ ] 查看 server 日志(无异常错误风暴): - [ ] `docker logs --tail=200 hyb-oa-trialrun-server` ## D. 回滚(Rollback) > 原则:如果涉及迁移,最快回滚通常是 “恢复备份 + 回到上个 tag”。 - [ ] 停止 server:`docker compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env stop server` - [ ] 恢复 DB:`./scripts/restore-db.sh ` - [ ] 恢复存储:`./scripts/restore-storage.sh deploy/trialrun/data/storage` - [ ] 回到上个版本:`git checkout ` - [ ] 重启并探活: - [ ] `docker compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env up -d --build server` - [ ] `curl -fsS http://127.0.0.1:3000/ready` ## E. R12-lite 试点切换检查 - [ ] 已执行 `cd server && DATABASE_URL=postgresql://hyboa_user:hyboa_password@127.0.0.1:5432/hyb_oa_r12?schema=public npm run seed:config` - [ ] 运行环境已打开 R12-lite 所需 env 开关 - [ ] 功能开关页已将 `budget_precheck_v1`、`payment_batch_v1`、`portal_home_v1`、`global_search_v1`、`announcements_v1`、`workflow_definition_admin_v1`、`cutover_console_v1` 切到 `inherit` 或 `force_on` - [ ] 旧 OA 主数据 CSV 已完成 dry-run,结果为 `dry_run_ok` - [ ] `docs/migration-mapping.md` 已按试点范围人工核对 - [ ] 旧 OA 新单停用时间已公告,未完结事项已人工清空或冻结 - [ ] 仅按部门 / 法体 / 域粒度创建 `CutoverScope` - [ ] 先开 `portal`,再逐域灰度打开业务入口 - [ ] Portal、待办、预算预校验、支付批次、公告、搜索已在试点部门可用 - [ ] 回退方案已演练:关闭 `CutoverScope` + 恢复旧入口