Files
msgexchange-v2/src/main/resources/db/migration/V2.0.0__aux_tables.sql
T
windyboy 2175c352f6 fix(processing): WP1 核心语义(ACM2-10 U06/U08/U10/U11)
- U06/N03:Dispatcher 逐条循环显式排除 KAFKA_SCHD(唯一出口 flushSchd 批量聚合),
  修复 schd 事件被无条件 markSent 吞掉、flush 永远 claim 不到的整链死路;flush 失败整批
  保持 PENDING、lastFlush 仅成功后推进(N24)
- U08 部分:Pump/Dispatcher loop 异常隔离(单次异常不静默死亡,U12 补告警日志);
  processOne FAILED 入口 attempts 毒丸升级 DEAD(防退避到期后无限重试);
  N28:backoffFor(attempt≤0) 下界保护不再抛异常
- U10/N21:未注册 handler → FAILED(UNSUPPORTED)+退避(绝不写终态);占位安全化——
  HistorySweep.pickHistory 占位改空集(T07 修订)、SnapshotFlow staging 未实装改
  FAILED(UNSUPPORTED)+退避而非 DEAD(N05),CAS 冲突 FAILED(INFRA)+退避(N06 紧循环修复)
- U11/T06:decode 失败差异化——MALFORMED→DEAD 不重试;CODEC_ERROR→FAILED 可重放
- 新增 ErrorClass.UNSUPPORTED;单测:DispatcherTickTest(3)/MessageProcessorTest(6)/
  PipelinePropsTest(2),19 个测试全绿
2026-09-06 18:19:04 +08:00

83 lines
3.8 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =====================================================================
-- ACMA-8 v4 数据模型(六表)· Flyway 基线迁移
-- 与 issue「综合架构设计」数据模型节逐字一致;影子实例在独立 schema 执行同一脚本。
--
-- U04/R01 前置声明:本脚本只建六张辅助表,假定 CMINMSGS/CMINMSGS_HST/COUTMSGS 等 legacy
-- 旧表已存在(本仓库不声明旧表 V1,归 legacy 仓库维护)。全新空库请先按 legacy schema
-- 建旧表再执行本脚本,否则收报首句 SQL 会报表不存在(详见 README「数据库初始化」)。
-- =====================================================================
-- ① 处理状态伴生表(不动 CMINMSGS 旧列;
-- 回滚兼容:SUCCEEDED 时回填 CMINMSGS.DATE_PROCESSED/STATUS,旧系统可接管续跑)
CREATE TABLE PROC_STATE (
CMINMSGS_ID BIGINT PRIMARY KEY,
STATE VARCHAR(16) NOT NULL, -- PENDING/FAILED/SUCCEEDED/SKIPPED/DEAD
IDENTITY_KEY VARCHAR(200) NULL, -- SNDR|TYPE|STYP|SEQNdecode 后首次绑定(I3
ATTEMPTS INT NOT NULL DEFAULT 0,
NEXT_ATTEMPT_AT TIMESTAMP NULL,
ERROR_CLASS VARCHAR(20) NULL, -- MALFORMED/CODEC_ERROR/EXHAUSTED/INFRA/UNSUPPORTED
LAST_ERROR VARCHAR(1000) NULL,
UPDATED_AT TIMESTAMP NOT NULL,
UNIQUE KEY UK_PROC_IDENTITY (IDENTITY_KEY),
INDEX IDX_PROC_HEAD (STATE, CMINMSGS_ID) -- 主泵队头查询(I1
);
-- ② 统一投递事件(outbox)
CREATE TABLE MSG_EVENT (
EVENT_ID BIGINT AUTO_INCREMENT PRIMARY KEY,
TARGET VARCHAR(30) NOT NULL, -- KAFKA:msg / KAFKA:schdA起);ES:flight_hts / REDIS:flightInfoB起)
PARTITION_KEY VARCHAR(64) NULL, -- schd 事件恒为 FLID
PAYLOAD_JSON MEDIUMTEXT NOT NULL,
STATE VARCHAR(16) NOT NULL, -- PENDING/SENT/DEAD
ATTEMPTS INT NOT NULL DEFAULT 0,
NEXT_ATTEMPT_AT TIMESTAMP NULL,
ERROR_CLASS VARCHAR(20) NULL,
LAST_ERROR VARCHAR(1000) NULL,
CREATED_AT TIMESTAMP NOT NULL,
INDEX IDX_EVT_HEAD (TARGET, STATE, EVENT_ID) -- 每 target 队头查询(I1 双层同策略)
);
-- ③ 参考数据 + SCHD generation 元数据(21 类;SCHD_GEN 行 RKEY=日期)
CREATE TABLE REF_DATA (
RTYPE VARCHAR(20) NOT NULL, -- AIRL/ARPT/... | SCHD_GEN
RKEY VARCHAR(64) NOT NULL,
PAYLOAD_JSON MEDIUMTEXT NOT NULL, -- SCHD_GEN: {"flids":[...],"version":N}
VERSION BIGINT NOT NULL DEFAULT 0, -- putGenIfVersion CAS 依据(流程 4
SOURCE VARCHAR(20) NOT NULL, -- ADMINAPI / AODB / PIPELINE
REFRESHED_AT TIMESTAMP NOT NULL,
PRIMARY KEY (RTYPE, RKEY)
);
-- ④ 请求状态机(15 类,流程 6)
CREATE TABLE REQ_TRACK (
REQ_ID BIGINT AUTO_INCREMENT PRIMARY KEY,
REQ_TYPE VARCHAR(20) NOT NULL,
PARAMS_JSON VARCHAR(500) NOT NULL,
STATE VARCHAR(16) NOT NULL, -- REGISTERED/SENT/WAITING/DONE/EXPIRED
COUTMSGS_ID INT NULL,
SENT_AT TIMESTAMP NULL,
COMPLETED_AT TIMESTAMP NULL,
INDEX IDX_REQ_OPEN (REQ_TYPE, STATE)
);
-- ⑤ 泵作业队列(定时任务统一入口:cron 触发入队,主泵 FIFO 执行)
CREATE TABLE PUMP_JOB (
JOB_ID BIGINT AUTO_INCREMENT PRIMARY KEY,
KIND VARCHAR(20) NOT NULL, -- ARCHIVE / HISTORY_SWEEP / PROJECTION_REBUILD
STATE VARCHAR(16) NOT NULL, -- QUEUED/RUNNING/DONE/FAILED
CREATED_AT TIMESTAMP NOT NULL,
UPDATED_AT TIMESTAMP NOT NULL,
LAST_ERROR VARCHAR(1000) NULL
);
-- ⑥ 航班状态权威(阶段 B 启用;此前 Redis 为权威,I5)
CREATE TABLE FLIGHT_STATE (
FLID VARCHAR(32) PRIMARY KEY,
FDAY DATE NOT NULL,
VERSION BIGINT NOT NULL,
MAID VARCHAR(32) NULL,
PAYLOAD_JSON MEDIUMTEXT NOT NULL, -- 投影兼容格式的 FLTR JSON
UPDATED_AT TIMESTAMP NOT NULL,
INDEX IDX_FS_DAY (FDAY, VERSION)
);