- 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/归档顺序不变性回归测试
32 lines
1.2 KiB
Kotlin
32 lines
1.2 KiB
Kotlin
package com.gzzn.omms.msgexchange.domain
|
||
|
||
import com.gzzn.omms.msgexchange.domain.flight.MergeChange
|
||
import com.gzzn.omms.msgexchange.domain.flight.ScheduleRecord
|
||
import java.time.LocalDate
|
||
|
||
/**
|
||
* 处理决策(docs/flight-state.md)——解码与校验进,落库计划出,纯数据不触碰 DB/Kafka。
|
||
* 事务边界、PIPELINE_LOCK、事件登记由处理层执行(§5.1/§6)。
|
||
*/
|
||
sealed interface Decision {
|
||
/**
|
||
* SCHD DNLD/RESP:已过 §5.2 报文完整性校验的记录集。
|
||
* §5.3 归属校验与 §5.4 upsert 在事务内执行(需读既有 OPERATION_DAY)。
|
||
*/
|
||
data class Schedule(
|
||
val records: List<ScheduleRecord>,
|
||
/** 报文覆盖运营日范围(单日快照时两者相等;无法确定时为 null → 整包拒绝)。 */
|
||
val scopeStart: LocalDate?,
|
||
val scopeEnd: LocalDate?,
|
||
) : Decision
|
||
|
||
/** FLOP 增量合并(§6.1)/ ADFT(§2.1 语义待确认,按 MergeChange 承载)。 */
|
||
data class Dynamic(val change: MergeChange) : Decision
|
||
|
||
/** FDEL 标记删除(§6.2)。 */
|
||
data class Delete(val flid: String) : Decision
|
||
|
||
/** 幂等无变化(重复/迟到等,记成功但不推进任何状态)。 */
|
||
data object NoOp : Decision
|
||
}
|