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:
windyboy
2026-09-23 16:10:54 +08:00
parent f45a0ac898
commit 4fbb974307
28 changed files with 568 additions and 68 deletions
+5 -5
View File
@@ -90,7 +90,7 @@
### US-07 导入日计划(DNLD / RESP
**目标**:日计划是 AODB 在某个时间范围内的完整航班列表:AODB 主动下发(DNLD)或本系统请求后应答(RESP),收到后分批同步本地数据;整包成功时本地航班当前态与快照一致——请求日计划就是主动与 AODB 全量同步一次。覆盖范围由报文自身给出:`DNLD` 覆盖下发时刻起约 48 小时`RESP` 覆盖请求的日期区间(`SIS:3.16`
**目标**:日计划报文里的每一班,用这份记录整份替换本地同一班,报文没带的字段清掉。机场主动下发(`DNLD`)是下发时刻起约 48 小时的完整名单。本系统请求后的应答(`RESP`)是否为完整名单,取决于请求有没有带时间条件(`C-4`)。四个条件都没传时,应答是当天全部航班,与机场主动下发的日计划同一范围。带了任一时间条件时,应答只包含这一部分航班,不是完整名单
| 报文 | 说明 |
|---|---|
@@ -100,10 +100,10 @@
**验收标准**
1. 报文整体校验(声明的航班数、航班标识、覆盖范围等)通过才处理;校验失败整包拒绝,本地数据不变。
2. 报文里的航班逐条写入或更新;**覆盖范围内**快照里没有的航班,在本地标记已删除,并登记待发删除消息。覆盖范围外的航班不受本报文影响:前一日延误航班不在 `DNLD` 窗口内,不因缺席被判为已删除。
3. 以 AODB 下发的数据为准:日计划里某航班没携带的字段视为 AODB 已删除该值,本地同步清掉。
2. 报文里的航班逐条整份替换本地同一班。只有完整名单才把范围内有、报文里没有的航班标为已删除,并登记待发删除消息。完整名单是 `DNLD`,以及没带时间条件的 `RESP`。带了时间条件的 `RESP` 不删除报文里没有的航班。完整名单范围外的航班不受本报文影响:前一日延误航班不在 `DNLD` 窗口内,不因缺席被判为已删除。
3. 以 AODB 下发的数据为准:出现在报文里的航班没携带的字段视为 AODB 已删除该值,本地同步清掉。
4. 航班量大,分批写入数据库,每批一个事务;处理失败不标记已处理,下轮整包重新处理。
5. 按快照结果刷新 Redis:报文里的航班写入**覆盖范围内**缺席航班移除,覆盖范围外的投影保留。
5. 按快照结果刷新 Redis:报文里的航班写入。完整名单在覆盖范围内移除缺席航班范围外的投影保留。带了时间条件的 `RESP` 不因缺席移除其他航班。
### US-08 通知网页客户端(Kafka
@@ -117,7 +117,7 @@
### US-09 向 AODB 请求数据
**目标**:本系统可以主动向 AODB 要数据:14 类参考数据(`RQRD`+ 1 类日计划(`RQFD`),子类型以消息接口规范为准。参考数据请求由人工发起日计划请求由 `POST /schd/sync` 发。
**目标**:本系统可以主动向 AODB 要数据:14 类参考数据(`RQRD`+ 1 类日计划(`RQFD`),子类型以消息接口规范为准。参考数据请求由人工发起日计划请求由网页选定时间条件后,经 `POST /schd/sync`出(`C-4``C-8`
**验收标准**