chore(db): 压缩 Flyway 迁移链为单基线

原 V1–V10 的净结构全部合并进 V1__flight_state_baseline.sql,迁移链收敛为一条。
表集合、逐列类型/非空/默认值、表级约束、索引与种子行经重放比对与旧链条一致;
仅丢弃 5 条只对既有库有意义的存量数据语句(RECEIVED_AT/ENQUEUED_AT 回填、
schd 与开放请求去重、SENT_AT 回写)。

已按旧链迁移过的库版本链与校验和对不上,必须重建 schema 或删除数据卷后重跑,
禁止手工 repair 或改写 flyway_schema_history。

- 删除 V2–V10 共 9 个迁移文件
- 注释统一范式并改用稳定 ID(INV-x/C-x/G-x),修正 KAFKA_MSG/KAFKA_SCHD 与实际值不符
- 同步 docs/reference.md、docs/user-stories.md、oracle11g/README.md、README、application.yml、compose.yaml
- FlywayMigrationTest 改为断言单基线,并补 MSG_EVENT.SENT_AT 覆盖
This commit is contained in:
windyboy
2026-09-13 16:31:14 +08:00
parent 62f61ad9e4
commit 800d7617f2
17 changed files with 163 additions and 356 deletions
@@ -7,19 +7,21 @@ Flyway 配置**PG 路径使用 `classpath:db/migration`,两者互不混用
1. 现场 11.2 补丁级别、数据库字符集、DBA 权限清单拿到,且可提供可测试的目标库。
2. JDK 25 × ojdbc 驱动(具体版本)× Flyway Oracle 支持 × 连接池组合在目标库实测通过
——不能以"PG 通过"代替 Oracle 验收(Oracle 11g 适配为开放项,docs/flight-state.md §6)。
——不能以"PG 通过"代替 Oracle 验收(Oracle 11g 适配为开放项,`docs/flight-state.md`)。
3. 11g 的 upsertMERGE INTO)与绑定顺序适配完成并通过与 PG 同粒度的集成测试后,
才允许把仓储 SQL 切到 11g 方言。先前编译级交付的 `SqlDialect` 方言接缝已随
V1 基线列名更替(fday/last_message_id → operation_day/last_msg_id)退役删除;
接入时必须按 V1 基线现有列名重建,禁止直接复用旧接缝。
基线列名更替(fday/last_message_id → operation_day/last_msg_id)退役删除;
接入时必须按基线现有列名重建,禁止直接复用旧接缝。
## 计划内容
- V1 起`V1__flight_state_baseline.sql` 的 11g 等价 DDL——
PIPELINE_LOCK/PROC_STATE/MSG_EVENT/REQ_TRACK/BACKFILL_TODO/FLIGHT_SCHD + 9 张明细表/SCHD_SNAP_LOG
- 单基线`V1__flight_state_baseline.sql` 的 11g 等价 DDL——
PIPELINE_LOCK/INBOX_CURSOR/PROC_STATE/MSG_EVENT/REQ_TRACK/FLIGHT_SCHD + 9 张明细表/SCHD_SNAP_LOG
`NUMBER`/序列替代 `BIGSERIAL``TIMESTAMP WITH TIME ZONE``VARCHAR2` BYTE/CHAR 语义钉死。
- `INSERT ... ON CONFLICT` 改 11g MERGEOPERATION_DAY 不可变条件,flight-state.md §2.1)。
- `INSERT ... ON CONFLICT` 改 11g MERGEOPERATION_DAY 不可变条件,`INV-12`)。
- 空串按 NULL 的语义回归:显式清空的 presence 信息不得被 11g 空串语义吞掉
flight-state.md §3.1 显式清空口径)。
字段清空语义见 `Q13`;定案前按「未携带不清空」实现,`INV-14`)。
- 11g 无部分索引:`uq_req_open` / `uq_schd_event` / `idx_proc_backfill_due` 三个带 `WHERE`
的索引必须换成等价的函数索引或冗余列方案,不能照搬 PG 定义。
版本号与 PG location 各自独立推进,禁止复用版本号语义。