feat(refdata): Q22 basicdata 映射与 ReferenceDataProcessor(ACM2-93)

闭合 Q22;V6 建 basicdata 表组;RefData 走真处理器(DNLD/RESP/ADD/UPD/DEL/RSTA)。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
windyboy
2026-09-21 16:01:06 +08:00
co-authored by Cursor
parent 02b0b2f189
commit e5449a5cb1
24 changed files with 1442 additions and 34 deletions
+3 -3
View File
@@ -27,7 +27,7 @@
AODB 经 CIIMS adapter 把 XML 报文写入 `CMINMSGS`,格式以架构指定的 [SIS 接口规范](../legacy/SIS_AODB_RMS-V0.1.md) 与 [XSD](../legacy/unisysaodbsis.xsd) 为依据。
入站报文按类型处理:`ADFT` 建立计划外航班,`FLOP` 改航班动态,`FDEL` 删航班,`SCHD-DNLD``SCHD-RESP` 同步日计划快照,参考数据写入自有 PG 的静态参考数据表组(逻辑视图 `REF_MASTER`,物理形态由内部迁移确定;报文到表的映射 `Q22`稿;联调栈 `basicdata` schema 的基础数据表对齐 admin-api 实体注解,不预设 `REF_MASTER` 落表方式`US-04``US-07``US-13`);报文不合法进死信,合法但本系统不支持的类型跳过留档并按已处理写回信箱(`US-03`)。
入站报文按类型处理:`ADFT` 建立计划外航班,`FLOP` 改航班动态,`FDEL` 删航班,`SCHD-DNLD``SCHD-RESP` 同步日计划快照,参考数据写入自有 PG 的 schema `basicdata` 表组(逻辑视图 `REF_MASTER`,物理多表映射 `implementation.md`「静态参考数据」、`Q22` 定;联调栈 schema 对齐 admin-api 实体注解;`US-04``US-07``US-13`);报文不合法进死信,合法但本系统不支持的类型跳过留档并按已处理写回信箱(`US-03`)。
| 环节 | 已确定的边界 | 尚需确定 |
|---|---|---|
@@ -87,7 +87,7 @@ AODB 经 CIIMS adapter 把 XML 报文写入 `CMINMSGS`,格式以架构指定
| 表或表组 | 边界 | 尚需确定的字段级契约 |
|---|---|---|
| 静态参考数据表组 | 静态参考数据与资源状态保存在独立数据表组(逻辑视图 `REF_MASTER`,物理形态由内部迁移确定;报文到表的映射待 `Q22` 定稿;联调栈 `basicdata` schema 的基础数据表对齐 admin-api 实体注解,不预设 `REF_MASTER` 落表方式);表与列直接取 admin-api 实体注解,不改名、不合并,admin-api 直接只读;新消息覆盖旧记录,全量消息整体替换,增删改消息逐条处理(`US-13`);一类校验不通过只停这一类、其他类照常,校验失败类别的已有记录不变;字段为空表示「当前没有值」,不是删除(`US-13` AC4)。 | 13 类报文与资源状态到表组的映射(`Q22`);admin-api 需要哪些字段。类别码与消息中的识别标签见下表。 |
| 静态参考数据表组 | 静态参考数据与资源状态保存在 schema `basicdata`(逻辑视图 `REF_MASTER``RTYPE`→表映射见 `implementation.md`「静态参考数据」、`Q22` 已定);表与列取 admin-api 实体注解;全量 `DNLD`/`RESP` 整类替换,增量 `ADD`/`UPD`/`DEL` 逐条;单类校验失败不写入该类;空标签表示无值非删除(`US-13`)。 | admin-api 生产只读接入与字段裁剪需求。类别码与识别标签见下表。 |
| 航班当前态表 | 航班当前态的唯一权威;`FLID` 唯一(`INV-6`);Redis 和 Kafka 从处理结果派生,不反向覆盖这些表。 | 主键、字段与类型、外键/索引。 |
| 内部处理表 | 管道处理、请求跟踪、留痕与互斥由本系统维护;不对外提供直接读写接口。 | 字段与约束由内部实现设计确定。 |
@@ -97,7 +97,7 @@ admin-api 还从本系统数据库只读季度计划;供数方与报文形态
### 静态参考数据类别与编号来源
类别码与识别标签来自架构引用的 [SIS 接口规范](../legacy/SIS_AODB_RMS-V0.1.md);识别同一条参考记录时用类别码加识别标签值。标签值的格式、标签在哪个范围内唯一,以及报文到表的映射,仍需 `Q22` 定稿
类别码与识别标签来自 [SIS 接口规范](../legacy/SIS_AODB_RMS-V0.1.md);识别同一条参考记录时用类别码加识别标签值。报文到 `basicdata` 列的映射见 `implementation.md`「静态参考数据」
| 类别码 | 类别 | 消息中的识别标签 | SIS 依据 |
|---|---|---|---|
+23
View File
@@ -482,3 +482,26 @@ SIS 声明的上游忽略与截断口径见 `SIS:3.1`、`SIS:3.2`、`SIS:3.4`、
### 13.5 admin-api 下游读取边界
SIS → 本网关 → PG → admin-api`C-10`)。本网关不调用 admin-api。Oracle 待 `Q14` 验证。MySQL 只是信箱。
### 13.6 物理表映射(`Q22`
逻辑视图仍为 `REF_MASTER`(键 `(RTYPE, RKEY)`);物理落 schema **`basicdata`** 的多张表,列名取自 admin-api secondary 实体 `@Table`/`@Column`**不**使用单表 `REF_MASTER`。Flyway`V6__basicdata_ref_data.sql`;联调栈同名表见 `deploy/integration/postgres-init/02-basicdata-schema.sql`
| `RTYPE` | `RKEY` 标签 | 物理表 | 主键 / 业务键列 | SIS → 列(常用) |
|---|---|---|---|---|
| `COUL` | `COUC` | `basicdata.sys_country` | `COUNTRY_ID` / `COUNTRY_CODE` | `COUC``COUNTRY_CODE``COUN``COUNTRY_NAME_ENG``CNMC``COUNTRY_NAME_CHN` |
| `ARPT` | `ITCD` | `basicdata.sys_airport` | `AIRPORT_ID` / `AIRPORT_CODE_IATA` | `ITCD``AIRPORT_CODE_IATA``ICCD``AIRPORT_CODE_ICAO``ANAM`/`ANMC`→英/中名;`HAUL``HAUL``ATYP``INTERNATIONAL_FLAG` |
| `AIRL` | `ITOP` | `basicdata.sys_airline` | `AIRLINE_ID` / `AIRLINE_CODE_IATA` | `ITOP`/`ICOP`→IATA/ICAO`ONAM`/`ONMC`→名称;`DORI``INTERNATIONAL_FLAG` |
| `AIRC` | `ITAT` | `basicdata.sys_aircrafttype` | `AIRCRAFT_TYPE_CODE` | `ITAT`/`ICAT`→IATA/ICAO`DESC``AIRCRAFT_TYPE_NAME``MAXP`/`MFWT`/`MTWT`/`MABR`→限额字段 |
| `REGN` | `RNUM` | `basicdata.sys_aircraft` | `AIRCRAFT_ID` / `AIRCRAFT_NUMBER` | `RNUM``AIRCRAFT_NUMBER``ITAT``AIRCRAFT_TYPE_CODE``ACAL``AIRLINE_CODE` |
| `ORGN` | `OGID` | `basicdata.sys_flightagent` | `FLIGHTAGENT_ID` | `OGID``FLIGHTAGENT_ID`/`OGID``ONAM``FLIGHTAGENT_NAME` |
| `FLTL` | `FTYP` | `basicdata.sys_flight_type` | `FLIGHT_TYPE_CODE` | `FTYP`→码;`FDES`/`FDSC`→中英文名;`CTYP``FLIGHT_TYPE_CAA_CODE` |
| `TLST` | `TCOD` | `basicdata.orms_terminal` | `TERMINAL_CODE` | `TCOD`/`TNAM`→码与名称 |
| `GLST` | `GCOD` | `basicdata.orms_gate` | `GATE_CODE` | `GCOD`/`GTNM`/`GCAT`/`GTML`→门码、名称、类别、航站楼 |
| `SLST` | `SCOD` | `basicdata.orms_stand` | `STAND_CODE` | `SCOD`/`STNM`/`STML`/`SATC` |
| `CLST` | `CCOD` | `basicdata.orms_checkindesk` | `CHECKINDESK_CODE` | `CCOD`/`CTNM`/`CCAT`(勿与 `CHLT` 混类) |
| `BLST` | `BCOD` | `basicdata.orms_carousel` | `CAROUSEL_CODE` | `BCOD`/`BTNM`/`BCAT`/`BTML` |
| `CHLT` | `CCOD` | `basicdata.orms_chut` | `CHUT_CODE` | `CCOD`/`CHNM`/`CCAT`/`CTML` |
| `RSTA` | `RTYP`+`RSID` | 上表资源行 | 资源码列 | `STAT` `E`/`D``GATE`/`STND` 用数值态,转盘/柜台/滑槽用 `E`/`D` 字符串列;不以包内缺席删其他资源态 |
数值主键表在首次写入时用 `(RTYPE,RKEY)` 稳定派生 `*_ID`(同键可重复 upsert);varchar 主键表直接以 SIS 业务键为 PK。
-1
View File
@@ -138,7 +138,6 @@
| `PROTOCOL` | 整份报文未通过业务校验,或运营日不一致 | 整份不写数据库,记 `DEAD` | 否 |
| `CODEC_ERROR` | 解码程序尚不能识别报文结构 | 记 `FAILED`,等待后重试 | 是 |
| `UNSUPPORTED`(合法未知类型) | 报文种类可识别,但没有对应处理程序(`MsgKind.Unsupported` | 记 `SKIPPED`,写回信箱为已处理(`US-03` AC2) | 否(终态,不进重放白名单) |
| `UNSUPPORTED`(参考数据) | 参考数据类别已识别,但处理器尚未落地(`MsgKind.RefData` | 记 `FAILED(UNSUPPORTED)` 并重试 | 是 |
| `INFRA` | 数据库、网络或程序执行出错 | 记 `FAILED`,等待后重试 | 是 |
| `EXHAUSTED` | 自动重试次数已用尽 | 记 `DEAD`;原错误类别被覆盖,原因留在 `LAST_ERROR` | 是 |
+2 -2
View File
@@ -134,7 +134,7 @@
| Q19 | — | (未分配) | — |
| Q20 | — | (未分配) | — |
| Q21 | 本系统 | `GET /all/flights` HTTP 约定 | 见 `C-11` |
| Q22 | 本系统 | 静态参考数据对应哪些表 | `C-10`、接口契约 |
| Q22 | 已定 | 静态参考数据对应哪些表 | `C-10`;物理为 schema `basicdata` 多表(非 `REF_MASTER` 单表),映射见 `implementation.md`「静态参考数据」 |
| Q23 | 本系统 | Elasticsearch 历史怎么写、保留多久 | 见 `US-14``G-FLIGHT-HIST-RETENTION` |
| Q24 | 本系统 | `REQ_TRACK` 已结案记录保留多久 | 见 `G-REQ-TRACK-RETENTION` |
| Q25 | 本系统 | 季度计划从哪来、什么格式 | SIS 只有日计划;旧系统读 Oracle 季度表 |
@@ -154,7 +154,7 @@
| `G-MAFL` | 主航班共享列表未做 | `US-06` AC2 |
| `G-PROC-CLEANUP` | 处理记录到期清理未做 | `US-11` |
| `G-REDIS-PROJECTION` | Redis 快照写入与删除未做:投影端口与三步提交时序已就位,真实 Redis 客户端未接通,日计划覆盖范围的缺席清扫也未做 | `US-05``US-06``US-07``US-12` |
| `G-REF-DATA` | 静态参考数据处理与 admin-api 直读未做 | `US-13` |
| `G-REF-DATA` | admin-api 生产侧只读接入与联调验收未闭合 | `US-13`;本网关落库与 `ReferenceDataProcessor` 已做(ACM2-93 |
| `G-REQ-OPEN-UNIQUE` | 同类型未处理完时不允许再发,未做 | `US-09` |
| `G-REQ-TRACK` | 出站请求跟踪未做 | `US-09` |
| `G-REQ-TRACK-RETENTION` | `REQ_TRACK` 已结案保留期未定(`Q24` | `US-09` |