diff --git a/docs/guides/REV004_RELEASE_OPS_CHECKLIST.md b/docs/guides/REV004_RELEASE_OPS_CHECKLIST.md new file mode 100644 index 0000000..22e044b --- /dev/null +++ b/docs/guides/REV004_RELEASE_OPS_CHECKLIST.md @@ -0,0 +1,164 @@ +# REV004 上线实施步骤清单 / 环境巡检清单 + +## 1. 适用范围 +用于 REV004 账务处理对象主线恢复完成后的: +- 上线前环境核查 +- 上线实施步骤 +- 上线后核验 +- 异常回滚与补证 + +当前主线基线: +- backend `develop`:`ea159faa3bae2b7491d4e60cbe79e392e77e7345` +- docs `main`:`9946fa75722eb4d13e213763ff2f0c9f8e1cb509` + +--- + +## 2. 上线前环境巡检 +### A. 服务注册 +- [ ] `business-server` 正常注册到 Nacos +- [ ] `business-bank-server` 正常注册到 Nacos +- [ ] `system-server` / `infra-server` 可发现 +- [ ] 不存在端口冲突(尤其 XXL executor 端口) + +### B. 数据库 +- [ ] PostgreSQL 连接正常 +- [ ] 目标 schema 可写 +- [ ] 下列表存在: + - `biz_prestorage_adjust` + - `biz_prestorage_adjust_detail` + - `biz_bad_debt_adjust` + - `biz_bad_debt_adjust_detail` + - `biz_writtenoff_adjust` + - `biz_writtenoff_adjust_detail` + - `biz_latefee_reduce` + - `biz_latefee_reduce_detail` + - `biz_price_diff_adjust` + - `biz_price_diff_adjust_detail` + - `biz_redink_record` + - `biz_redink_record_detail` + - `biz_split_adjust` + - `biz_split_adjust_detail` +- [ ] DDL 可幂等重放 + +### C. 中间件 +- [ ] Redis 正常 +- [ ] Nacos 正常 +- [ ] RocketMQ / Rabbit / Kafka(如环境需要)状态符合部署要求 +- [ ] XXL Admin 可访问,且不会因不可达阻断核心业务启动 + +### D. 外部依赖 +- [ ] `business-bank-server` 能处理: + - `get-by-tran-seq` + - `createFollowupTransaction` +- [ ] 原交易测试数据可用(redink/refund) + +--- + +## 3. 上线实施步骤 +### Step 1 — 代码版本确认 +- [ ] backend 部署目标包含 `ea159faa...` 之后所有需要上线提交 +- [ ] docs 主线已可供联调/运维参考 + +### Step 2 — DDL 执行 +按对象顺序执行/确认以下脚本: +- [ ] `REV004_prestorage_formal_tables_deploy.sql` +- [ ] `REV004_bad_debt_formal_tables_deploy.sql` +- [ ] `REV004_writtenoff_formal_tables_deploy.sql` +- [ ] `REV004_latefee_formal_tables_deploy.sql` +- [ ] `REV004_price_diff_formal_tables_deploy.sql` +- [ ] `REV004_redink_formal_tables_deploy.sql` + +### Step 3 — 服务启动 +建议顺序: +1. 基础依赖(Nacos / Redis / DB) +2. `business-bank-server` +3. `business-server` +4. 其余依赖服务 + +### Step 4 — 上线后即时 smoke +- [ ] `actuator/health` +- [ ] prestorage `process / attachments` +- [ ] writtenoff get/page +- [ ] bad debt get/page +- [ ] price diff get/page +- [ ] redink get/page +- [ ] redink execute(若环境允许) + +--- + +## 4. 推荐联调顺序 +1. 字典 / 下拉 / label 核对 +2. prestorage 全链路 +3. writtenoff / bad debt / price diff 审批链路 +4. redink 执行链路 +5. split / late fee reduce 补充场景 + +--- + +## 5. 上线后核验 +### 数据核验 +- [ ] 新请求是否优先落 formal 表 +- [ ] `get/page` 是否优先命中 formal 数据 +- [ ] fallback 仅在 formal 缺失时触发 + +### redink 特别核验 +- [ ] 原交易状态是否转为 `REVERSED` +- [ ] follow-up bank 交易是否创建成功 +- [ ] formal main/detail 是否同步落表 + +### prestorage 特别核验 +- [ ] `prestorage-process` 返回 formal-first +- [ ] `prestorage-attachments` 返回 formal attachment refs + +--- + +## 6. 回滚 / 降级思路 +### 可逆项 +- 查询口径改动可回滚为 legacy-fallback 优先 +- formal 表为增量对象表,保留不影响旧日志骨架 + +### 不建议直接回滚项 +- 已执行过的 DDL 不建议删除 +- 已落表业务数据不应物理删除作为“回滚”手段 + +### 建议做法 +- 保留 schema +- 回退服务代码到上一个稳定版本 +- 用 evidence 文档确认受影响对象与链路 + +--- + +## 7. 现场问题快速定位 +### 若 `get/page` 没命中 formal +检查: +- formal main/detail 是否已落表 +- objectType 是否匹配 +- adjustmentNo 是否一致 +- fallback 是否被触发 + +### 若 redink execute 报错 +检查: +- `business-bank-server` 是否可用 +- Nacos 是否注册成功 +- 原交易是否存在 +- follow-up transaction 是否可写入 `bk_transaction` + +### 若 prestorage process/attachments 异常 +检查: +- `biz_prestorage_adjust` 是否存在该 adjustmentNo +- `attachmentRefs` 是否为空/格式异常 +- ContentAttach 是否存在对应 ID + +--- + +## 8. 对运维 / 测试的简版口径 +> REV004 当前主线已完成主要账务对象 formal-table 恢复与查询收口。上线前请优先确认 formal 表结构、Nacos 注册、business-bank-server 可用性,以及对应 evidence 文档中的 smoke 范围。若 redink/refund 需走真实链路,请同时准备原交易测试数据。 + +--- + +## 9. 配套文档 +- `REV004_FINAL_MAINLINE_DELIVERY_SUMMARY.md` +- `REV004_GO_LIVE_CHECKLIST.md` +- `REV004_CURRENT_TRUTH_MATRIX.md` +- `docs/evidence/rev004-*-formal-table-*.md` +- `docs/evidence/rev004-prestorage-strict-formal-first-2026-04-17.md`