docs(acm2-74): 补齐 FLOP 逐类语义、静态参考数据与数据结构

自洽与精简:

- specification 补第四种状态词 [我们自证]、验证映射补 INV-14 两行、去 CLM-7/CLM-9 的进度语、补编号空缺说明
- architecture/requirements/implementation 去除逐字复述(领域决策三写句、时间常数排序、C-25/C-26、INV-12/21/22)与参数值重复
- README 与新文档对齐:收报谓词改 ID>W、删不存在的 reference/ 包与 lua/、删 msgx.phase 与 MSGX_REDIS_URI、设计权威口径改 docs/、进度段改指 Plane

内容补齐:

- 新增 implementation.md「动态运行事件(FLOP)」:按 SIS 3.19–3.43 的 25 类逐类映射与空标签语义(含 CNCL 空标签为撤销等),补 RMS→AODB 方向拒绝、ROUT 只保留 4 条、VIPP 忽略等约束;厘清 legacy 29 类与 SIS 25 类的差集
- 新增 implementation.md「静态参考数据」章:13 类参考数据与资源状态的 RTYPE/RKEY、list 与增量合并语义、删除只由 DEL 表达、SLST/REMT/RSTA 机位与登机桥映射
- §11.3 数据结构改为标量分组表与集合明细表(元素键、条数上限、SIS 锚点)
- specification 新增 G-FLOP-DIRECTION / G-FLOP-UNMAPPED / G-REF-DATA;Q8 收窄为真实报文分布与 admin-api 清单
This commit is contained in:
windyboy
2026-09-14 07:34:17 +08:00
parent cedd859bdf
commit 5b7938ac4b
6 changed files with 206 additions and 98 deletions
+16 -14
View File
@@ -69,7 +69,7 @@
4. `MALFORMED` 直接 `DEAD``CODEC_ERROR / UNSUPPORTED / INFRA` 按次数和退避处理,耗尽转 `DEAD(EXHAUSTED)`。不能无限重试未实现类型,也不能立即当非法报文丢弃。
5. 终态判据只有尝试上限(`PARAM:msgx.pipeline.max-attempts`),**没有按时间的毒丸**;调度判断注入 `Clock`。人工重放的可重放范围以 `Q6` 决定的 `R_keep` 下界为准。
6. 主泵在同一 PG 事务提交航班主表/明细、事件与处理结果;终态回填意图通过 `US-09` 同事务保存。任一步失败整体回滚;提交后只重试外部回填,不重复生成业务事件。
7. 领域决策逻辑只读取当前完整态与已解码报文,返回下一完整态和待发事件,不执行 I/O;Processor 作为事务协调器,将状态写入、事件、处理终态与回填意图收敛在同一事务边界内,不直接触碰 Kafka。失败只在持有消息上下文的边界落账,中断向上传递,不作为普通失败吞掉。
7. 决策、事务与落库的职责边界以 [implementation.md](implementation.md)「消息、身份与决策」与 `INV-17` 为准;本条验收面是:失败只在持有消息上下文的边界落账,中断向上传递,不作为普通失败吞掉。
8. 权威存储不可用或未完成恢复时停止业务处理;不能把「整个状态丢失」误判为「单航班不存在」而批量成功结束增量报文。
**前置**`US-01``Q1` 已定单库方向,`Q6` 决定 `R_keep` 下界(重放窗口)。数据库迁移只落自有库。
@@ -92,12 +92,13 @@
**验收标准**
1. `SCHD-ADFT` 与 29 个 FLOP 子类型逐项列入覆盖矩阵,每项有对应的处理器规则与回归测试;未知类型可恢复失败。RESP/DNLD 不计入这批处理器,走 `US-06`
2. 每类固定「输入与前态 → 后态 → msg → schd → 终态」五面样例;区分字段缺失、显式清空、重复报文和主/共享航班。清单 golden 样例按 `Q8` 补齐,不以「已写 29 个类」替代验收。
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 个类」替代验收。
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` 段中当前未映射的字段必须显式列出并逐项定案(补齐映射或声明忽略),不得静默丢弃。
**前置**`US-03`PSDT 另依赖 `US-14``Q1``Q8``Q14`
@@ -131,7 +132,7 @@
2. `KAFKA:schd` 只通过 `flushSchd` 聚合,聚合周期与批上限见 reference;同一 FLID 取批内最新状态,成功确认覆盖对应原事件,失败保持批次可恢复并退避,耗尽可见为 `DEAD`
3. 外部接收成功、本地确认失败或进程重启后允许重发;事件标识跨重发稳定,消费者有去重约定,不宣称端到端恰好一次。
4. 当前 `KAFKA:msg``KAFKA:schd` 的分区键均为 `FLID`schd 逐 `FLID` 发送最新状态,不再是 legacy 的多航班数组。`msg` 是否需按 `SNDR` 分区、发送粒度与去重标识的放置以 `Q4` 定案为准;定案前不宣称单分区之外的顺序保证。
5. 生产强制 `acks=all``enable.idempotence=true``max.in.flight.requests.per.connection=1`;Broker 支持幂等生产协议并完成实际验证,不允许非幂等降级通过验收。
5. 生产强制 `D3` 的三项生产者约束(取值见 [reference.md](reference.md) 参数表);Broker 支持幂等生产协议并完成实际验证,不允许非幂等降级通过验收。
6. 普通/聚合发送失败、确认丢失、批次标记中断和目标阻塞均有测试;DEAD 保留记录并告警。
**前置**`US-03` 事件提交;`Q4`、现网 Broker 验证。wire 不兼容的标识字段不能直接加到现役载荷。
@@ -206,16 +207,17 @@
**前置**`Q1``Q3`;所查询的 `US-05`/`US-06` 状态发布能力。
### US-13 刷新 21 类参考主数据
### US-13 刷新参考主数据
**目标**:业务使用来自 admin-api 的本地参考数据,刷新失败仍有上次可用版本。
**目标**:业务使用来自 AODB 事件与 admin-api 的本地参考数据,刷新失败仍有上次可用版本。
**验收标准**
1. `Q8` 的 21 类清单配置端点、RTYPE/RKEY、字段映射;这是独立于 `US-08` 的数据入口,不另建「参考专用第二 PG」。
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` 表达;参考数据的空标签表示「数据不可用」而非删除,不得套用航班动态的空标签合并规则。
**前置**admin-api 访问契约、`Q8`。可独立于消息处理器开发。
@@ -225,8 +227,8 @@
**验收标准**
1. 保留 `ORMS_STAND / ORMS_STAND_AIRBRIDGE` 两类,与 `US-13` 21 类分开统计;适配器拉取、完整校验后原子发布只读缓存。
2. 近机位产生登机桥值,远机位或清空机位时 `abdg` 为空;一机位多桥、缺失映射与共享航班规则用 golden 固定。
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 或写缓存。
@@ -236,7 +238,7 @@
历史存储确认成功后,才允许删除对应实时航班;逐条隔离坏数据,不能删除写历史失败的集合。判史规则与保留期、业务时区、历史写入与删除事件之间的恢复协议需在启用前完成 golden 对拍。
阶段 A 不依赖 ES,不启用 `PROJECTION_REBUILD`。历史清理作业在历史存储未接通(`PARAM:msgx.history.history-store-enabled=false`)时删除 0 条;红线见 [implementation.md](implementation.md)「生命周期」。
阶段 A 不依赖 ES,不启用 `PROJECTION_REBUILD`。历史清理作业在历史存储未接通(`PARAM:msgx.history.history-store-enabled` 关闭)时删除 0 条;红线见 [implementation.md](implementation.md)「生命周期」。
## 3. 运行与切流验收
@@ -259,16 +261,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、29 类 FLOP、完整航班态及主/共享关系 | `INV-11``INV-22``Q8``Q13``Q14``Q16``G-FLOP-IDEMPOTENT``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-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` |
| `US-07` | Kafka 至少一次投递、同 `FLID` 保序、schd 聚合、失败与清理 | `D3``INV-10``C-29``Q4``G-DELIVERY-ORDER` |
| `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` | 21 类参考数据完整校验、原子发布、失败保旧 | `Q8` |
| `US-14` | 机位/登机桥映射原子发布,PSDT 只读计算 | `Q8` |
| `US-13` | SIS 13 类参考数据与资源状态、admin-api 21 类:完整校验、原子发布、失败保旧 | `Q8``G-REF-DATA` |
| `US-14` | 机位/登机桥映射原子发布,PSDT 只读计算 | `Q8``G-REF-DATA` |
| `US-15` | 阶段 B 历史归档成功后清场及删除事件恢复 | `D1``INV-18``Q9``G-FLIGHT-HIST-RETENTION` |
| `OPS-1` | 真实适配器、配置与单写者拒启,失权停写,安全停机 | `D2``PRE-5` |
| `OPS-2` | 真实健康、积压/失败指标、告警、受控处置与敏感信息保护 | reference.md |