feat(acm2-92): RQRD 人工登记与 POST /refdata/sync(C-12)
- 新增 POST /refdata/sync:STYP 14 类校验,RSTA 须带 RTYP - REQ_TRACK 加 styp/rtyp 列(V8 迁移);RQRD/RQFD 各自单开放槽 - OutboundRequestService 加 registerRqrdSync,派发按行目标编码 - Pump 加 REF-RESP 守卫:无在途 RQRD 时 SKIPPED - 回归测试覆盖 C-12 登记/派发/400/409/独立槽/守卫
This commit is contained in:
@@ -11,7 +11,8 @@
|
||||
| 接口 | 请求契约 | 成功响应契约 | 失败契约 | 尚需确定 |
|
||||
|---|---|---|---|---|
|
||||
| `POST /cminmsgs/send` | 请求体是 XML 原文;接受 `text/xml`、`application/xml`、`text/plain`,默认 UTF-8;仅限内网,网络层限制来源。 | 报文写入 `CMINMSGS` 后返回信箱编号;写入的报文与上游投递走同一条处理路径、效果一致;该响应只证明已落信,不证明业务处理或下游投递(`US-02`)。 | 空报文、超大小上限、非法 XML 不落信并返回错误;写信失败不返回编号;XML 解析禁用外部实体和外部资源访问。 | 大小上限、请求编码与 `Content-Type` 的精确处理规则、HTTP 状态码、成功/失败响应体字段及样例(`Q15`)。 |
|
||||
| `POST /schd/sync` | 触发一次 `RQFD` 日计划请求;请求体为空、请求全量(`C-4`);登记与落信规则见「在途与作废」。 | HTTP 200,返回请求编号;只表示已登记,不代表已落信、更不代表 AODB 已收到。 | 已有未结案请求时 HTTP 409,响应体 `open-request-exists`。 | — |
|
||||
| `POST /schd/sync` | 触发一次 `RQFD` 日计划请求;请求体是网页选定的时间条件,写入规则见 `C-4`;登记与落信规则见「在途与作废」。 | HTTP 200,返回请求编号;只表示已登记,不代表已落信、更不代表 AODB 已收到。 | 已有未结案请求时 HTTP 409,响应体 `open-request-exists`。 | — |
|
||||
| `POST /refdata/sync` | 触发一次 `RQRD` 参考数据请求;请求体携带网页选定的类别码 `STYP`;`STYP=RSTA` 时须带资源类型 `RTYP`,其余类别不得带;`STYP` 取值见 `C-4`,`RTYP` 取值见 implementation.md「静态参考数据」;登记与落信规则见「在途与作废」。 | HTTP 200,返回请求编号;只表示已登记,不代表已落信、更不代表 AODB 已收到。 | 非法 `STYP` 时 HTTP 400,响应体 `unknown-styp`;`RSTA` 缺 `RTYP` 时 HTTP 400,响应体 `missing-rtyp`;非 `RSTA` 带 `RTYP` 时 HTTP 400,响应体 `unexpected-rtyp`;已有未结案请求时 HTTP 409,响应体 `open-request-exists`。 | — |
|
||||
| `GET /all/flights` | 无已定义的请求字段;从 Redis 投影读取当前全部动态航班,不含共享航班,与网页客户端同源(`US-12`)。 | HTTP 200;响应体是裸 JSON 数组(不套旧 `ResponseDto`),元素为日计划 `SCHD.FLTR` 转成的 JSON,与 `KAFKA:schd` 数组元素同形(`C-9`、`C-11`);共享航班(`MAID` 非空)不出现在数组里;不分页。 | HTTP 503;JSON 对象 `{"error":"FLIGHT_PROJECTION_UNAVAILABLE","reason":"<细节>"}`;Redis 或投影读失败时不得返回 200 空数组(`INV-11`)。 | — |
|
||||
|
||||
旧系统线索(来源:旧项目用户故事「HTTP 接口清单」「日计划请求」):
|
||||
@@ -21,7 +22,7 @@
|
||||
- 旧 `GET /all/flights` 用 `ResponseDto`,`body` 是非共享航班的 `SCHD.FLTR` 列表(对象即日计划 XML 解码后的 `FLTR`,再序列化为 JSON);新版成功体直接返回该列表对应的裸 JSON 数组(`C-11`),元素形状不变。
|
||||
- `POST /schd/sync` 的请求体是 `{startDate, endDate}`,时间格式 `yyyy-MM-dd hh:mm` 用无 AM/PM 的 12 小时制,解析结果写进 `RQFD` 的 `STDB`/`STDE`(`ddMMMyyHHmm`,大写)。
|
||||
|
||||
旧系统的 `{startDate, endDate}` 与 `RQFD` 的 `STDB`/`STDE` 均不沿用:新版日计划是 AODB 当前时刻的完整航班列表(`US-07`),出站编码已定(`C-4`),不带日期筛选;`POST /schd/sync` 请求与响应口径见 `Q16`。旧系统响应体是否能作为 `POST /cminmsgs/send` 的定稿样例,见 `Q15`。
|
||||
旧系统只把 `startDate`、`endDate` 写成 `STDB`、`STDE`,时间格式是无 AM/PM 的 12 小时制,新版不沿用这套入参。新版由网页选择时间条件,四个筛选都可传,格式与含义见 `C-4`;`POST /schd/sync` 请求与响应口径见 `Q16`。旧系统响应体是否能作为 `POST /cminmsgs/send` 的定稿样例,见 `Q15`。
|
||||
|
||||
## 入站报文与请求应答
|
||||
|
||||
@@ -40,7 +41,7 @@ AODB 经 CIIMS adapter 把 XML 报文写入 `CMINMSGS`,格式以架构指定
|
||||
|
||||
| 主题 | 已确定的消息语义 | 尚需确定 |
|
||||
|---|---|---|
|
||||
| `msg` | 单条航班变更通知;Kafka value 是整条 `MSG` 的 JSON(`META` 加对应业务体,空字段不输出),变更与删除由 `META` 的类型与子类型区分(`Q5`);航班动态与删除处理完成后投递;发送失败自动重试,一直失败的记录保留可查并告警(`US-08`);同一 `FLID` 的变更保序,对外按至少一次投递(`CLM-3`,单分区)。删除通知的来源有三处:`FDEL` 删除(`US-06`)、日计划快照覆盖范围内缺席删除(`US-07`)、历史清理在物理删除前必要时登记(架构 `D1`)。 | 编码方式(JSON 之外的压缩或封装是否引入)。 |
|
||||
| `msg` | 单条航班变更通知;Kafka value 是整条 `MSG` 的 JSON(`META` 加对应业务体,空字段不输出),变更与删除由 `META` 的类型与子类型区分(`Q5`);航班动态与删除处理完成后投递;发送失败自动重试,一直失败的记录保留可查并告警(`US-08`);同一 `FLID` 的变更保序,对外按至少一次投递(`CLM-3`,单分区)。删除通知的来源有三处:`FDEL` 删除(`US-06`)、日计划完整名单覆盖范围内缺席删除(`US-07`)、历史清理在物理删除前必要时登记(架构 `D1`)。 | 编码方式(JSON 之外的压缩或封装是否引入)。 |
|
||||
| `schd` | 定时批量发送最新航班状态;两次 tick 之间积累的航班组成 `SCHD.FLTR` 数组 JSON,整批作为单条 record 发出,条数不设上限(沿用旧系统,`Q1`);空字段不输出,字段与类型见 [XSD](../legacy/unisysaodbsis.xsd) 的 `FLTR`;没有变化不发;删除航班不进入本主题,由 `msg` 发一条删除通知;发送失败自动重试,对外按至少一次投递(`US-08`)。 | — |
|
||||
|
||||
旧系统线索(来源:旧项目用户故事「前端通知」「动态类(FLOP-*)处理」):
|
||||
@@ -80,7 +81,7 @@ AODB 经 CIIMS adapter 把 XML 报文写入 `CMINMSGS`,格式以架构指定
|
||||
旧系统线索(来源:旧项目用户故事「Redis key 汇总」「术语与数据语义」「动态航班转历史」):
|
||||
|
||||
- 投影是 hash `flightInfo`:field 为 `FLID`,value 为完整 `SCHD.FLTR` 对象的带类型 JSON,不设过期;Redis 里没有名为 `schd` 的 key,`schd` 只是 Kafka 主题。新版 value 仍是 `FLTR` 转 JSON,但不使用旧系统的 Jackson 默认类型标注。
|
||||
- 写入路径:日计划下载(`DNLD`/`RESP`)整体写入当天航班,单条变更(`ADFT`、`FLOP`)只写对应的一条,转历史时按 `FLID` 逐条移除。整体写入不删除本次映射中缺席的航班,与 `US-07` AC5 相反,新版按 `US-07` AC5 在覆盖范围内刷新。
|
||||
- 写入路径:日计划下载(`DNLD`/`RESP`)写入报文里的航班,单条变更(`ADFT`、`FLOP`)只写对应的一条,转历史时按 `FLID` 逐条移除。旧系统整体写入不删除本次映射中缺席的航班。新版按 `US-07` AC5:完整名单在覆盖范围内移除缺席航班;带了时间条件的 `RESP` 只替换回信里的航班,不因缺席移除其他航班。
|
||||
- 写入前生成主航班的共享航班列表 `MAFL`,共享航班不单列、随主航班下发(`Q6`);旧系统在日计划下载时按 `MAID` 把共享航班挂进主航班 `MAFL`,登机桥字段 `abdg` 本版不提供——旧系统拼它的数据源是机位与登机桥映射缓存,已列入需求「范围与非目标」不交付。
|
||||
|
||||
### 自有 PostgreSQL:内部存储与 admin-api 只读
|
||||
|
||||
Reference in New Issue
Block a user