docs(acm2-75): align static reference data flow
This commit is contained in:
+32
-29
@@ -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 类 FLOP(KEEP + FIX)
|
||||
### US-05 应用 ADFT 与 FLOP(KEEP + 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)。
|
||||
|
||||
Reference in New Issue
Block a user