docs: remove retired schedule generation design

This commit is contained in:
windyboy
2026-09-09 20:22:10 +08:00
parent f6f9d6c6cb
commit d53a0a1c2f
8 changed files with 106 additions and 481 deletions
+12 -17
View File
@@ -1,11 +1,11 @@
# msgexchange-v2(机场上游报文处理中间件)
**系统角色**:消费 CIIMS/AODB 等上游经共享 MySQL 信箱(`CMINMSGS`)投递的 XML 报文,
解析处理后维护 Redis 航班态并向 Kafka / 出站信箱投递——**中间件**,非报文源系统。
解析处理后维护自有 PostgreSQL 航班当前态并向 Kafka / 出站信箱投递——**中间件**,非报文源系统。
依据 **ACMA-8 v4 综合架构**(单写者严格 FIFO 管道)与 **ACMA-6 技术选型**
Micronaut 5.1 + Kotlin 2.3)搭建;**存储边界与阶段 B 按 ACM2-11/ACM2-12 定案**
(自有 PostgreSQL 内部状态 + 共享 MySQL 仅信箱 + Redis 动态/gen,阶段 B 缓做)。
(自有 PostgreSQL 维护内部状态共享 MySQL 仅信箱边界)。
本仓库独立于 legacy `msgexchange-api`Java 8 / Spring Boot 1.5 / Maven)——
过渡期两套系统并存(影子对拍→切流→旧仓库冻结),legacy 维护不受本仓库影响。
@@ -19,7 +19,7 @@
|---|---|---|
| **入站(主路径)** | JDBC 轮询共享 `CMINMSGS` | 上游经 CIIMS 等**外部系统**写信箱;本系统 1s 轮询 `DATE_PROCESSED IS NULL` 发现新信 → 自有 PG 入队(`InboxPoller`U05 |
| **入站(compat** | HTTP `POST /cminmsgs/send` | 手工注入/影子对拍;写信箱 + PG 入队,**非**生产主拓扑 |
| **处理** | 主泵 FIFO 管道 | 解码 → identity → Handler 决策 → Redis 动态权威态 |
| **处理** | 主泵 FIFO 管道 | 解码 → identity → Handler 决策 → PostgreSQL 航班当前态 |
| **出站** | Kafka + `COUTMSGS` | 向下游推送 msg/schd;请求类报文写出站信箱 |
与 SIS / legacy 一致:本系统**不**替代 CIIMS 落信,**不**生成原始 AODB 业务报文。
@@ -36,17 +36,14 @@
| `codec/` | SIS XML codec(注解 wire DTO → 领域载荷,禁 DTD/外部实体) | 决策 4 前置 |
| `domain/` | 领域模型:Decision、事件、状态机枚举、Phase 开关 | I1I5 |
| `config/` | `PipelineProps` 参数表(ACMA-8 参数初值,`msgx.*` | — |
| `infra/` | 仓储接口、Redis Lua 装载、stub、健康、重试策略 | 数据模型节 |
| `infra/` | 仓储接口、stub、健康、重试策略 | 数据模型节 |
## 资源
- `docs/legacy/SIS_AODB_RMS-V0.1.md` + `docs/legacy/unisysaodbsis.xsd`**消息结构唯一事实源**
wire 契约冻结,自 legacy 仓库复制以自包含;codec 实装依据,ACM2-2/ACM2-3)。
- `db/migration/V1.0.0__own_pg_pipeline.sql`**自有 PostgreSQL**(唯一自有库)表结构
PROC_STATE / MSG_EVENT / PUMP_JOB / REQ_TRACK / REF_MASTERPG 方言),ACM2-12 定案;
共享 MySQLCMINMSGS/COUTMSGS)仅信箱 DML 不建表;快照 gen 与航班动态在 Redis。
- `lua/snapshot_replace.lua`:同一 hash 原子“覆盖新代 + 按代差删”(流程 4,I4/I5;
随 gen→Redis 协议(U09)扩展版本推进)。
- `db/migration/V1__flight_state_baseline.sql`**自有 PostgreSQL**(唯一自有库)的航班状态与处理管道表结构
共享 MySQLCMINMSGS/COUTMSGS)仅信箱 DML,不建表。
- `lua/batch_delete.lua`:3:30 清场批量删除(仅 ES 写成功集,I4)。
- `application.yml`:口令全部环境变量外置(零入库);`datasources.default`=自有 PGenabled=false
待 U05)、`mailbox.shared-mysql`=共享信箱;`msgx.phase` 权威口径(A 现役;B 缓做);
@@ -66,9 +63,8 @@
## 数据库初始化(ACM2-12 口径)
**自有 PostgreSQL**(唯一自有库):`db/migration/V1.0.0__own_pg_pipeline.sql`
PROC_STATE / MSG_EVENT / PUMP_JOB / REQ_TRACK / REF_MASTERPG 方言)。全新库直接执行即可,
无 legacy 前置。
**自有 PostgreSQL**(唯一自有库):Flyway 执行 `db/migration/V1__flight_state_baseline.sql`,建立
航班当前态、明细表、处理终态与 outbox 等表PG 方言)。全新库直接执行即可,无 legacy 前置。
**共享 MySQLcdairport,他人系统库)**:本系统**不建表/schema**,仅信箱 DML——上游外部写
`CMINMSGS`;本系统 JDBC 轮询读 + 处理回填;出站写 `COUTMSGS`(他人读取发送);表结构与
@@ -77,8 +73,7 @@ PROC_STATE / MSG_EVENT / PUMP_JOB / REQ_TRACK / REF_MASTERPG 方言)。全
- **事务模型**:与共享库交互均为外部副作用(ACM2-12)——主路径=上游外部写信箱 →
JDBC 轮询发现新信 → 自有 PG 建 PENDING 入队(失败重扫补建);HTTP `/cminmsgs/send`
为 compat 写路径;处理成功回填 DATE_PROCESSED/STATUS 为最终一致。
- **快照 gen**:随航班动态同在 Redisgen→Redis 协议属 U09,当前为过渡占位)
- **阶段 BFLIGHT_STATE**:缓做不落表。
- **航班状态**:写入自有 PostgreSQL;完整规则见 `docs/flight-state.md`
- 影子对拍:自有 PG 开独立 schema;共享信箱为单信箱无法双写,影子输入=只读水位/回放口径。
@@ -86,8 +81,8 @@ PROC_STATE / MSG_EVENT / PUMP_JOB / REQ_TRACK / REF_MASTERPG 方言)。全
仓库根目录提供兼容 Podman Compose 与 Docker Compose 的开发中间件栈 `compose.yaml`,包含:
- **共享信箱 MySQL**`mysql:8.4` LTS,端口 3306,库 `cdairport`):容器启动时自动执行 `deploy/dev/mysql-init/01-mailbox.sql` 创建本地联调所需的 `CMINMSGS``CMINMSGS_HST``COUTMSGS` 模拟表。
- **自有 PostgreSQL**`postgres:17-alpine`,端口 5432,库 `msgx`):容器提供干净数据库,应用启动时由 Flyway(`db/migration/V1.0.0__own_pg_pipeline.sql`)自动建自有表。
- **Redis / 动态与快照**(开源分叉 `valkey/valkey:8-alpine`,端口 6379):100% 兼容 Redis 7.2+ 协议与 Lua 脚本,支持 `--appendonly yes`
- **自有 PostgreSQL**`postgres:17-alpine`,端口 5432,库 `msgx`):容器提供干净数据库,应用启动时由 Flyway(`db/migration/V1__flight_state_baseline.sql`)自动建自有表。
- **Valkey**`valkey/valkey:8-alpine`,端口 6379):本地中间件兼容服务,不承担航班状态权威或日计划处理
- **Kafka**`apache/kafka:3.8.0` KRaft 单节点,端口 9092):listener `PLAINTEXT://localhost:9092``default.replication.factor=1`,已预配幂等生产者与 acks=all 所需的单节点参数。
### 快速启动
@@ -169,7 +164,7 @@ MICRONAUT_ENVIRONMENTS=dev ./gradlew run # dev stub 冒烟:内存 stub,无
- [docs/user-stories.md](docs/user-stories.md):阶段 A US-01US-14、延后清场 US-15、上线 Epic、
legacy HTTP 去留及逐项文档 TODO;包含验收标准、依赖、实现差距与待确认问题。
(原 ACM2-1522 文档整改清单 user-stories-todo.md 已收敛完成并移除,跟踪记录见 Plane。)
- [docs/decision-flight-state.md](docs/decision-flight-state.md)有效决策摘要——单库权威已采纳,固定槽位方案已撤销;历史全文另存
- [docs/flight-state.md](docs/flight-state.md)航班状态的唯一现行设计规范;历史方案不作为实现依据
- [docs/legacy/](docs/legacy/):外部参考/基线材料(自 legacy 仓库拷贝,非本系统文档)——
`msgexchange-api-legacy-user-stories.md`legacy 行为对拍基线,ACMA-4)、`unisysaodbsis.xsd`、
`SIS_AODB_RMS-V0.1.md`(消息结构唯一事实源;CIIMS 中间件交换模型)。