feat(flight-state): add V1.3.0 detail tables and domain command engine

Introduce lossless detail-table schema and FlightStateEngine command model
per flight-state-design-v2 (FieldCommand, FlightNextState, collection semantics).
This commit is contained in:
windyboy
2026-09-08 11:26:16 +08:00
parent cd5de56937
commit 57bb5ea233
4 changed files with 333 additions and 0 deletions
@@ -0,0 +1,146 @@
-- flight-state-design-v2 (ACM2-29): lossless detail tables + tracking columns
ALTER TABLE flight_schd
ADD COLUMN IF NOT EXISTS last_message_id VARCHAR(64),
ADD COLUMN IF NOT EXISTS state_version BIGINT NOT NULL DEFAULT 0;
ALTER TABLE schd_gen
ADD COLUMN IF NOT EXISTS last_message_id VARCHAR(64);
CREATE TABLE IF NOT EXISTS flight_gate (
flid VARCHAR(32) NOT NULL,
ordinal INTEGER NOT NULL,
source_seq VARCHAR(64),
record_version BIGINT NOT NULL DEFAULT 0,
gate VARCHAR(64),
pgot VARCHAR(64),
pgct VARCHAR(64),
gotm VARCHAR(64),
gctm VARCHAR(64),
gtyp VARCHAR(64),
created_at TIMESTAMP(6) WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP(6) WITH TIME ZONE NOT NULL,
PRIMARY KEY (flid, ordinal)
);
CREATE TABLE IF NOT EXISTS flight_checkin (
flid VARCHAR(32) NOT NULL,
ordinal INTEGER NOT NULL,
source_seq VARCHAR(64),
record_version BIGINT NOT NULL DEFAULT 0,
chkc VARCHAR(64),
ccls VARCHAR(64),
pcot VARCHAR(64),
pcct VARCHAR(64),
cotm VARCHAR(64),
cctm VARCHAR(64),
ctyp VARCHAR(64),
created_at TIMESTAMP(6) WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP(6) WITH TIME ZONE NOT NULL,
PRIMARY KEY (flid, ordinal)
);
CREATE TABLE IF NOT EXISTS flight_belt (
flid VARCHAR(32) NOT NULL,
ordinal INTEGER NOT NULL,
source_seq VARCHAR(64),
record_version BIGINT NOT NULL DEFAULT 0,
belt VARCHAR(64),
bcls VARCHAR(64),
pcot VARCHAR(64),
pcct VARCHAR(64),
fbag VARCHAR(64),
lbag VARCHAR(64),
btyp VARCHAR(64),
created_at TIMESTAMP(6) WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP(6) WITH TIME ZONE NOT NULL,
PRIMARY KEY (flid, ordinal)
);
CREATE TABLE IF NOT EXISTS flight_stand_plan (
flid VARCHAR(32) NOT NULL,
ordinal INTEGER NOT NULL,
source_seq VARCHAR(64),
record_version BIGINT NOT NULL DEFAULT 0,
psst VARCHAR(64),
stst VARCHAR(64),
stet VARCHAR(64),
created_at TIMESTAMP(6) WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP(6) WITH TIME ZONE NOT NULL,
PRIMARY KEY (flid, ordinal)
);
CREATE TABLE IF NOT EXISTS flight_chute (
flid VARCHAR(32) NOT NULL,
ordinal INTEGER NOT NULL,
source_seq VARCHAR(64),
record_version BIGINT NOT NULL DEFAULT 0,
chut VARCHAR(64),
chcls VARCHAR(64),
pcbt VARCHAR(64),
pcet VARCHAR(64),
cbtm VARCHAR(64),
cetm VARCHAR(64),
chtyp VARCHAR(64),
created_at TIMESTAMP(6) WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP(6) WITH TIME ZONE NOT NULL,
PRIMARY KEY (flid, ordinal)
);
CREATE TABLE IF NOT EXISTS flight_delay (
flid VARCHAR(32) NOT NULL,
ordinal INTEGER NOT NULL,
source_seq VARCHAR(64),
record_version BIGINT NOT NULL DEFAULT 0,
code VARCHAR(64),
strt VARCHAR(64),
dura VARCHAR(64),
remc VARCHAR(80),
created_at TIMESTAMP(6) WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP(6) WITH TIME ZONE NOT NULL,
PRIMARY KEY (flid, ordinal)
);
CREATE TABLE IF NOT EXISTS flight_bridge_op (
flid VARCHAR(32) NOT NULL,
ordinal INTEGER NOT NULL,
source_seq VARCHAR(64),
record_version BIGINT NOT NULL DEFAULT 0,
abdg VARCHAR(64),
abop VARCHAR(64),
aotm VARCHAR(64),
created_at TIMESTAMP(6) WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP(6) WITH TIME ZONE NOT NULL,
PRIMARY KEY (flid, ordinal)
);
CREATE TABLE IF NOT EXISTS flight_chock_op (
flid VARCHAR(32) NOT NULL,
ordinal INTEGER NOT NULL,
source_seq VARCHAR(64),
record_version BIGINT NOT NULL DEFAULT 0,
chid VARCHAR(64),
chst VARCHAR(64),
chtm VARCHAR(64),
created_at TIMESTAMP(6) WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP(6) WITH TIME ZONE NOT NULL,
PRIMARY KEY (flid, ordinal)
);
CREATE TABLE IF NOT EXISTS flight_route_point (
flid VARCHAR(32) NOT NULL,
ordinal INTEGER NOT NULL,
source_seq VARCHAR(64),
record_version BIGINT NOT NULL DEFAULT 0,
route_kind VARCHAR(8) NOT NULL,
apcd VARCHAR(64),
scat VARCHAR(64),
scdt VARCHAR(64),
created_at TIMESTAMP(6) WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP(6) WITH TIME ZONE NOT NULL,
PRIMARY KEY (flid, ordinal)
);
CREATE INDEX IF NOT EXISTS idx_flight_gate_flid ON flight_gate (flid);
CREATE INDEX IF NOT EXISTS idx_flight_checkin_flid ON flight_checkin (flid);
CREATE INDEX IF NOT EXISTS idx_flight_belt_flid ON flight_belt (flid);