refactor(flight-state): 按 flight-state.md 审计定稿全量重构脚手架与 SQL (ACM2-31)

- SQL 基线 V1__flight_state_baseline.sql 整体取代 V1.0.0–V1.4.0:
  PIPELINE_LOCK/PROC_STATE/MSG_EVENT/REQ_TRACK/BACKFILL_TODO/FLIGHT_SCHD
  + 8 张资源明细表 + FLIGHT_ROUTE_POINT + SCHD_SNAP_LOG 留痕层
- 废除 FDAY 日代/SCHD_GEN/名单差删:OPERATION_DAY 不可变(应用层校验 +
  条件更新强化 §7.4),STATE 仅 ACTIVE/DELETED,物理清除只在历史归档后
- 处理器化:applyScheduleRecords(§5.1 七步同一事务,重放判定/整包
  DEAD(PROTOCOL)/归属冲突不落地)+ FLOP/FDEL/ADFT(tombstone 仅
  ACTIVE→DELETED,重复 FDEL 幂等不推进版本)
- 投递:KAFKA_SCHD 同 FLID 按最新 STATE_VERSION 合并,被压掉事件关闭,
  TOMBSTONE 发 null 值消息(键缺失=删除旧值 §7.3)
- 回填待办改为业务事务内预登记,消除提交后写待办的崩溃窗口(§7.2/§10)
- XML 解码改为 jackson-dataformat-xml 数据类直接映射(SIS 信封强类型,
  FLTR 开放标签泛型承载)
- 历史归档/物理清除顺序不可颠倒:归档确认成功集才物理删除,未接通删 0 条
- 移除 PUMP_JOB 队列/ReferenceService/FlightStoreDiffTool 等旧机制与测试,
  新增运营日/引擎/快照/FDEL/归档顺序不变性回归测试
This commit is contained in:
windyboy
2026-09-09 17:53:08 +08:00
parent 6af292d103
commit 879d658159
83 changed files with 3435 additions and 6355 deletions
@@ -24,24 +24,24 @@ class JacksonXmlCodecTest {
</META>
<FLOP>
<FLID>121112312</FLID>
<FFID>CA-CA101-A-12DEC031345-D</FFID>
<FFID>CA-CA101-A-12DEC261345-D</FFID>
<GTDT GTNO="1">
<GATE>G28</GATE>
<PGOT>15DEC031805</PGOT>
<PGCT>15DEC031925</PGCT>
<GOTM>15DEC031825</GOTM>
<PGOT>15DEC261805</PGOT>
<PGCT>15DEC261925</PGCT>
<GOTM>15DEC261825</GOTM>
<GTYP>D</GTYP>
</GTDT>
<GTDT GTNO="2">
<GATE>G33</GATE>
<PGOT>15DEC031805</PGOT>
<PGCT>15DEC031925</PGCT>
<PGOT>15DEC261805</PGOT>
<PGCT>15DEC261925</PGCT>
<GTYP>I</GTYP>
</GTDT>
<GTDT GTNO="3">
<GATE>G23</GATE>
<PGOT>15DEC031805</PGOT>
<PGCT>15DEC031925</PGCT>
<PGOT>15DEC261805</PGOT>
<PGCT>15DEC261925</PGCT>
<GTYP>D</GTYP>
</GTDT>
</FLOP>
@@ -57,7 +57,7 @@ class JacksonXmlCodecTest {
val body = msg.body as FlopPayload
assertEquals("121112312", body.flid)
assertEquals("CA-CA101-A-12DEC031345-D", body.scalars["FFID"])
assertEquals("CA-CA101-A-12DEC261345-D", body.scalars["FFID"])
assertEquals(3, body.collections["GTDT"]!!.size)
assertEquals("G28", body.collections["GTDT"]!![0]["GATE"])
assertEquals("1", body.collections["GTDT"]!![0]["GTNO"])