docs(acm2-75): 清理空转待决项并对齐全仓旧编号引用

- 删 Q2/Q15/Q19/Q20:时钟偏斜不进判据、实现自定已是结论、原文留存已定、
  运营日冲突处置已由 DEAD(PROTOCOL) 定
- Q6 的 abdg 定案本版不提供;Q22 改为 13 类报文到 admin-api 实体表组的映射
  (REF_MASTER 单表口径退位);Q23 收窄为 SODT+FLID 幂等重试
- C-1 自清口径四方同步(requirements 非目标、US-03 AC2、architecture §6)
- INV-2 吸收回填只写空值;§7 恢复 G-RESP-GUARD
- architecture/implementation/README/V1/oracle/Kotlin/seed 中 40+ 处旧编号
  按映射重指,check-docs 全绿
This commit is contained in:
windyboy
2026-09-20 07:13:20 +08:00
parent 21168d728a
commit 2bd650a551
21 changed files with 121 additions and 123 deletions
+11 -14
View File
@@ -48,7 +48,7 @@
### 2.3 HTTP 入口
- **C-7** `POST /cminmsgs/send`:把 XML 写进入站信箱,与 adapter 投递走同一套处理。成功返回消息编号(仅表示已入库、未处理);失败不返回编号。支持 `text/xml``application/xml``text/plain`(UTF-8);空、超长、格式错的不写;解析不拉外部资源。内网,访问由网络配置控制。仅内部联调;长度上限与失败响应实现自定`Q15`
- **C-7** `POST /cminmsgs/send`:把 XML 写进入站信箱,与 adapter 投递走同一套处理。成功返回消息编号(仅表示已入库、未处理);失败不返回编号。支持 `text/xml``application/xml``text/plain`(UTF-8);空、超长、格式错的不写;解析不拉外部资源。内网,访问由网络配置控制。仅内部联调;长度上限与失败响应实现自定。
- **C-8** `POST /schd/sync`:向出站表写入一条日计划请求。
待确认:请求参数、HTTP 响应(`Q16`)。
@@ -71,7 +71,7 @@
### 4.1 管道
- **INV-1** 处理时间仍为空的信箱行会登记到本地;同一编号只登记一次。重扫或重启不会重复登记,也不会漏掉未登记的行。
- **INV-2** 只有本地处理结束后,才写信箱里的处理时间;本地记「已结束」时,必须同时记下还要去更新信箱,两笔记在同一次写入里。
- **INV-2** 只有本地处理结束后,才写信箱里的处理时间;本地记「已结束」时,必须同时记下还要去更新信箱,两笔记在同一次写入里。回填只把空标记写成完成时刻,不覆盖已有值(本系统单方承诺)。
- **INV-3** 航班增量与删除:改状态和记「待发 Kafka」同一次写入;记「已结束」和「还要更新信箱」另一次写入,且须在 Redis 写成功之后。处理未结束前不发 Kafka(`US-03` AC4)。日计划与静态参考数据见架构「主流程」。
- **INV-4** 日计划整份报文校验不过时,本地航班数据一律不改(`US-07` AC1)。
@@ -107,11 +107,10 @@
| 编号 | 事项 | 当前假定 | 影响 |
|---|---|---|---|
| Q1 | `schd` 的 Kafka record 粒度 | 已定原则:按旧系统,两次 tick 之间积累的整批序列化成一个 JSON 数组作为单条 record 发出(`C-9` | 消费方未确认按此格式解析 |
| Q2 | 请求与应答按时间匹配时的时钟偏斜容忍判据 | 比较前统一时区与单位(implementation.md「上游请求与静态数据」) | 容忍判据未定前,降级匹配不得描述为精确关联 |
| Q3 | 现场会发但 SIS 未定义的子类型(靠桥、延误等)的报文形态与逐类终态 | 按现有处理逻辑延续,不得因 SIS 未记载就丢掉(`US-05` AC1) | 逐类终态与幂等规则未定(`G-FLOP-SEMANTICS` |
| Q4 | 上游重发时是否可能改发正文 | 报文不可变,绑定身份后不比对内容(implementation.md「消息、身份与决策」) | 改发正文的重发会被判为重复并跳过 |
| Q5 | `msg` 的 value 字段与类型、编码方式、变更与删除的区分方式 | 沿用旧系统:value 是 `MSG` 的 JSON`META` 加对应业务体),日计划到达通知只有 `META`(接口契约「Kafka」) | 消费方读取契约无法定稿 |
| Q6 | 网页客户端读取 Redis 投影的约定 | 沿用旧系统的 hash `flightInfo`field 为 `FLID`,value 为完整航班对象的带类型 JSON,不设过期;写入与移除时机见 `INV-7``INV-8``INV-10`;派生字段 `MAFL``abdg` 是否随投影提供仍未定;只作查询、不是权威;与 `GET /all/flights` 同一份(`C-11`;接口契约「Redis:航班查询投影」) | 消费方读取契约无法定稿 |
| Q6 | 网页客户端读取 Redis 投影的约定 | 沿用旧系统的 hash `flightInfo`field 为 `FLID`,value 为完整航班对象的带类型 JSON,不设过期;写入与移除时机见 `INV-7``INV-8``INV-10`;派生字段 `MAFL` 是否随投影提供仍未定`abdg` 本版不提供,旧系统拼它的数据源(机位与登机桥映射缓存)已列入需求「范围与非目标」不交付;只作查询、不是权威;与 `GET /all/flights` 同一份(`C-11`;接口契约「Redis:航班查询投影」) | 消费方读取契约无法定稿 |
答复就地更新结论,并按 [README.md](README.md)「维护清单」落到对应条款。
@@ -134,15 +133,12 @@
| 编号 | 事项 | 当前假定 | 影响 |
|---|---|---|---|
| Q14 | 生产库选型 | 自有 PG 是唯一权威;生产环境用 PostgreSQL 还是 Oracle 11g 不能从三份依据确定,Oracle 适配验证通过前不作支持承诺 | 生产部署验收 |
| Q15 | `POST /cminmsgs/send` 的长度上限与失败响应 | 仅内部联调、无外部引用;成功返回编号等行为见 `C-7`;上限与失败格式现阶段不定,实现时在代码里自定 | 不阻塞对外契约 |
| Q16 | `POST /schd/sync` 的请求字段与时间格式、成功响应表示已登记还是已落信、状态码与错误响应 | 交付承诺止于落信(`C-4`);旧系统线索为 `{startDate, endDate}` 与 12 小时制时间(接口契约「HTTP」) | 响应契约无法定稿(`C-8` |
| Q17 | 人工发起 `RQRD` 的方式 | `US-09` 要求人工发起,HTTP 接口清单没有对应入口 | 参考数据请求无法人工触发 |
| Q18 | 回退时在途消息(已提交业务变更、未到处理完成)的处置 | 回填了结后切换(`OPS-4`);在途消息无跨系统幂等保障 | 回退演练的验收口径(`OPS-4` |
| Q19 | 是否在自有 PG 留存入站原文副本,及原文提前清除时已登记消息的处置 | 不留存,原文只从信箱读取 | 提前清除的消息不可恢复,处置未定 |
| Q20 | 日计划中运营日冲突的处置 | 未定 | 冲突场景无法验收 |
| Q21 | `GET /all/flights` 的状态码、错误响应样例、外层包装是否沿用旧 `ResponseDto` | 返回体是消息文档中的 XML 结构转换出的 JSON;读 Redis、返回全体动态航班、不分页(`C-11` | 查询契约无法定稿 |
| Q22 | `REF_MASTER` 的物理列、唯一键、空值存储与写入后可见时点 | 记录用类别码识别标签识别(接口契约「静态参考数据类别与编号来源」 | admin-api 读取契约无法定稿(`C-10` |
| Q23 | Elasticsearch 历史索引、文档 ID、字段映射、成功判据、保留期与容量上限、写入结果不明的对账与幂等策略 | 历史写入确认成功才删实时数据(`D1``US-14` AC3 | 历史链路无法验收(`US-14``G-FLIGHT-HIST-RETENTION` |
| Q22 | 13 类报文与资源状态如何映射到 admin-api 实体对齐的基础数据表组(联调栈 `basicdata` schema 为承载) | 表与列直接取 admin-api 实体注解,不改名、不合并(接口契约「自有 PostgreSQL:内部存储与 admin-api 只读」);类别码识别标签接口契约「静态参考数据类别与编号来源」;表组物理形态属内部迁移 DDL,不作待决 | admin-api 读取契约无法定稿(`C-10` |
| Q23 | Elasticsearch 历史索引、文档 ID、字段映射、成功判据、保留期与容量上限 | 文档 ID 沿用旧系统 `SODT + FLID` 幂等 upsert,写入结果不明时重试同一写入(接口契约「Elasticsearch 航班历史写入」);历史写入确认成功才删实时数据(`D1``US-14` AC3 | 历史链路无法验收(`US-14``G-FLIGHT-HIST-RETENTION` |
| Q24 | `REQ_TRACK` 已结案记录的保留期取值 | 到期清理没有可依据的窗口(`G-REQ-TRACK-RETENTION` | 请求历史清理无法实现(`US-09` |
| Q25 | 季度计划的数据来源与归属:admin-api 从本系统库读季度计划,而 SIS 只有日计划事件(`SIS:3.16``SIS:3.17``SIS:4.7`) | 应由 AODB 下发,报文形态待确认;旧系统读 Oracle 的 `FIMS_FLIGHTSCHD_SEASON` | admin-api 的季度计划查询没有供数方 |
@@ -164,6 +160,7 @@
| `G-SCAN-PREDICATE` | 收报仍按水位扫描,不是按「处理时间为空」读取 | `US-01``INV-1` |
| `G-REDIS-PROJECTION` | Redis 投影没有写入与移除路径 | `US-05``US-06``US-07``US-12` |
| `G-SCHD-SNAPSHOT` | 日计划快照不删除缺席航班、不清除未携带字段,也没有分批;逐航班重写幂等未补齐 | `INV-7``INV-3``INV-9` |
| `G-RESP-GUARD` | `SCHD-RESP` 没有过期判断,晚到的应答也会更新本地数据 | `US-07` |
| `G-PROC-CLEANUP` | 处理记录的到期清理作业未实现 | `US-11` |
| `G-REF-DATA` | 静态参考数据没有处理,当前按「合法但不支持」跳过并回填;参考数据表与 admin-api 直读未落地 | `US-13``US-03` |
@@ -173,7 +170,7 @@
|---|---|---|
| INV-1 | `US-01` AC1/AC2/AC4 | 扫描重来与重启后登记数不变、行不丢;同一编号重复出现时处理记录数不增加 |
| INV-1、C-7 | `US-02` AC1~AC5 | 兼容入口接受三种媒体类型、默认 UTF-8;空报文、超上限、非法 XML 不落信并返回错误,解析禁用外部实体与外部资源;成功返回编号且只表示落信;内网来源由网络层配置核对;写入的行与上游投递同路径被发现、登记 |
| CLM-2 | `US-01` AC3、`US-03` AC1 | 按编号升序处理;队头未完成时后面的消息不被处理 |
| CLM-2(升序) | `US-01` AC3、`US-03` AC1 | 按编号升序处理;队头未完成时后面的消息不被处理 |
| US-03 AC2/AC5 | `US-03` AC2/AC5 | 死信与跳过留档且无业务副作用;错误在对应处理记录上可查 |
| US-03 AC3 | `US-03` AC3 | 失败回滚后消息仍在未完成;已提交结果不被写信箱处理时间或发 Kafka 失败回滚 |
| INV-2 | `US-10` AC1/AC2 | 终态后才回填;重启后继续,写不上的有记录与告警 |
@@ -186,7 +183,7 @@
| US-14 AC4 | `US-14` AC4 | 历史清理跳过正在被消息处理的航班 |
| INV-4 | `US-07` AC1 | 校验失败后本地数据不变 |
| INV-9 | `US-07` AC4/AC5 | 分批失败后整包重处理收敛到同一目标(`G-SCHD-SNAPSHOT` 闭合前无法验证);Redis 在整包写入完成后按快照刷新,成功即与快照一致 |
| CLM-1 | `US-03` | 同一消息不产生两次效果;逐子类型规则与幂等矩阵在 `Q3``G-FLOP-IDEMPOTENT``G-FLOP-SEMANTICS` 闭合前无法验证 |
| CLM-1(幂等收敛) | `US-03` | 同一消息不产生两次效果;逐子类型规则与幂等矩阵在 `Q3``G-FLOP-IDEMPOTENT``G-FLOP-SEMANTICS` 闭合前无法验证 |
| INV-8 | `US-06` AC1 | 航班标记删除后从投影移除;移除失败时下轮重做 |
| US-14、D1 | `US-14` AC3 | 历史写入成功才删实时数据;删除事件在实时数据删除前登记(`D1` |
| US-06 AC2 | `US-06` AC2 | 删共享联动主航班;删主航班级联删共享 |
@@ -195,9 +192,9 @@
| US-11 | `US-11` AC1/AC2 | 未完成的记录不被删除 |
| US-13 | `US-13` AC1~AC5 | 全量整体替换、增删改逐条;空值是「没有值」不是删除;一类校验失败只停该类;参考数据落独立表供 admin-api 只读(`C-10` |
| US-10 AC2 | `US-10` AC2 | 写失败重试与告警可观测 |
| CLM-4 | `US-09` AC1AC3 | 出站请求写入 `COUTMSGS` |
| CLM-4(止于落信) | `US-09` AC1AC3 | 出站请求写入 `COUTMSGS` |
| CLM-5(不承诺完成时限) | — | 需求未定完成时限;现场一般为即时处理 |
| CLM-6(容量) | — | 现场量级暂无;有数据后再估 |
| OPS-4 | `OPS-4` | 回退演练:回填了结后切回,旧系统不重处理已产生业务效果的消息;在途窗口处置见 `Q18` |
| CLM-7 | `OPS-1` | 配置错误启动失败测试可验收 |
| OPS-4(切换与回退) | `OPS-4` | 回退演练:回填了结后切回,旧系统不重处理已产生业务效果的消息;在途窗口处置见 `Q18` |
| CLM-7(启动拒绝) | `OPS-1` | 配置错误启动失败测试可验收 |
| PRE-1(测试隔离) | `OPS-3` | 测试环境配置核对:独立的数据库、Redis 与 Kafka 主题,不连接生产信箱 |