Files
msgexchange-v2/docs/spec-boundary-closure.md
T

52 lines
4.2 KiB
Markdown
Raw Normal View History

2026-09-13 16:01:07 +08:00
# 需求边界闭合方案
2026-09-13 16:01:07 +08:00
## 1. 目标
2026-09-13 16:01:07 +08:00
阶段 A 闭合 `US-01``US-14``OPS-1``OPS-4``US-15` 保留为阶段 B 边界。
2026-09-13 16:01:07 +08:00
- 需求与验收以 `US-xx``OPS-x` 为唯一依据,本文件只做实施覆盖映射。
- 实现必须遵守 `D1``D4``PRE-1``PRE-8``INV-1``INV-22``CLM-3``CLM-10``C-1``C-29`
- 参数、指标和错误分类只引用 `PARAM:<key>``reference.md`,不重复取值。
- `Q2``Q16` 未定案时只阻断对应验收,不补写猜测。
2026-09-13 16:01:07 +08:00
## 2. 边界
2026-09-13 16:01:07 +08:00
- 航班当前态只存自有 PG;不引入 Redis、阶段 A 的 ES、新业务库、并行主泵或分布式锁。
- 共享 MySQL 只做契约内读写与回填;不建表、不增列、不迁移、不写共享历史表(`C-14`)。
- 生产保持单活动实例;不承诺端到端恰好一次、跨 `FLID` 顺序或未经验证的 Oracle 11g 支持。
- `US-15` 未启用前遵守 `D1`:历史写入未确认成功时航班清场删除 0 条。
- 进度与排期只记 Plane,本文件不记录完成状态。
2026-09-13 16:01:07 +08:00
## 3. 需求覆盖
2026-09-13 16:01:07 +08:00
| 需求 | 必须闭合的能力 | 约束 / 缺口锚点 |
|---|---|---|
| `US-01` | 按 ID 有限采集、持久水位、幂等入队、空洞与中断恢复 | `INV-2``INV-5``Q2` |
| `US-02` | 安全兼容注入,落信确认与业务完成分离 | `C-28``Q3``[G-COMPAT-HTTP]` |
| `US-03` | 严格 FIFO、安全解码、身份去重、事务提交与持久重试 | `INV-3``INV-6``INV-10``INV-17``Q6``Q11``Q15` |
| `US-04` | 忽略报文在身份绑定后无业务副作用终结并回填 | `INV-8``INV-9``[G-IGNORE]` |
| `US-05` | ADFT、FDEL、29 类 FLOP、完整航班态及主/共享关系 | `INV-11``INV-22``Q8``Q13``Q14``Q16``[G-FLOP-IDEMPOTENT]``[G-MAFL]``[G-SRVT-VIPF]` |
| `US-06` | DNLD/RESP 整包快照、请求守卫、迟到应答隔离 | `INV-12``INV-15``INV-19``Q5``Q13``[G-RESP-GUARD]` |
| `US-07` | Kafka 至少一次投递、同 `FLID` 保序、schd 聚合、失败与清理 | `D3``INV-10``C-29``Q4``[G-KAFKA-D3]``[G-EVENT-RETENTION]` |
| `US-08` | 14 类 RQRD、1 类 RQFD、出站落信、开放请求唯一、匹配与超时 | `C-23``C-24``Q3``Q5``Q8``Q10``Q14``[G-REQ-TRACK]``[G-REQ-OPEN-UNIQUE]``[G-REQ-TRACK-RETENTION]` |
| `US-09` | 终态回填意图、后台补偿、四结果、放弃与人工恢复 | `INV-7``INV-8``C-5``C-8``Q7``Q9``[G-BACKFILL-BACKOFF]``C-6` 不成立时闭合 `[G-REPLAY-CHANNEL]` |
| `US-10` | 可查询、可预览、白名单重放、风险预检、授权与审计 | `CLM-3``Q6` |
| `US-11` | 已了结终态归档、去重影子、竞态复查及独立保留期 | `D4``C-14``C-16``[G-PROC-HST]``[G-HST-RETENTION]` |
| `US-12` | 从 PG 权威态查询实时主航班,固定契约且依赖失败不伪装为空 | `INV-11``Q3` |
| `US-13` | 21 类参考主数据完整校验、原子发布、失败保旧 | `Q8` |
| `US-14` | 机位/登机桥映射原子发布,PSDT 只读计算 | `Q8` |
| `US-15` | 阶段 B 历史归档成功后清场及删除事件恢复 | `D1``INV-18``Q9``[G-FLIGHT-HIST-RETENTION]` |
| `OPS-1` | 真实适配器、配置与单写者拒启,失权停写,安全停机 | `D2``PRE-5` |
| `OPS-2` | 真实健康、积压/失败指标、告警、受控处置与敏感信息保护 | `reference.md` |
| `OPS-3` | 影子数据库、topic、服务身份隔离并禁生产写 | `PRE-1` |
| `OPS-4` | 对拍、切流观察、恢复演练及完整回退规程 | `C-1``C-29` |
2026-09-13 16:01:07 +08:00
## 4. 统一验收
2026-09-13 16:01:07 +08:00
- 每个 PR 标明 `US-xx/验收条目`、相关 `Q`、迁移、配置、恢复影响和未包含范围。
- 排序、重试、幂等、投递必须覆盖 `invariants.md` 的验证映射;业务类型必须有 golden 样例。
- 时间测试使用 `TestClocks.kt`;领域与适配器测试使用内存实现,事务与迁移使用既有 PG 测试设施。
- 自动化测试禁止 `Thread.sleep` 和真实外部基础设施;Kafka/MySQL 现场验收单独留证。
- 使用锁定的 JDK 25、Micronaut 5.1.3 及现有 KSP/Jackson 编译参数,不升级或重构无关模块。
- 真实适配器、契约、测试及对应 `OPS-x` 未闭合时,不得宣称需求或生产切流完成。