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
+11 -10
View File
@@ -28,6 +28,7 @@
| 已回填 | 本系统已把处理标记写回该信箱行。 |
| 投递确认 | 投递目标已接受且本地 `MSG_EVENT` 已置 `SENT`;不表示业务消费者已消费。 |
| 自有 PG | 本系统唯一的业务数据库 PostgreSQL;与信箱之间不存在跨库事务。 |
| admin-api | 本网关处理结果的下游只读消费者;从选定的业务数据库读取,不向本网关提供数据。 |
管道内部术语(`W`、队头、终态、回填意图)定义在 [implementation.md](implementation.md)「术语与持久化记录」。
@@ -126,7 +127,7 @@
- **INV-17** 状态变更、待发事件、处理终态与回填意图在同一 PG 事务内原子提交。
- **INV-18** 航班表的写者集合是「主泵处理器」与「历史清理」;两者必须互斥(同一 `PIPELINE_LOCK`,或清理在同一事务内复查判据后再删除),不得出现清理删除与处理器更新同一 `FLID` 的竞态。
- **INV-19** 整包校验失败或运营日冲突时整包不落地,既有状态与版本保持不变。
- **INV-20** 处理器幂等:同一消息重复执行只产生一次业务效果。身份唯一只防「重复记录」,不防「重新执行」;29 类 FLOP 幂等矩阵补全前,本条**不可声明**`G-FLOP-IDEMPOTENT`)。
- **INV-20** 处理器幂等:同一消息重复执行只产生一次业务效果。身份唯一只防「重复记录」,不防「重新执行」;SIS 25 类与经 `Q8` 定案启用的 legacy 子类型完成逐类幂等矩阵前,本条**不可声明**`G-FLOP-IDEMPOTENT`)。
- **INV-21** `MAFL` 是派生投影:内容恒等于「`STATE = ACTIVE``MAID = 主航班 FLID`」的子航班集合(元素 `FLID` + `FLNO`,按 `FLID` 升序),不落库、不从入站解析;自引用与悬挂引用不入投影。
- **INV-22** 子航班集合变化必须使涉及的主航班在同一事务内推进 `STATE_VERSION` 并登记主航班事件;投影只进不退,版本不推进即被下游丢弃。
@@ -134,11 +135,11 @@
| 编号 | 主张 | 依赖 | 当前可否声明 | 挂起原因 |
|---|---|---|---|---|
| CLM-3 | 重放不产生重复业务副作用 | INV-20、`G-FLOP-IDEMPOTENT` | **不可** | 29 类 FLOP 幂等矩阵未补全;重放不恢复历史顺序 |
| CLM-3 | 重放不产生重复业务副作用 | INV-20、`G-FLOP-IDEMPOTENT` | **不可** | 启用的 FLOP 子类型幂等矩阵未补全;重放不恢复历史顺序 |
| CLM-4 | 回填不会被短暂故障放弃:最终打标,或进入可对账的放弃清单 | INV-8、`C-5``C-8` | **可声明(有条件)** | 条件:`R` 之前不放弃;`MISSING_ROW` 立即放弃并告警;放弃行须经人工对账才可用于清除判定(`C-8`)。原文保留另见 CLM-5 |
| CLM-5 | 重放窗口内原文仍可读 | `C-6``C-7``Q7``Q9` | **不可** | 清除语义与保留期未确认;「打标即清除」下无补救 |
| CLM-6 | 单实例内严格 FIFO | PRE-5、INV-3 | **可**(限于单活动实例) | — |
| CLM-7 | 事件投递在同一 `FLID` 内保序 | INV-10、投递设计 | **可**(跨 `FLID` 不承诺) | 只声明同一 `FLID` 内保序;按 `FLID` 的隔离边界与 `Q4` 定案、`G-DELIVERY-ORDER` 闭合一致 |
| CLM-7 | 事件投递在同一 `FLID` 内保序 | INV-10、投递设计 | **可**(跨 `FLID` 不承诺) | 实现当前按目标级全序投递,收敛到按 `FLID` 属投递改造 |
| CLM-8 | 出站交付承诺只到「落信」 | `C-24``Q10` | **可**(仅落信语义) | 消费方与 ACK 列语义未确认 |
| CLM-9 | 处理标记延迟由调度周期决定 | — | **不可** | 扫描周期不等于完成时限;批次积压、单行超时与历史作业都会延长实际延迟 |
| CLM-10 | 容量量级假设(单实例、入站日消息量千级到万级、单报文 ≤ 10⁴ 字节) | — | **不可** | 未实测,无生产负载数据;解除条件:取得现役信箱日量、峰值与单报文上限后重估 |
@@ -168,7 +169,7 @@
| INV-12 / INV-13 | PG 事务失败、快照重复或迟到 | 整体回滚重试、不重复推进版本、不回退状态、不误删增量航班 |
| INV-12 | 运营日冲突 | 整包 `DEAD(PROTOCOL)`,既有状态与版本不变 |
| INV-14 | 未携带字段保留、显式清空才清除;集合按完整合并结果写入 | `FlightStateEngineTest`「day plan merges scalars overwriting overlaps retaining absent and clearing on explicit empty」「flop merge retains absent scalars and collections」;`FdelAndAdftProcessorTest`「ADFT merge does not clear absent scalars」 |
| INV-14 | FLOP 逐类空标签语义(清除、撤销、集合清空)与「未携带不清空」的区分 | 逐类用例见 [implementation.md](implementation.md)「动态运行事件」;`G-FLOP-DIRECTION``G-FLOP-UNMAPPED` |
| INV-14 | FLOP 逐类空标签语义(清除、撤销、集合清空)与「未携带不清空」的区分 | 逐类用例见 [implementation.md](implementation.md)「动态运行事件」;`G-FLOP-DIRECTION``G-FLOP-UNMAPPED``G-FLOP-SEMANTICS` |
| INV-15 | 缺席不删除 | 需分别断言 FDEL 与清理路径 |
| INV-16 | 外部副作用失败后本地结果不变 | 需用例 |
| INV-17 | 业务型终态四件套同事务 | 需真实 PG 用例 |
@@ -176,7 +177,7 @@
| INV-19 | 整包协议拒绝(声明数不符、运营日冲突) | `DEAD(PROTOCOL)`,整包不落地、整体回滚、既有状态不变 |
| INV-21 | `MAFL` 投影与 `ACTIVE` 子航班集合一致(子航班删除后退出、自引用与悬挂引用不入、顺序确定) | `G-MAFL`:投影未实现 |
| INV-22 | 子航班新增、删除、`MAID` 迁移时主航班版本与事件 | `G-MAFL`:主/共享级联未实现 |
| INV-20 / CLM-3 | 重放同一条消息 | 阻塞于 29 类 FLOP 幂等矩阵 |
| INV-20 / CLM-3 | 重放同一条消息 | 阻塞于启用的 FLOP 子类型逐类幂等矩阵 |
| — | 请求超时、无匹配 RESP、时间单位不一致 | 不误用迟到应答、不提前完成请求 |
| — | stub 误配置、重复实例、停机中断 | 生产拒绝不安全启动,工作线程能正确退出 |
@@ -193,7 +194,7 @@
| `G-RESP-GUARD` | `RESP` 应答守卫未实现,当前与 `DNLD` 无差别进入快照写入 | 请求匹配闭环;`C-23` |
| `G-REQ-TRACK` | `REQ_TRACK` 无运行时协调器:出站适配、请求编码、超时与应答匹配未实现 | `US-08``C-24` |
| `G-PROC-HST` | `PROC_STATE_HST` 未建表,终态归档未落地 | `US-11`;归档能力 |
| `G-FLOP-IDEMPOTENT` | 29 类 FLOP 幂等矩阵未补全 | `INV-20``CLM-3` |
| `G-FLOP-IDEMPOTENT` | SIS 25 类与经 `Q8` 定案启用的 legacy 子类型尚无完整逐类幂等矩阵 | `INV-20``CLM-3` |
| `G-REPLAY-CHANNEL` | 「打标即清除」语义下的独立原文保留通道未设计 | `CLM-5` |
| `G-MAFL` | 主航班 `MAFL` 派生投影及主/共享原子级联未实现(规则见 `INV-21`/`INV-22`);`MAFL` 不是 SIS/XML 入站字段 | 航班完整态;删除与重建 |
| `G-SRVT-VIPF` | SIS/XML 的 `SRVT``VIPF` 无界集合尚未映射到持久化明细;wire/domain 只保留出现事实与原始内容,不参与合并与投递(清空语义见 `Q13` | 航班完整态;无损字段保存 |
@@ -202,10 +203,10 @@
| `G-HST-RETENTION` | 归档目标(`PROC_STATE_HST` 及后续归档表)的保留期与清除作业未定义 | 归档只转移不减少容量占用;`G-PROC-HST` |
| `G-FLIGHT-HIST-RETENTION` | 航班历史存储(外部)的保留期与容量上限未定义 | `D1``FLIGHT_SCHD` 物理清除后历史存储是唯一副本 |
| `G-REQ-TRACK-RETENTION` | `REQ_TRACK` 关闭态行(`DONE`/`EXPIRED`)的保留期与清除作业未定义 | 自有 PG 无界增长;`US-08` |
| `G-DELIVERY-ORDER` | 投递按目标级全序推进:一个 `FLID` 的队头失败会阻塞同目标其他 `FLID`,尚未收敛到按 `FLID` 隔离的保序边界 | 投递吞吐;`CLM-7``C-29` |
| `G-FLOP-DIRECTION` | 柜台、转盘、滑槽、登机门、计划机位五类的 FLOP 报文按 AODB→RMS 接收并落库,SIS 要求收到即拒绝(这些资源在 AODB 方向只随日计划下发) | `US-05``SIS:3.24``SIS:3.25``SIS:3.26``SIS:3.34``SIS:3.38` |
| `G-FLOP-UNMAPPED` | `XSD` `FLOP``FFID``UNCL``CKOP``GTOP``CKCL``BDOP``LCTM``BDCL``FRET``FDIV``FLAB``RUNW``PXNO``FLBG``CKPB``BDPB` 未解码,解码即丢弃;其中 `FRET``FDIV``BDPB` 在 legacy 有对应处理 | `US-05`;无损字段保存 |
| `G-REF-DATA` | 参考数据入站(`SIS:3.1``SIS:3.14`)与 admin-api 刷新均未实现,`REF_MASTER` 只有目标表定义 | `US-13``US-14` |
| `G-FLOP-UNMAPPED` | [XSD](legacy/unisysaodbsis.xsd)「FLOP 元素」`FFID``UNCL``CKOP``GTOP``CKCL``BDOP``LCTM``BDCL``FRET``FDIV``FLAB``RUNW``PXNO``FLBG``CKPB``BDPB` 未解码`CHDT.CCLS/CTYP` 被错误写成 `CHCLS/CHTYP`,均会静默丢失。其中 `FRET``FDIV``BDPB` 在 legacy 有对应处理 | `US-05`;无损字段保存 |
| `G-FLOP-SEMANTICS` | FLOP 未按 SIS 25 类建立 `STYP` 白名单;`ROUT` 未按方向截取 4 条且仍保存 `SCAT`/`SCDT`;BOTM/LACL 未同步设置或重置运行状态;除 FDEL 外,已删除航班仍会被合并、增版并发事件 | `US-05``INV-14``INV-20``Q8` |
| `G-REF-DATA` | SIS 静态参考数据消息处理(`SIS:3.1``SIS:3.14`)未实现;当前忽略规则还会直接跳过 `REGN`/`RSTA``REF_MASTER` 及 admin-api 下游读取契约均只有逻辑目标定义 | `US-04``US-13``US-14` |
## 8. 待确认事项台账
@@ -218,7 +219,7 @@
| Q5 | 请求匹配:回显字段可靠性与降级匹配 | `RQFD` 60 秒 / `RQRD` 30 秒超时 | 请求跟踪闭环 | 未确认 |
| Q6 | 重放期限与人工处置期限的取值(唯一作用是决定 `R_keep` 下界) | `R` = 30 天;重放/处置期限未定 | `R_keep` 取值 | 未确认 |
| Q7 | 处理标记值集与写权限、原文保留期、处理时间语义 | 写入 `PROCESSED` | 回填值集、保留期下界 | 未确认 |
| Q8 | 逐类覆盖清单:真实报文的子类型分布、SIS 未定义的 legacy 子类型(`ABTM`/`DELY`/`PADT`/`FTSS`/`STND`/`BDPB`/`REMC`)的报文形态、admin-api 21 类清单与字段映射、逐类 golden | 航班动态的字段语义与空标签规则已由 SIS `SIS:3.19``SIS:3.43` 给出,参考数据类别由 `SIS:3.1``SIS:3.14` 给出;`VIPP` 的忽略口径 SIS 未写明 | 积压处置逐类矩阵的差异标注 | 暂缓(现阶段不处理) |
| Q8 | 逐类覆盖清单:真实报文的子类型分布、SIS 未定义的 legacy 子类型(`ABTM`/`DELY`/`PADT`/`FTSS`/`STND`/`BDPB`/`REMC`)的报文形态、逐类 golden、静态参考数据的批次暂存方式、admin-api 的数据库只读契约、除 FDEL 外目标航班不存在/已删除时的终态,以及 BOTM/LACL 运行状态的落点 | 航班动态的字段与空标签规则 `SIS:3.19``SIS:3.43` 为准,静态参考数据 `SIS:3.1``SIS:3.14` 的入站消息为准;SIS 未定义的行为不作统一推定 | 积压处置逐类矩阵与参考数据发布、下游读取模型 | 暂缓(现阶段不处理) |
| Q9 | 清除执行方与 DDL 授权、方案 A/B 选型、分区能力 | 首选方案 A | `R_keep` 与清除边界 | 未确认 |
| Q10 | 出站消费方、ACK 列语义、出站清理与去重契约 | — | 出站信箱 | 未确认 |
| Q11 | 上游 `SEQN` 重置周期与业务身份的日期边界 | 不含日期边界 | 身份算法 | 未确认 |