docs: 统一术语、收紧需求验收范围、修正 Q3 归属

- "自有业务数据库" → "自有 PG",与 specification/architecture 统一
- US-05 AC1 钉死现场 7 类子类型,白名单其余待 Q3 确认后增补
- US-05 AC3 恢复未映射字段唯一键(信箱编号+路径+出现序号)
- US-09 AC1 恢复旧请求作废可观察约束
- implementation.md VIPP/未映射字段去掉误引 Q3(不在 Q3 范围)
- 精简 architecture/requirements 系统定位复述与实现机制泄漏
This commit is contained in:
windyboy
2026-09-20 09:30:01 +08:00
parent 8749d83d83
commit f3b791712b
8 changed files with 43 additions and 88 deletions
+8 -22
View File
@@ -4,28 +4,22 @@
## 1. 范围与非目标
**系统定位**:OMMS H5 查询系统的消息网关。收取 CIIMS adapter 信箱中 AODB 下发的 XML 报文:航班动态写入数据库并同步写 Redis,运营航班动态消息经 Kafka 发给运营航班显示界面;静态参考数据写入数据库,供 admin-api 只读。出站仅向 AODB 发参考数据类请求和日计划请求(经 `COUTMSGS`,消费方为 CIIMS adapter
**系统定位**:OMMS H5 查询系统的消息网关。收取 CIIMS adapter 信箱中 AODB 下发的 XML 报文,处理航班动态与静态参考数据;出站仅向 AODB 发参考数据类请求和日计划请求
**交付范围**`US-01``US-14``OPS-1``OPS-4`
**非目标**
- 航班当前态权威只在自有 PG;Redis 仅作查询投影,不作权威或处理状态。
- 航班当前态权威只在自有 PG,开发测试用 PostgreSQL;生产物理选型待 `Q14`,验证通过前不承诺 Oracle 兼容;Redis 仅作查询投影,不作权威或处理状态。
- 共享 MySQL 只做读写消息和写回处理标记,不改表结构、不建表;已回填的入站行超过保留期后由本系统清理(specification.md 的 `C-1`)。
- 本消息网关只有一个实例。
- 对外投递只承诺至少一次;同一航班(`FLID`)内保序,不同航班之间不承诺顺序。
- 测试环境用 PostgreSQL;生产环境尚未决定用 PostgreSQL 还是 Oracle 11g。
- 已结束的航班写入 Elasticsearch 历史库后从实时数据删除。
- 不生成航班/业务数据类报文,不提供 AODB 主数据编辑能力。
- 不调用 admin-api,不从 admin-api 拉取、补全或合并任何数据。
- 不在 Redis 缓存机位基础数据与登机桥映射,本版不交付(`C-10`)。
**查询侧(admin-api的数据面**admin-api 是只读数据层,不生产航班动态,也不保存实时航班;它的季度计划与基础数据都从本系统数据库读,其中季度计划供数方待定(specification.md 的 `Q25`)。基础数据的数据集为:
- 航班基础数据:外部状态码、航班类型、代理单位、延误异常定义。
- 配套基础数据:航司、航空集团、机场、机场集团、城市、国家、航站楼、航站楼区域、机位、机位类型、机位廊桥、登机口、行李滑槽、值机柜台、值机岛、行李转盘、机型、机号、机型分组。
其余能力不由本系统提供:航班动态 Excel 导出、字典;历史航班检索读 Elasticsearch 别名 `flight_hts`,索引名与字段映射待定(specification.md 的 `Q23`)。接口清单见 [legacy/flight-apis.md](legacy/flight-apis.md)。
**查询侧(admin-api**admin-api 从本系统数据库只读基础数据与季度计划供数方待 `Q25`);历史航班检索读 Elasticsearch`Q23`)。其余能力(航班动态导出、字典)不由本系统提供。
## 2. 用户故事
@@ -61,7 +55,7 @@
1. 一次只处理一条消息,取编号最小的未完成消息;处理中的消息不让后面的越过。
2. 报文不合法:进死信。报文合法但本系统不支持该类型:跳过留档,按已处理写回标记。原始报文留在信箱,已回填的行由本系统按保留期清理(`C-1`)。
3. 处理或提交失败:失败的事务回滚,消息保持未完成,下一轮自动重新处理。
4. 处理只动本系统数据库;发 Kafka回填信箱在处理完成之后单独做。
4. 发 Kafka回填信箱在处理完成之后做;下游失败不影响消息处理结果
5. 错误必须记录到对应消息的处理记录上,不能被外层吞掉。
### US-04 处理计划外航班(ADFT
@@ -80,9 +74,9 @@
**验收标准**
1. SIS 的 FLOP 部分列有 25 个动态消息子类型;现场需处理的 7 类为靠桥(`ABTM`)、延误(`DELY`)、计划机位(`PSDT`)、柜台(`CKDT`)、转盘(`CLDT`)、滑槽(`CHDT`)、登机门(`GTDT`。其中五类资源分配子类型已包含在上述 25 类中,但 SIS 注明 AODB 发来时 RMS 拒收;靠桥、延误在 SIS 的日计划字段中有定义,不属于上述 25 个 FLOP 子类型。现场报文按现有处理逻辑延续
1. 处理 7 类 FLOP 动态消息:靠桥(`ABTM`)、延误(`DELY`)、计划机位(`PSDT`)、柜台(`CKDT`)、转盘(`CLDT`)、滑槽(`CHDT`)、登机门(`GTDT`;未知子类型按不支持类型跳过留档(`US-03` AC2)。白名单其余子类型待 `Q3` 以真实报文确认后增补
2. 每个子类型有明确的处理规则:更新哪些字段;报文里字段为空表示清除还是撤销;航班不存在时怎么办。
3. 柜台、转盘、滑槽、登机门、机位五类资源分配报文,现场 AODB 实际会发,照常接收处理(消息接口规范写的是相反方向,与 AODB 核对确认);航线路线最多保留 4 条;未落到航班当前态的字段按信箱编号、路径和出现序号唯一记入自有数据库长期记录,保存原值,不随处理记录到期清理。
3. 五类资源分配报文(`CKDT``CLDT``CHDT``GTDT``PSDT`)正常接收处理;航线路线最多保留 4 条;未落到航班当前态的字段按信箱编号、路径和出现序号唯一记入自有数据库长期记录,保存原值,不随处理记录到期清理。
4. 数据写入 Redis 成功,这条消息才算处理完成;写失败不标记已处理,下轮重新处理。
### US-06 删除航班(FDEL
@@ -127,7 +121,7 @@
**验收标准**
1. `RQRD``RQFD` 各自同时最多一条已落信、未结案的请求;同一子类型发新请求时旧请求作废,新请求登记为待发送,等同一报文类型的在途请求收到应答、失败或超时后再落信。请求超过时限未等到应答,标记超时。
1. `RQRD``RQFD` 各自同时最多一条已落信、未结案的请求;同一子类型发新请求时旧请求作废,新请求待在途请求结案后再落信。请求超过时限未等到应答,标记超时。
2. 应答到达时按报文类型对应到等待中的请求;AODB 发错或迟到的应答不更新数据,记录后跳过。
3. 收到 EROR(AODB 错误回报):定位到本系统发出的请求,标记失败并告警。
@@ -142,7 +136,7 @@
### US-11 处理记录清理
**目标**处理记录只用于追踪消息处理情况和排查问题,没有长期保留价值
**目标**已了结的处理记录到期后可删除
**验收标准**
@@ -194,11 +188,3 @@
| `OPS-2` | 可观测:消息积压、处理失败、发送失败、标记写回失败都有监控指标和告警。 | 故障注入触发告警;检查监控面板。 |
| `OPS-3` | 测试隔离:测试环境的实例使用独立的数据库、Redis、Kafka 主题,不连接生产信箱。 | 配置检查。 |
| `OPS-4` | 切换与回退:停旧系统、启新系统完成切换;出问题回退时停新、启旧,未处理的消息由旧系统继续,数据不丢。 | 切换与回退演练记录。 |
## 4. HTTP 接口清单
| 接口 | 用途 |
|---|---|
| `POST /cminmsgs/send` | 联调工具写入报文(US-02)。 |
| `POST /schd/sync` | 发起日计划请求(US-09)。 |
| `GET /all/flights` | 查询全部动态航班(US-12)。 |