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:
@@ -47,7 +47,7 @@
|
||||
### 2.2 上游(AODB / SIS)
|
||||
|
||||
- **C-3** 一条报文的身份 = `SNDR` + `TYPE` + `STYP` + `SEQN`。`SEQN` 自增,极少在消息服务器重启时重置;重置后不与历史冲突。
|
||||
- **C-4** 出站请求写入 `COUTMSGS`;本系统只保证写入信箱,不保证 AODB 收到。编码:`SNDR=OMMS`;`SEQN` 本系统生成;`DTTM` 北京时间 `YYYYMMDDHHMMSS`;`RQRD` 共 14 种子类型(以 SIS 为准);`RQFD` 的 `STYP=NONE`,全量不带 `STDB`/`STDE` 筛选。季度计划不属本系统出站范围(`Q25`)。
|
||||
- **C-4** 出站请求写入 `COUTMSGS`;本系统只保证写入信箱,不保证 AODB 收到。编码:`SNDR=OMMS`;`SEQN` 本系统生成;`DTTM` 北京时间 `YYYYMMDDHHMMSS`;`RQRD` 共 14 种子类型(以 SIS 为准);`RQFD` 的 `STYP=NONE`。日计划请求的时间条件由网页传入,本系统不补、不改。`STDB`、`STDE` 按计划到港或计划离港时间筛,`ETDB`、`ETDE` 按预计到港或预计离港时间筛;带 `B` 的是大于等于该时刻,带 `E` 的是小于等于该时刻;多个条件同时成立。时刻格式为 `DDMONYYHHMM`(见 [SIS](legacy/SIS_AODB_RMS-V0.1.md)「RMS 日航班计划请求事件」)。没传的条件不写入报文。四个都不传时不带筛选,AODB 返回当天全部记录,与它主动下发的日计划同一范围,这份回信是完整名单。带了任一时间条件时,回信只是筛选出来的一部分,不是完整名单。回信里的每一班整份替换本地同一班(`C-6`、`US-07` AC3)。只有完整名单才删除范围内缺席的航班;带了时间条件时不删除回信里没有的航班(`US-07` AC2)。季度计划不属本系统出站范围(`Q25`)。
|
||||
- **C-5** 删航班只打删除标记;主航班与共享航班各自独立标记。
|
||||
- **C-6** 日计划快照里没带的字段,视为 AODB 已删掉该值,本地也清掉(`US-07` AC3)。
|
||||
|
||||
@@ -55,7 +55,8 @@
|
||||
|
||||
- **C-7** `POST /cminmsgs/send`:XML 写进入站信箱,与 adapter 走同一套处理。成功返回消息编号(只表示已写入、尚未处理);失败不返回编号。接受 `text/xml`、`application/xml`、`text/plain`(UTF-8);拒收空报文、超长、非法 XML;解析禁止访问外部资源。内网访问由网络层控制;仅供内部联调。
|
||||
- 待确认:大小上限、HTTP 状态码与响应体 → `Q15`。
|
||||
- **C-8** `POST /schd/sync`:登记一次 `RQFD` 日计划请求。请求体为空、请求全量(`C-4`);成功返回请求编号,已有未结案请求时返回 `409`(`Q16`)。同类型若还有未处理完的请求,新请求先不写信箱,等旧的处理完再写 `COUTMSGS`(`US-09` AC1)。
|
||||
- **C-8** `POST /schd/sync`:登记一次 `RQFD` 日计划请求。请求体是网页选定的时间条件,写入规则见 `C-4`;成功返回请求编号,已有未结案请求时返回 `409`(`Q16`)。同类型若还有未处理完的请求,新请求先不写信箱,等旧的处理完再写 `COUTMSGS`(`US-09` AC1)。
|
||||
- **C-12** `POST /refdata/sync`:登记一次 `RQRD` 参考数据请求。请求体携带网页选定的类别码 `STYP`(取值见 `C-4`,以 SIS 为准);`STYP=RSTA` 时须带资源类型 `RTYP`,其余类别不得带;成功返回请求编号,已有未结案请求时返回 `409`(`Q17`)。登记后等在途请求结案再写 `COUTMSGS`(`US-09` AC1)。
|
||||
|
||||
### 2.4 下游(admin-api、网页客户端)
|
||||
|
||||
@@ -84,7 +85,7 @@
|
||||
|
||||
- **INV-5** 航班当前数据以自有 PG 为准。
|
||||
- **INV-6** `FLID` 全局唯一。
|
||||
- **INV-7** 日计划:**覆盖范围内**快照里没有的航班打删除标记、记删除事件、从 Redis 删掉;覆盖范围外的航班不受本报文影响;快照没带的字段本地清掉(`US-07` AC2/AC3)。
|
||||
- **INV-7** 日计划报文里的航班整份替换,没带的字段清掉(`US-07` AC3、`C-6`)。完整名单(`DNLD`,以及没带时间条件的 `RESP`)在覆盖范围内把快照里没有的航班打删除标记、记删除事件、从 Redis 删掉;范围外的航班不受本报文影响。带了时间条件的 `RESP` 不因缺席删除(`US-07` AC2)。
|
||||
- **INV-8** 已打删除标记的航班必须从 Redis 删掉;删掉才算这条消息处理完成(`US-06` AC1)。
|
||||
- **INV-9** 日计划可以分批写 PG,但整份 PG 写完且 Redis 按快照刷完才算完成;失败则全部重来(`US-07` AC4/AC5)。
|
||||
|
||||
@@ -126,8 +127,8 @@
|
||||
| Q13 | 已定 | `RQRD` / `RQFD` 编码字段 | `C-4` |
|
||||
| Q14 | 本系统 | 生产用 PostgreSQL 还是 Oracle 11g | Oracle 未验证前不作支持承诺 |
|
||||
| Q15 | 本系统 | `POST /cminmsgs/send` HTTP 约定 | 大小上限、状态码、最终响应体;见 `C-7`。旧系统成功响应是 `ResponseDto`(`err_code=1`,`body` 为信箱编号),且未配置大小上限 |
|
||||
| Q16 | 已定 | `POST /schd/sync` 请求与响应 | 请求体为空、请求全量(`C-4`);成功返回请求编号,开放请求未结案返回 `409`(`C-8`) |
|
||||
| Q17 | 本系统 | 人工发 `RQRD` 的入口 | `US-09` 要求能人工发,HTTP 清单里没有;旧系统也没有 |
|
||||
| Q16 | 已定 | `POST /schd/sync` 请求与响应 | 请求体携带网页选定的时间条件(`C-4`);成功返回请求编号,开放请求未结案返回 `409`(`C-8`) |
|
||||
| Q17 | 已定 | 人工发 `RQRD` 的入口 | `POST /refdata/sync` 登记一次请求;请求体携带类别码 `STYP`(`RSTA` 时加带 `RTYP`);成功返回请求编号,开放请求未结案返回 `409`(`C-12`) |
|
||||
| Q18 | 已定 | 回退时正在处理的消息怎么办 | 未写回处理标记的消息仍算未处理,由旧系统继续;旧系统停机只等在途任务跑完(`OPS-4`) |
|
||||
| Q19 | — | (未分配) | — |
|
||||
| Q20 | — | (未分配) | — |
|
||||
@@ -151,8 +152,7 @@
|
||||
| `G-FLOP-UNMAPPED` | [XSD](legacy/unisysaodbsis.xsd) FLOP 字段映射不全 | `US-05` |
|
||||
| `G-MAFL` | 主航班共享列表未做 | `US-06` AC2 |
|
||||
| `G-REF-DATA` | admin-api 生产侧只读接入与联调验收未闭合 | `US-13`;本网关落库与 `ReferenceDataProcessor` 已做(ACM2-93) |
|
||||
| `G-REQ-OPEN-UNIQUE` | 新请求等待在途请求结案的登记模型未闭合;当前开放态唯一约束会拒绝新登记 | `US-09` |
|
||||
| `G-REQ-TRACK` | `RQFD` 跟踪已落地;14 类 `RQRD` 人工登记、子类型作废与等待投递未做 | `US-09` |
|
||||
| `G-REQ-TRACK` | `RQRD` 人工登记已落地(`C-12`);子类型作废与等待投递未做 | `US-09` |
|
||||
| `G-REQ-TRACK-RETENTION` | `REQ_TRACK` 已结案保留期未定(`Q24`) | `US-09` |
|
||||
| `G-SRVT-VIPF` | `SRVT`、`VIPF` 缺席是否清除待 `Q2`;段出现时已落 `FLIGHT_SRVT`/`FLIGHT_VIPF` | `US-05` |
|
||||
|
||||
@@ -165,6 +165,7 @@
|
||||
| C-5、`US-06` AC2 | `US-06` AC2 | 删共享联动主航班;删主级联删共享 |
|
||||
| C-7 | `US-02` AC1~AC5 | 三种 Content-Type、UTF-8;空/超长/非法 XML 不写入;禁外部资源;成功编号只表示已写入;与 adapter 同路径建记录 |
|
||||
| C-8、CLM-4 | `US-09` AC1~AC3 | 出站写入 `COUTMSGS`;HTTP 触发先登记,旧的处理完才写入信箱 |
|
||||
| C-12、CLM-4 | `US-09` AC1~AC3 | `RQRD` 按类别登记并写入 `COUTMSGS`;非法类别或开放槽占用时拒绝 |
|
||||
| C-9、CLM-3 | `US-08` AC1~AC3 | `msg` 单条、`schd` 批量;失败可重试;`msg` 同 `FLID` 保序;同条可能发多次 |
|
||||
| C-10 | `US-13` AC1~AC4 | 全量替换、增删改逐条;空值表示无值不是删除;单类校验失败只停该类 |
|
||||
| INV-1(建立处理记录) | `US-01` AC1/AC2/AC4 | 重扫与重启后记录数不变、行不丢;同一编号重复出现时不新增记录 |
|
||||
@@ -173,7 +174,7 @@
|
||||
| INV-4 | `US-07` AC1 | 校验失败后 PG 航班数据不变 |
|
||||
| INV-5 | 架构「数据归属与一致性」 | 航班数据只写入自有 PG |
|
||||
| INV-6 | implementation.md「数据模型」 | `FLID` 唯一 |
|
||||
| INV-7 | `US-07` AC2/AC3 | 覆盖范围内快照缺席航班标删并从 Redis 删,范围外不动;未带字段清空 |
|
||||
| INV-7 | `US-07` AC2/AC3 | 报文里的航班整份替换、未带字段清空;只有完整名单才在覆盖范围内把缺席航班标删并从 Redis 删 |
|
||||
| INV-8 | `US-06` AC1 | 标删后从 Redis 删;失败下轮重做 |
|
||||
| INV-9 | `US-07` AC4/AC5 | 分批失败全部重来;PG 整份写完后再刷 Redis |
|
||||
| INV-11 | `US-12` AC1/AC2 | 返回全部非共享航班且与 Redis 一致;Redis 故障返回错误 |
|
||||
|
||||
Reference in New Issue
Block a user