docs(acm2-75): align static reference data flow

This commit is contained in:
windyboy
2026-09-14 08:28:47 +08:00
parent 5b7938ac4b
commit 0fbdf381b2
6 changed files with 88 additions and 82 deletions
+32 -29
View File
@@ -5,12 +5,14 @@
- `US-01``US-15`(三级标题定义)、`OPS-1``OPS-4`(注册表定义);
- 需求覆盖与依赖关系。
代码入口与参数取值不在本文件:前者见 [reference.md](reference.md)「模块与代码入口」,后者见其参数表。前提、不变量、契约与偏差见 [specification.md](specification.md);机制航班域见 [implementation.md](implementation.md)。工程纪律(工具链、测试设施、提交规范)以根 `AGENTS.md` 为唯一出处。
代码入口与参数取值不在本文件:前者见 [reference.md](reference.md)「模块与代码入口」,后者见其参数表。前提、不变量、契约与偏差见 [specification.md](specification.md);机制航班域与静态参考数据见 [implementation.md](implementation.md)。工程纪律(工具链、测试设施、提交规范)以根 `AGENTS.md` 为唯一出处。
## 1. 范围与非目标
**阶段 A 闭合**`US-01``US-14``OPS-1``OPS-4`
**本版本主要新增能力**:从入站 SIS 消息解析、校验并发布静态参考数据(`US-13`),供 admin-api 从处理后的业务数据库读取(`US-14`)。
**非目标**
- 航班当前态只存自有 PG;不引入 Redis、阶段 A 的 ES 投影、新业务库、并行主泵或分布式锁。
@@ -18,6 +20,7 @@
- 生产保持单活动实例;不承诺端到端恰好一次、跨 `FLID` 顺序或未经验证的 Oracle 11g 支持。
- `US-15` 未启用前遵守 `D1`:历史写入未确认成功时航班清场删除 0 条。
- 不生成上游业务报文,不替代 CIIMS/AODB,不提供 AODB 主数据编辑能力。
- 本网关不调用 admin-api,也不从 admin-api 拉取、补全或合并任何数据;admin-api 只从本网关处理后的 PostgreSQL(或通过适配验证的 Oracle)读取。
## 2. 阶段 A 用户故事
@@ -80,27 +83,27 @@
**验收标准**
1. 解码 META 后、处理器分派前,大小写不敏感匹配 `TYPE-STYP``TYPE-*`;基线为 `LDM-* / REGN-* / RSTA-* / EROR-*`,不混用 `ERROR`。转 `SKIPPED` 前必须已完成身份绑定(`US-03``INV-9`),忽略报文照常绑定身份。
1. 解码 META 后、处理器分派前,大小写不敏感匹配 `TYPE-STYP``TYPE-*`;基线为 `LDM-* / EROR-*`,不混用 `ERROR``REGN``RSTA``US-13` 的参考数据入口,不得按忽略规则截断。`SKIPPED` 前必须已完成身份绑定(`US-03``INV-9`),忽略报文照常绑定身份。
2. 命中后转 `SKIPPED`,记录 `ignored:<rule>` 和计数;不更新航班、不创建业务通知。
3. 通过 `US-09` 保存回填意图;命中、未命中、大小写和重扫均有测试。合法忽略报文不应因 `MsgKind` 尚不能表达它而先解码失败。
**前置**`US-03` 解码/终态接口、`US-09`
### US-05 应用 ADFT 与 29 类 FLOPKEEP + FIX
### US-05 应用 ADFT 与 FLOPKEEP + FIX
**目标**:增量报文正确更新航班及主/共享关系,并生成符合现役语义的通知。
**验收标准**
1. 动态子类型的清单以 SIS `SIS:3.19``SIS:3.43` 为权威(25 类),逐类映射、空标签语义与方向约束见 [implementation.md](implementation.md)「动态运行事件」;每类必须有回归用例。legacy 的「29 类」计数与 SIS 的 25 类不是同一集合:SIS 未定义 legacy 处理的 7 类、SIS 定义而 legacy 无处理器的 3 类,必须逐条列出并以真实报文确认(`Q8`)。校验与合并是同一套通用逻辑,逐类差异只体现在规则与用例上。未知类型可恢复失败。RESP/DNLD 不计入这批,`US-06`
2.类固定「输入与前态 → 目标字段/集合 → 空标签结果 → 终态与事件」样例;区分字段缺失、显式清空、撤销语义(如 `CNCL` 空标签是撤销而非清除)与重复报文。「空 = 清除」只适用于 SIS 逐类写明该语义的字段,不得统一套用。清单与 golden 样例按 `Q8` 补齐,不以「已写 29 个类」替代验收
1. 动态子类型以 SIS `SIS:3.19``SIS:3.43` 的 25 类为权威;逐类字段、空标签、方向与处理例外见 [implementation.md](implementation.md)「动态运行事件」。SIS 未定义 legacy 处理的类型只作待对拍候选,按 `Q8` 定案;RESP/DNLD 走 `US-06`
2.个启用子类型必须有「输入与前态 → 目标状态 → 终态与事件」golden,并覆盖字段缺失、显式清空、重复报文和不存在/已删除航班。未知子类型必须按 `UNSUPPORTED` 失败,不能进入通用合并
3. 对按 KEEP 规则需忽略的不存在航班,以 `SUCCEEDED` 无副作用结束,并由 `US-09` 回填;ADFT 建航班等行为按各类型矩阵执行。航班当前态以自有 PG 为唯一权威,重启即恢复,不存在 Redis 全损后白名单无法找回的损坏路径。
4. 共享航班更新与删除级联语义以 [implementation.md](implementation.md)「删除与重建」为规范(共享航班通知、主航班 `MAFL` 更新、级联删除、原子变更;不出现主已删、子残留);本条目验收实现不偏离该规范,目标不存在时幂等成功。
5. ADFT/FDEL 的值相等比较与半状态禁止规则见 [implementation.md](implementation.md)「删除与重建」。
6. PSDT 通过 `US-14` 的只读映射计算 `abdg`处理器不直接调用 admin-api。
7. 方向、截断与未映射字段以 SIS 为准:柜台、转盘、滑槽、登机门、计划机位五类的 AODB 方向报文必须拒绝(只从日计划快照接受);`ROUT` 只保留 4 条并忽略 `SCAT`/`SCDT`XSD `FLOP` 段中当前未映射的字段必须显式列出并逐项定案(补齐映射或声明忽略),不得静默丢弃。
6. PSDT 只更新消息携带的机位分配;登机桥编码只按 SIS 消息中的 `ABTM.ABDG` 处理,不从 admin-api 查询或派生
7. 方向、截断与未映射字段必须符合「动态运行事件」;当前实现偏差由 `G-FLOP-DIRECTION``G-FLOP-UNMAPPED` `G-FLOP-SEMANTICS` 统一登记,不得静默丢弃或误处理
**前置**`US-03`PSDT 另依赖 `US-14``Q1``Q8``Q14`
**前置**`US-03``Q1``Q8``Q14`
### US-06 导入 RESP/DNLD 日计划快照
@@ -145,7 +148,7 @@
**验收标准**
1. 覆盖 14 类 RQRD 参考请求和 1 类 RQFD-NONE;逐类名称、编码和映射见 `Q8`,不与 admin-api 的 21 类混算
1. 覆盖 14 类 RQRD 参考请求和 1 类 RQFD-NONE;逐类名称、编码和映射见 `Q8`
2. 先持久化 `PENDING` 与出站意图;COUTMSGS 确认落信后关联其 ID 并标 `SENT`,不宣称对方已发送。落信成功而 PG 未确认时可恢复,不能盲目重发。
3. 同类开放请求最多一个,新请求使旧请求 `EXPIRED`,并发登记不产生两个开放请求。从确认落信的发送时间起算,超时值按 `Q5``PENDING`/`SENT` 均不得成为永不超时的死分支。
4. 优先按已确认的 SEQN 回显匹配;无回显的降级匹配按 `Q5` 明确风险,只接受已发送开放请求且 `DTTM ≥ SENT_AT`。统一转换为可比较的时间,不能把报文日期数字直接与 epoch 毫秒比较。
@@ -207,32 +210,32 @@
**前置**`Q1``Q3`;所查询的 `US-05`/`US-06` 状态发布能力。
### US-13 刷新参考数据
### US-13 从 SIS 消息刷新静态参考数据
**目标**业务使用来自 AODB 事件与 admin-api 的本地参考数据刷新失败仍上次可用版本。
**目标**消费 AODB 经共享信箱投递的 SIS 消息,形成业务可用的本地静态参考数据刷新失败仍保留上次可用版本。
**验收标准**
1. 覆盖 SIS `SIS:3.1``SIS:3.14` 的 13 类参考数据与资源状态类别、`RTYPE`/`RKEY` 与结构见 [implementation.md](implementation.md)「静态参考数据」),以及 admin-api 的 21 类;两条来源的清单、字段映射与覆盖优先级按 `Q8` 确认。这是独立于 `US-08` 的数据入口,不另建「参考专用第二 PG」。
2. `(RTYPE,RKEY)` 幂等写 `REF_MASTER`,记录 SOURCE、刷新时间和批次;单类完整校验后发布,失败不暴露半批
3. 一类失败不破坏其他类或该类旧版本;同类由 AODB/admin-api 都提供时明确覆盖优先级,全量刷新时明确已删除项的处理,不能仅靠 SOURCE 日志解决冲突
4. 影子默认不主动刷新生产数据;需要参考样本时显式导入隔离副本
5. 入站按 `STYP` 区分全量与增量:全量报文按类整体发布,增量报文按 `(RTYPE,RKEY)` 整体覆盖,删除只由 `DEL` 表达;参考数据的空标签表示「数据不可用」而非删除,不得套用航班动态的空标签合并规则
1. 通过 `CMINMSGS` 消费 SIS `SIS:3.1``SIS:3.14` 的 13 类参考数据与资源状态消息;类别、`RTYPE`/`RKEY` 与结构见 [implementation.md](implementation.md)「静态参考数据」。这是独立于 `US-08` 请求入口的消息处理能力,不另建「参考专用第二 PG」。
2. 静态参考数据只能来自上述 SIS 消息,禁止从 admin-api 拉取、补全或合并;admin-api 仅作为处理结果的下游读取方
3. `(RTYPE,RKEY)` 幂等写 `REF_MASTER`,记录消息来源、刷新时间和批次;单类完整校验后发布,失败不暴露半批
4. 一类失败不破坏其他类或该类旧版本;`DNLD`/`RESP` 的全量替换与 `ADD`/`UPD`/`DEL` 的增量合并严格按消息语义执行
5. 影子默认不主动刷新生产数据;需要参考样本时显式导入隔离副本
6. `SIS:3.1``SIS:3.13``STYP` 区分全量与增量;`RSTA` 遵守 `SIS:3.14` 的单条 `DNLD` 与多条 `RESP` 语义,不把 `DNLD` 当作全量替换。参考数据的空标签表示「数据不可用」而非删除,不得套用航班动态的空标签合并规则。
**前置**admin-api 访问契约、`Q8`。可独立于消息处理器开发
**前置**`US-01``US-03``Q8`。必须复用统一的入站消息管道、身份绑定和处理终态
### US-14 提供机位与登机桥映射
### US-14 向 admin-api 提供数据库读取结果
**目标**PSDT 在不调用外部 HTTP 的情况下得到完整映射,正确计算 `abdg`
**目标**admin-api 从本网关处理后的业务数据库读取航班状态与静态参考数据,网关与 admin-api 之间不存在反向调用
**验收标准**
1. 机位主数据以 SIS `SLST` 为权威(机位性质取 `REMT`、可用性取 `RSTA`),登机桥关系只有 admin-api 来源(`ORMS_STAND / ORMS_STAND_AIRBRIDGE`),与 `US-13` 的类别分开统计;适配器拉取、完整校验后原子发布只读缓存
2. 近机位产生登机桥值,远机位或清空机位时为空;一机位多桥、缺失映射与共享航班规则用 golden 固定。**登机桥编码的落点必须先定案**:协议内它是 `ABTM` 元素的 `ABDG`legacy 另派生一个航班级 `abdg`;定案前不得把派生值当成协议字段处理
3. admin-api 不可用时使用最后可用版本;无可用版本或映射不完整时明确失败,不用空映射冒充正常清空,也不发布半批
4. 处理器输入包含所需只读参考视图,不允许其直接 HTTP 或写缓存。
1. 数据流固定为「SIS 消息 → 本网关处理 → PostgreSQL / 经验证的 Oracle → admin-api 只读」;禁止实现 admin-api → 本网关的 HTTP、数据库或缓存取数路径
2. admin-api 只能读取已原子提交的航班状态与静态参考数据,不得看到参考数据半批,也不得成为网关处理成功的前置条件
3. admin-api 的物理表、视图和查询契约按 `Q8` 定案;不得据本需求改动共享 MySQL schema
**前置**机位/桥数据契约及 `Q8`;不要求 `US-13` 全部完成
**前置**`US-13``Q1``Q8`
### US-15 历史航班清场(DEFERRED,阶段 B)
@@ -261,16 +264,16 @@
| `US-02` | 安全兼容注入,落信确认与业务完成分离 | `C-28``Q3``G-COMPAT-HTTP` |
| `US-03` | 严格 FIFO、安全解码、身份去重、事务提交与持久重试 | `INV-3``INV-6``INV-10``INV-17``Q6``Q11``Q15` |
| `US-04` | 忽略报文在身份绑定后无业务副作用终结并回填 | `INV-8``INV-9` |
| `US-05` | ADFT、FDEL、SIS 25 类 FLOP、完整航班态及主/共享关系 | `INV-11``INV-22``Q8``Q13``Q14``Q16``G-FLOP-IDEMPOTENT``G-FLOP-DIRECTION``G-FLOP-UNMAPPED``G-MAFL``G-SRVT-VIPF` |
| `US-05` | ADFT、FDEL、SIS 25 类 FLOP、完整航班态及主/共享关系 | `INV-11``INV-22``Q8``Q13``Q14``Q16``G-FLOP-IDEMPOTENT``G-FLOP-DIRECTION``G-FLOP-UNMAPPED``G-FLOP-SEMANTICS``G-MAFL``G-SRVT-VIPF` |
| `US-06` | DNLD/RESP 整包快照、请求守卫、迟到应答隔离 | `INV-12``INV-15``INV-19``Q5``Q13``G-RESP-GUARD` |
| `US-07` | Kafka 至少一次投递、同 `FLID` 保序、schd 聚合、失败与清理 | `D3``INV-10``C-29``Q4``G-DELIVERY-ORDER` |
| `US-07` | Kafka 至少一次投递、同 `FLID` 保序、schd 聚合、失败与清理 | `D3``INV-10``C-29``Q4` |
| `US-08` | 14 类 RQRD、1 类 RQFD、出站落信、开放请求唯一、匹配与超时 | `C-23``C-24``Q3``Q5``Q8``Q10``Q14``G-REQ-TRACK``G-REQ-OPEN-UNIQUE``G-REQ-TRACK-RETENTION` |
| `US-09` | 终态回填意图、后台补偿、四结果、放弃与人工恢复 | `INV-7``INV-8``C-5``C-8``Q7``Q9``C-6` 不成立时闭合 `G-REPLAY-CHANNEL` |
| `US-10` | 可查询、可预览、白名单重放、风险预检、授权与审计 | `CLM-3``Q6` |
| `US-11` | 已了结终态归档、去重影子、竞态复查及独立保留期 | `D4``C-14``C-16``G-PROC-HST``G-HST-RETENTION` |
| `US-12` | 从 PG 权威态查询实时主航班,固定契约且依赖失败不伪装为空 | `INV-11``Q3` |
| `US-13` | SIS 13 类参考数据与资源状态、admin-api 21 类:完整校验、原子发布、失败保旧 | `Q8``G-REF-DATA` |
| `US-14` | 机位/登机桥映射原子发布,PSDT 只读计算 | `Q8``G-REF-DATA` |
| `US-13` | SIS 消息中的 13 类参考数据与资源状态:完整校验、原子发布、失败保旧 | `Q8``G-REF-DATA` |
| `US-14` | admin-api 从本网关处理后的 PG / 经验证 Oracle 只读消费,不形成反向依赖 | `Q1``Q8``G-REF-DATA` |
| `US-15` | 阶段 B 历史归档成功后清场及删除事件恢复 | `D1``INV-18``Q9``G-FLIGHT-HIST-RETENTION` |
| `OPS-1` | 真实适配器、配置与单写者拒启,失权停写,安全停机 | `D2``PRE-5` |
| `OPS-2` | 真实健康、积压/失败指标、告警、受控处置与敏感信息保护 | reference.md |
@@ -282,7 +285,7 @@
`Q` 的定义与完整表述只在本文件之外一处:[specification.md](specification.md)「待确认事项台账」。此处只列与验收直接相关的依赖:
- `US-01` / `US-09` 的验收依赖 `Q2`(发现完整性)与 `C-8`(清除前提);
- `US-06` / `US-13` / `US-14` 依赖 `Q8`(逐类清单)与 `Q13`(字段缺失语义);
- `US-06` / `US-13` 依赖 `Q8`(逐类清单)与 `Q13`(字段缺失语义);`US-14` 依赖 `Q1``Q8`(下游数据库读取契约);
- `US-08` 依赖 `Q3`HTTP 契约)、`Q4`Kafka wire)、`Q5`(请求匹配)、`Q10`(出站契约);
- `US-10` 依赖重放白名单与 `CLM-3`(重放安全);
- `US-15` 依赖 `Q9`(清除授权与 DDL)。