diff --git a/docs/implementation.md b/docs/implementation.md index 24ac012..bab8f38 100644 --- a/docs/implementation.md +++ b/docs/implementation.md @@ -379,6 +379,7 @@ PG 是航班数据源(`INV-5`);Redis 从 PG 同步,处理完成前写入 ### 12.2 动态运行事件(FLOP) 只改报文带的字段/集合(见「字段与集合」)。`STYP` 须命中白名单;未知 → `SKIPPED`(`US-03` AC2)。逐类规则见 `G-FLOP-IDEMPOTENT`。 +备降(`FDIV`)与返航(`FRET`)的解码件(wire DTO、未映射路径)已存在,但真实子类型报文在分派层即判不支持并跳过,按 11.3.1 不留证据;只有白名单报文里顺带的同名段才能写入未映射表。卡点是分派放行(`Q3`),不是补解码。 **现行白名单 7 类**(`US-05` AC1):`ABTM`、`DELY`、`PSDT`、`CKDT`、`CLDT`、`CHDT`、`GTDT`。下表其余行是闭合目标(`Q3`),不是现行白名单。 @@ -396,11 +397,9 @@ PG 是航班数据源(`INV-5`);Redis 从 PG 同步,处理完成前写入 | `SIS:3.26` | `CHDT` | `CHDT` 集合 | 空 `` = 现无滑槽分配;AODB 实际会发,照常接收处理(`US-05` AC3) | | `SIS:3.27` | `CNCL` | `CNCL` 标量 | 空 = **撤销**上一次取消(不是清空时间) | | `SIS:3.28` | `ESTT` | `ESTT` 标量 | 空 = 删除预计时间 | -| `SIS:3.29` | `FDEL` | 走删除路径(「删除与重建」) | 恒为空标签 | -| `SIS:3.30` | `FDIV` | `FDIV`(`DDES`/`DDIR`),当前未映射(`G-FLOP-UNMAPPED`) | 空 `DDES=""` = 清除转场标志 | +| `SIS:3.30` | `FDIV` | `FDIV`(`DDES`/`DDIR`)写未映射表(`G-FLOP-UNMAPPED`);真实子类型报文现行在分派层判不支持并跳过,不留证据,待 `Q3` 放行 | 空 `DDES=""` = 清除转场标志 | | `SIS:3.31` | `FINT` | `FINT` 标量 | 空 = 删除最终时间 | -| `SIS:3.32` | `FLIN` | `FLIN` 标量 | 字段为 M,未写明空语义 | -| `SIS:3.33` | `FRET` | `FRET`(`REID`),当前未映射(`G-FLOP-UNMAPPED`) | 空 = 清除返航标志 | +| `SIS:3.33` | `FRET` | `FRET`(`REID`)写未映射表(`G-FLOP-UNMAPPED`);真实子类型报文现行在分派层判不支持并跳过,不留证据,待 `Q3` 放行 | 空 = 清除返航标志 | | `SIS:3.34` | `GTDT` | `GTDT` 集合 | 空 `` = 现无登机门分配;`GOTM`/`GCTM` 缺失 = 未分配开放/关闭时间;AODB 实际会发,照常接收处理(`US-05` AC3) | | `SIS:3.35` | `LACL` | `LACL` 标量;非空时设置最后通知状态 | 空 = 清除最后通知时间并重置最后通知状态 | | `SIS:3.36` | `MAXP` | `MAXP` 标量 | 空 = 删除最大载客数 | @@ -428,7 +427,7 @@ ADFT:Set-only(`US-04` AC2),未带字段不清。有 `SODT` 则算 `OPERA ### 12.5 生命周期 -运营日过去 ≠ 航班结束。历史清理候选按 `US-14` AC2 的五类已结束条件选取(共享求值器 `HistoryRules.isEnded`;`SODT`/`CNCL`/`NAAT`/`NEAT` 解析不出一律不命中,宁漏删不误删);先写 ES 再删,失败删 0 行(`D1`)。备降条件依赖 `FDIV` 段(`DDES`/`DDIR`),该段落地(`Q3`、ACM2-100)前恒不命中。 +运营日过去 ≠ 航班结束。历史清理候选按 `US-14` AC2 的五类已结束条件选取(共享求值器 `HistoryRules.isEnded`;`SODT`/`CNCL`/`NAAT`/`NEAT` 解析不出一律不命中,宁漏删不误删);先写 ES 再删,失败删 0 行(`D1`)。备降条件依赖 `FDIV` 段(`DDES`/`DDIR`)落未映射表后的读取路径,该路径待 `Q3` 放行(ACM2-100)前恒不命中。 ## 13. 静态参考数据 diff --git a/docs/reference.md b/docs/reference.md index 4131fda..20b45c4 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -63,7 +63,7 @@ | `msgx.outbound.routing-rqrd` | `OMMSRQRD` | `RQRD` 写入 `COUTMSGS` 使用的路由标识 | 当前实现 | | `msgx.history.planned-age-days` | `3` 天 | `US-14` AC2 条件 1:计划时间早于当前超过该天数视为已结束 | `US-14` AC2 | | `msgx.history.cancelled-hours` | `1` 小时 | `US-14` AC2 条件 2:取消时间早于当前超过该窗口视为已结束 | `US-14` AC2 | -| `msgx.history.diverted-hours` | `1` 小时 | `US-14` AC2 条件 3:备降且计划时间早于当前超过该窗口;备降依据 `FDIV`(`DDES`/`DDIR`)落地前不参与判定(`Q3`、ACM2-100) | `US-14` AC2 | +| `msgx.history.diverted-hours` | `1` 小时 | `US-14` AC2 条件 3:备降且计划时间早于当前超过该窗口;备降依据 `FDIV`(`DDES`/`DDIR`)落未映射表后的读取路径待 `Q3` 放行(ACM2-100),落地前不参与判定 | `US-14` AC2 | | `msgx.history.arrived-hours` | `1` 小时 | `US-14` AC2 条件 5:实际到港时间早于当前超过该窗口视为已结束(条件 4 离港不设窗口) | `US-14` AC2 | | `msgx.history.snap-log-retention-days` | `90` 天 | 日计划处理记录保存多久 | 暂定 | diff --git a/src/main/kotlin/com/gzzn/omms/msgexchange/config/HistoryProps.kt b/src/main/kotlin/com/gzzn/omms/msgexchange/config/HistoryProps.kt index 9829d2b..435990b 100644 --- a/src/main/kotlin/com/gzzn/omms/msgexchange/config/HistoryProps.kt +++ b/src/main/kotlin/com/gzzn/omms/msgexchange/config/HistoryProps.kt @@ -13,7 +13,7 @@ class HistoryProps { /** * `US-14` AC2 条件 3 的窗口:备降(应降本场、实际降其他机场)且计划时间早于当前超过这么多小时。 - * 备降依据是 `FDIV` 段(`DDES`/`DDIR`),该段尚未解码落库(`Q3`、ACM2-100); + * 备降依据是 `FDIV` 段(`DDES`/`DDIR`)落未映射表后的读取路径,该路径待 `Q3` 放行(ACM2-100); * 落地前本条件不参与候选判定,参数先行登记。 */ var divertedHours: Long = 1 diff --git a/src/main/kotlin/com/gzzn/omms/msgexchange/domain/flight/FlightModel.kt b/src/main/kotlin/com/gzzn/omms/msgexchange/domain/flight/FlightModel.kt index 757119a..c4b5708 100644 --- a/src/main/kotlin/com/gzzn/omms/msgexchange/domain/flight/FlightModel.kt +++ b/src/main/kotlin/com/gzzn/omms/msgexchange/domain/flight/FlightModel.kt @@ -69,8 +69,8 @@ data class FlightSnapshot( * 1. 计划时间(SODT)早于当前超过 [plannedAgeDays] 天; * 2. 取消时间(CNCL)早于当前超过 [cancelledHours] 小时; * 3. 备降(应降本场、实际降其他机场)且计划时间早于当前超过 [divertedHours] 小时 - * ——**当前不可判**:备降依据是 `FDIV` 段的 `DDES`/`DDIR`,该段不在现行 FLOP 白名单、 - * 也无 DTO 与存储列(`Q3`、ACM2-100),落地前本条件恒不命中(漏删优于误删); + * ——**当前不可判**:备降依据是 `FDIV` 段的 `DDES`/`DDIR` 落未映射表后的读取路径, + * 该路径待 `Q3` 放行(ACM2-100)前恒不命中(漏删优于误删); * 4. 离港:计划日期早于当日、有实际离港时间(NEAT)且不晚于当前; * 5. 到港:计划日期早于当日、有实际到港时间(NAAT)且早于当前超过 [arrivedHours] 小时。 */ diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 3790a3c..c48f0e3 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -32,7 +32,7 @@ msgx: history: # 历史清理判据窗口(US-14 AC2 五类已结束条件)与留痕保留期 planned-age-days: 3 # 条件 1:计划时间早于当前超过 3 天 cancelled-hours: 1 # 条件 2:取消时间早于当前超过 1 小时 - diverted-hours: 1 # 条件 3:备降窗口;FDIV(DDES/DDIR)落地前不参与判定(Q3、ACM2-100) + diverted-hours: 1 # 条件 3:备降窗口;FDIV 落未映射表后的读取路径落地前不参与判定(Q3、ACM2-100) arrived-hours: 1 # 条件 5:实际到港早于当前超过 1 小时 snap-log-retention-days: 90 history-store-enabled: false # 未接通历史存储时 HISTORY_SWEEP 删 0 条