fix(processing): Wave1 — IgnoreRules/ROUT截断/Q9文档/schd FLTR 数组(ACM2-94/88/81/96)

REGN/RSTA/EROR 退出忽略清单;ROUT/ERUT 升序留 4 且不落 SCAT/SCDT;C-1/Q9 统一库方清除;flushSchd 聚合成无 key 的 FLTR 数组。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
windyboy
2026-09-21 14:18:40 +08:00
co-authored by Cursor
parent d298fcc48f
commit 23b74ed554
18 changed files with 268 additions and 71 deletions
+3 -3
View File
@@ -272,7 +272,7 @@ PENDING → SENT → DONE
| 对象 | 终局判据 | 归档目标 | 清除证据 | 执行方 | 偏差 |
|---|---|---|---|---|---|
| 共享信箱 `CMINMSGS` 原文 | 写回完成(`BACKFILL_AT` 非空) | — | 待确认(`Q9` | 库方 | 清除协议未确认`C-1` |
| 共享信箱 `CMINMSGS` 原文 | 写回完成(`BACKFILL_AT` 非空) | — | 库方清除协议(保留期不早于写回完成 | 库方 | 本系统不删`C-1``Q9` 按此闭合 |
| `FLIGHT_SCHD` + 资源明细 | `US-14` AC2 的已结束条件 | 历史存储 | 历史写入确认 + 版本复查 | 我们 | — |
| 航班历史存储 | 保留期 | — | — | 我们 | `G-FLIGHT-HIST-RETENTION` |
| `SCHD_SNAP_LOG` | 保留期 | 无(本地可重建) | 无 | 我们 | — |
@@ -332,7 +332,7 @@ PG 是航班数据源(`INV-5`);Redis 从 PG 同步,处理完成前写入
| `CHOT` | `CSNO``CHTM``CHID``CHST` | 99 | `SIS:3.22` |
| `DELY` | `CODE``STRT``DURA`、文本 | — | [XSD](legacy/unisysaodbsis.xsd)「FLOP 元素」 |
| `ABTM` | `ASNO``ABDG``ABOP``AOTM` | 99 | [XSD](legacy/unisysaodbsis.xsd)「FLOP 元素」 |
| `ROUT` / `ERUT` | `RTNO``APCD``SCAT``SCDT` | SIS 报文容量 6 / 7;本地各自最多保留 4 条(`US-05` AC3 | `SIS:3.40` |
| `ROUT` / `ERUT` | `RTNO``APCD` | SIS 报文容量 6 / 7;本地各自按序号升序最多保留 4 条,不落 `SCAT`/`SCDT``US-05` AC3 | `SIS:3.40` |
| `SRVT` | `OPER``SRTC``SRQT``SRST``SRET``SRPR``SANR``SARR` | 无界 | `G-SRVT-VIPF` |
| `VIPF` | `OPER``VPCD``VFES``VIPT/OPER``VIPT/VSCD``VIPT/VTQY``VIPT/VTST``VIPT/VTET` | 无界 | `G-SRVT-VIPF` |
@@ -386,7 +386,7 @@ PG 是航班数据源(`INV-5`);Redis 从 PG 同步,处理完成前写入
| `SIS:3.37` | `HNAG` | `FHAG`/`PHAG`/`MHAG` 标量 | `FHAG` 空 = 删除该代理;`MHAG` 可缺席 |
| `SIS:3.38` | `PSDT` | `PSDT` 集合 | 空 `<PSDT PSNO="0">` = 现无机位分配;AODB 实际会发,照常接收处理(`US-05` AC3 |
| `SIS:3.39` | `RENO` | `RENO` 标量 | 空 = 清除注册号 |
| `SIS:3.40` | `ROUT` | `ROUT` 集合 | `SCAT`/`SCDT` 分别对起点/终点缺席。SIS 报文容量 6/7;本地 `ROUT`/`ERUT` **各自最多保留 4 条**`US-05` AC3,不保存 `SCAT`/`SCDT` |
| `SIS:3.40` | `ROUT` | `ROUT` 集合 | `SCAT`/`SCDT` 不落当前态。SIS 报文容量 6/7;本地 `ROUT`/`ERUT` **各自按序号升序最多保留 4 条**`US-05` AC3 |
| `SIS:3.41` | `TAOP` | `TAOP`/`TAFL`/`TAID` 标量 | 任一为空 = 该到达航班的经停连接断开 |
| `SIS:3.42` | `TRML` | `TRML` 标量 | 空 = 删除航站楼 |
| `SIS:3.43` | `VIPP` | `VIPP`/`VIPR` 标量 | 空 = 删除;SIS 另要求 RMS 忽略 `VIPP`(忽略事件还是忽略字段,SIS 未写明,须以真实报文确认,见 `G-FLOP-SEMANTICS` |
+1 -1
View File
@@ -111,7 +111,7 @@
| `msgx.pipeline.job.last_sweep_selected` | 上次检查找到多少条待写回信箱的记录 | 持续达到每批上限:待办太多 |
| `msgx.pipeline.codec.srvt_seen.total` | 收到含 `SRVT` 段的消息数 | 非零:核对 `G-SRVT-VIPF` |
| `msgx.pipeline.codec.vipf_seen.total` | 收到含 `VIPF` 段的消息数 | 非零:核对 `G-SRVT-VIPF` |
| `msgx.pipeline.processing.ignored.total` | 被 `IgnoreRules` 跳过的消息数 | 清单 `REGN``RSTA``EROR`,与 `US-13``US-09` 冲突 |
| `msgx.pipeline.processing.ignored.total` | 被 `IgnoreRules` 跳过的消息数 | 现行清单 `LDM-*``REGN`/`RSTA`/`EROR` 已改走 US-13/US-09 |
| `msgx.pipeline.delivery.send_failures.total{target}` | 该投递目标累计发送失败次数(进程内,重启归零) | 持续增长且 `dead` 非零:投递链路故障(`OPS-2` |
| `msgx.pipeline.delivery.dead{target}` | 该投递目标当前死信(`DEAD`)行数 | 非零即告警:死信需人工处置(`OPS-2`;状态语义见 [implementation.md](implementation.md)「状态与错误分类」) |
| `msgx.pipeline.watermark.lag` | 信箱最新编号比已扫描编号大多少 | 改用处理时间筛选后删除(`G-SCAN-PREDICATE` |
+2 -2
View File
@@ -11,7 +11,7 @@
**非目标**
- 航班当前态权威只在自有 PG,开发测试用 PostgreSQL;生产物理选型待 `Q14`,验证通过前不承诺 Oracle 兼容;Redis 仅作查询投影,不作权威或处理状态。
- 共享 MySQL 只做读写消息和写回处理标记,不改表结构、不建表;已回填的入站行超过保留期后由本系统清理specification.md 的 `C-1`)。
- 共享 MySQL 只做读写消息和写回处理标记,不改表结构、不建表;入站原文保留与清除由库方负责specification.md 的 `C-1`)。
- 本消息网关只有一个实例。
- 对外投递只承诺至少一次;同一航班(`FLID`)内保序,不同航班之间不承诺顺序。
- 已结束的航班写入 Elasticsearch 历史库后从实时数据删除。
@@ -53,7 +53,7 @@
**验收标准**
1. 一次只处理一条消息,取编号最小的未完成消息;处理中的消息不让后面的越过。
2. 报文不合法:进死信。报文合法但本系统不支持该类型:跳过留档,按已处理写回标记。原始报文留在信箱,已回填的行由本系统按保留期清`C-1`)。
2. 报文不合法:进死信。报文合法但本系统不支持该类型:跳过留档,按已处理写回标记。原始报文留在信箱,由库方按保留期清`C-1`)。
3. 处理或提交失败:失败的事务回滚,消息保持未完成,下一轮自动重新处理。
4. 发 Kafka 和回填信箱在处理完成之后做;下游失败不影响消息处理结果。
5. 错误必须记录到对应消息的处理记录上,不能被外层吞掉。
+2 -2
View File
@@ -41,7 +41,7 @@
### 2.1 共享信箱(库方)
- **C-1** 本系统不删除入站行(`CMINMSGS`):处理完成后只写回处理标记,原文保留与清除由库方负责,保留期不早于该行的写回完成时刻。`(待确认 Q9`
- **C-1** 本系统不删除入站行(`CMINMSGS`):处理完成后只写回处理标记,原文保留与清除由库方负责,保留期不早于该行的写回完成时刻。
- **C-2** 共享 MySQL 不改表结构;本系统只读写 `CMINMSGS``COUTMSGS`
### 2.2 上游(AODB / SIS
@@ -121,7 +121,7 @@
| Q6 | 待对方 | 网页客户端怎么读 Redis 快照 | 见 `C-11``MAFL` 是否提供未定 |
| Q7 | 已定 | 信箱编号只增不减、不重用 | `INV-1``CLM-2``US-01` AC3 |
| Q8 | 已定 | 入站处理时间列名 `CMINMSGS_DATE_PROCESSED` | 术语「处理标记」、`US-10` |
| Q9 | 待对方 | 入站行删除条件与保留期 | 本系统只写回处理标记、不删除;清除协议与保留期库方确认`C-1` |
| Q9 | 已定 | 入站行删除条件与保留期 | 本系统只写回处理标记、不删除;清除与保留期库方负责`C-1` |
| Q10 | 已定 | `SEQN` 重置与身份规则 | `C-3` |
| Q11 | 已定 | 日计划没带字段是否删除 | `C-6` |
| Q12 | 已定 | 主航班与共享航班删除联动 | `US-06` AC2 |