feat(acm2-76): 联调栈数据库自动初始化——基础数据/字典/信箱报文/历史索引
- postgres-init:02 建 basicdata schema 与 25 张基础数据表(表列对齐 admin-api secondary 实体注解),03 灌双流 T2 种子(fims_* 待 Q25 不造数); 独立 schema 避免 public 非空导致 Flyway 首次 migrate 失败 - admin-mysql-init:原样引入 admin-api 仓库 adminapi_* 建表与字典/UI 种子, v0.0.2 补 FLIGHT_TASK/FLIGHT_TYPE 条目;compose 强制 utf8mb4 并设 LANG, 防 initdb 客户端落 latin1 造成中文双重编码 - es-init 一次性服务:按 admin-api mapping 建 flight_hts2(别名 flight_hts), 副本置 0 保持单节点 green - dev/mysql-init:CMINMSGS 5 条样例报文(SCHD/FLOP×2/REGN/ARPT), REGN/ARPT 标注现状预期(SKIPPED / DEAD(EXHAUSTED)) - seed-flight.sql:Flyway 建表后手动执行,8 条航班 6 场景 + 资源明细 - admin-api.yml secondary 加 currentSchema=basicdata,public - README:初始化/种子/重建卷/验收边界说明 已用 podman compose 重建数据卷全链实测;ACM2-76 有评审与验收全记录。
This commit is contained in:
@@ -90,12 +90,16 @@ services:
|
||||
admin-mysql:
|
||||
image: mysql:8.4
|
||||
restart: unless-stopped
|
||||
command: ["--mysql-native-password=ON"]
|
||||
# mysql-native-password:兼容 admin-api 旧 MySQL JDBC 的认证方式;
|
||||
# 字符集双保险:服务端默认 utf8mb4,LANG 让 initdb 的 mysql 客户端
|
||||
# 不落到 latin1(否则 UTF-8 种子双重编码成 mojibake)。
|
||||
command: ["--mysql-native-password=ON", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: admin_root_dev_pass
|
||||
MYSQL_DATABASE: adminapi
|
||||
MYSQL_USER: admin_dev
|
||||
MYSQL_PASSWORD: admin_dev_pass
|
||||
LANG: C.UTF-8
|
||||
ports:
|
||||
- "0.0.0.0:13307:3306"
|
||||
volumes:
|
||||
@@ -131,6 +135,17 @@ services:
|
||||
retries: 30
|
||||
start_period: 30s
|
||||
|
||||
# 一次性建历史索引 flight_hts(别名→flight_hts2),映射取自 admin-api 仓库。
|
||||
es-init:
|
||||
image: curlimages/curl:8.10.1
|
||||
restart: "no"
|
||||
depends_on:
|
||||
elasticsearch:
|
||||
condition: service_healthy
|
||||
volumes:
|
||||
- ./deploy/integration/es-init:/init:ro,Z
|
||||
entrypoint: ["/bin/sh", "/init/init-flight-hts.sh"]
|
||||
|
||||
volumes:
|
||||
admin_mysql_data:
|
||||
es_data:
|
||||
|
||||
@@ -0,0 +1,205 @@
|
||||
-- =====================================================================
|
||||
-- deploy/dev/mysql-init/02-mailbox-messages.sql(ACM2-76)
|
||||
-- 共享信箱 CMINMSGS 测试报文种子(DEV ONLY)。本目录被 dev 与 integration
|
||||
-- 两个 compose 共用,脚本只在空数据卷首启时执行;已有卷不补种,需删卷重建。
|
||||
--
|
||||
-- 报文格式:SIS 接口规范(docs/legacy/SIS_AODB_RMS-V0.1.md)META + 类型体,
|
||||
-- XML 按 docs/legacy/unisysaodbsis.xsd;只 INSERT 契约内列,不建表不变更(C-2)。
|
||||
-- INBOX_CURSOR 初值 W=0,应用首启即全部消费。SEQN 1–5,与 01-mailbox.sql
|
||||
-- (仅建表、无数据)无冲突。
|
||||
--
|
||||
-- 两条参考数据报文验证的是【现状行为】,US-13 落地后行为会变,需同步更新:
|
||||
-- · REGN/DNLD:命中 US-04 忽略清单(IgnoreRules)→ SKIPPED + 回填;
|
||||
-- · ARPT/DNLD:合法但不支持(codec 只认 SCHD/FLOP)→ FAILED(UNSUPPORTED)
|
||||
-- → 退避约 15s(max-attempts=5)→ DEAD(EXHAUSTED) → 回填;
|
||||
-- 排在种子最后(MSG_ID 最大),避免压住队头挡住 SCHD/FLOP(US-03 AC1)。
|
||||
-- 航班 FLID 用 800001/800002,与 seed-flight.sql 的 90001–90008 互不干扰。
|
||||
-- =====================================================================
|
||||
|
||||
USE `cdairport`;
|
||||
|
||||
-- ① SCHD/DNLD:一进一出两条 FLTR(覆盖 ROUT/ERUT/GTDT/CKDT/CHDT/CLDT/PSDT 子段)
|
||||
INSERT INTO CMINMSGS
|
||||
(CMINMSGS_CLOB_MSG, CMINMSGS_SUBSYSTEM_TYPE, CMINMSGS_SUBSYSTEM_SUBTYPE,
|
||||
CMINMSGS_SUBSYSTEM_NAME, CMINMSGS_SUBSYSTEM_SEQUENCE, CMINMSGS_SUBSYSTEM_DATE_SENT)
|
||||
VALUES
|
||||
('<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MSG xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="unisysaodbsis.xsd">
|
||||
<META>
|
||||
<SNDR>AODB</SNDR>
|
||||
<SEQN>1</SEQN>
|
||||
<DTTM>20260919120001</DTTM>
|
||||
<TYPE>SCHD</TYPE>
|
||||
<STYP>DNLD</STYP>
|
||||
</META>
|
||||
<SCHD>
|
||||
<RECS>2</RECS>
|
||||
<FLTR>
|
||||
<FLID>800001</FLID>
|
||||
<ALCD>CA</ALCD>
|
||||
<FLNO>CA4104</FLNO>
|
||||
<MVIN>A</MVIN>
|
||||
<SODT>20SEP261235</SODT>
|
||||
<FLTY>S</FLTY>
|
||||
<FLIN>D</FLIN>
|
||||
<ROUT RTNO="1"><APCD>PEK</APCD><SCAT></SCAT><SCDT>20SEP261015</SCDT></ROUT>
|
||||
<ROUT RTNO="2"><APCD>CTU</APCD><SCAT>20SEP261235</SCAT><SCDT></SCDT></ROUT>
|
||||
<ACFT>738</ACFT>
|
||||
<RENO>B-2087</RENO>
|
||||
<TRML>T2</TRML>
|
||||
<MAXP>264</MAXP>
|
||||
<CLDT CLNO="1">
|
||||
<BELT>4</BELT>
|
||||
<BCLS>X</BCLS>
|
||||
<PCOT>20SEP261240</PCOT>
|
||||
<PCCT>20SEP261340</PCCT>
|
||||
<BTYP>D</BTYP>
|
||||
</CLDT>
|
||||
<PSDT PSNO="1">
|
||||
<PSST>105</PSST>
|
||||
<STST>20SEP261240</STST>
|
||||
<STET>20SEP261340</STET>
|
||||
</PSDT>
|
||||
<ERUT RTNO="1"><APCD>PEK</APCD><SCAT></SCAT><SCDT>20SEP261015</SCDT></ERUT>
|
||||
<ERUT RTNO="2"><APCD>CTU</APCD><SCAT>20SEP261235</SCAT><SCDT></SCDT></ERUT>
|
||||
</FLTR>
|
||||
<FLTR>
|
||||
<FLID>800002</FLID>
|
||||
<ALCD>3U</ALCD>
|
||||
<FLNO>3U8885</FLNO>
|
||||
<MVIN>D</MVIN>
|
||||
<SODT>20SEP261510</SODT>
|
||||
<FLTY>S</FLTY>
|
||||
<FLIN>D</FLIN>
|
||||
<ROUT RTNO="1"><APCD>CTU</APCD><SCAT></SCAT><SCDT>20SEP261510</SCDT></ROUT>
|
||||
<ROUT RTNO="2"><APCD>SZX</APCD><SCAT>20SEP261750</SCAT><SCDT></SCDT></ROUT>
|
||||
<ACFT>320</ACFT>
|
||||
<RENO>B-8690</RENO>
|
||||
<TRML>T2</TRML>
|
||||
<MAXP>158</MAXP>
|
||||
<GTDT GTNO="1">
|
||||
<GATE>D06</GATE>
|
||||
<PGOT>20SEP261410</PGOT>
|
||||
<PGCT>20SEP261510</PGCT>
|
||||
<GTYP>D</GTYP>
|
||||
</GTDT>
|
||||
<CKDT CKNO="1">
|
||||
<CHKC>C05</CHKC>
|
||||
<CCLS>Y</CCLS>
|
||||
<PCOT>20SEP261310</PCOT>
|
||||
<PCCT>20SEP261440</PCCT>
|
||||
<CTYP>D</CTYP>
|
||||
</CKDT>
|
||||
<CKDT CKNO="2">
|
||||
<CHKC>C06</CHKC>
|
||||
<CCLS>X</CCLS>
|
||||
<PCOT>20SEP261310</PCOT>
|
||||
<PCCT>20SEP261440</PCCT>
|
||||
<CTYP>D</CTYP>
|
||||
</CKDT>
|
||||
<CHDT CHNO="1">
|
||||
<CHUT>CH04</CHUT>
|
||||
<CCLS>X</CCLS>
|
||||
<PCBT>20SEP261340</PCBT>
|
||||
<PCET>20SEP261500</PCET>
|
||||
<CTYP>D</CTYP>
|
||||
</CHDT>
|
||||
<PSDT PSNO="1">
|
||||
<PSST>101</PSST>
|
||||
<STST>20SEP261330</STST>
|
||||
<STET>20SEP261525</STET>
|
||||
</PSDT>
|
||||
<ERUT RTNO="1"><APCD>CTU</APCD><SCAT></SCAT><SCDT>20SEP261510</SCDT></ERUT>
|
||||
<ERUT RTNO="2"><APCD>SZX</APCD><SCAT>20SEP261750</SCAT><SCDT></SCDT></ERUT>
|
||||
</FLTR>
|
||||
</SCHD>
|
||||
</MSG>', 'SCHD', 'DNLD', 'AODB', 1, '2026-09-19 12:00:01'),
|
||||
|
||||
-- ② FLOP/ACTT:800001 实际到达时间
|
||||
('<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MSG xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="unisysaodbsis.xsd">
|
||||
<META>
|
||||
<SNDR>AODB</SNDR>
|
||||
<SEQN>2</SEQN>
|
||||
<DTTM>20260919120002</DTTM>
|
||||
<TYPE>FLOP</TYPE>
|
||||
<STYP>ACTT</STYP>
|
||||
</META>
|
||||
<FLOP>
|
||||
<FLID>800001</FLID>
|
||||
<FFID>CA-CA4104-A-20SEP261235-D</FFID>
|
||||
<ACTT>20SEP261228</ACTT>
|
||||
</FLOP>
|
||||
</MSG>', 'FLOP', 'ACTT', 'AODB', 2, '2026-09-19 12:00:02'),
|
||||
|
||||
-- ③ FLOP/GTDT:800002 登机门改派 D06 → D08
|
||||
('<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MSG xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="unisysaodbsis.xsd">
|
||||
<META>
|
||||
<SNDR>AODB</SNDR>
|
||||
<SEQN>3</SEQN>
|
||||
<DTTM>20260919120003</DTTM>
|
||||
<TYPE>FLOP</TYPE>
|
||||
<STYP>GTDT</STYP>
|
||||
</META>
|
||||
<FLOP>
|
||||
<FLID>800002</FLID>
|
||||
<FFID>3U-3U8885-D-20SEP261510-D</FFID>
|
||||
<GTDT GTNO="1">
|
||||
<GATE>D08</GATE>
|
||||
<PGOT>20SEP261410</PGOT>
|
||||
<PGCT>20SEP261510</PGCT>
|
||||
<GTYP>D</GTYP>
|
||||
</GTDT>
|
||||
</FLOP>
|
||||
</MSG>', 'FLOP', 'GTDT', 'AODB', 3, '2026-09-19 12:00:03'),
|
||||
|
||||
-- ④ REGN/DNLD:现状行为 = 命中 US-04 忽略清单 → SKIPPED + 回填(US-13 后不再跳过)
|
||||
('<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MSG xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="unisysaodbsis.xsd">
|
||||
<META>
|
||||
<SNDR>AODB</SNDR>
|
||||
<SEQN>4</SEQN>
|
||||
<DTTM>20260919120004</DTTM>
|
||||
<TYPE>REGN</TYPE>
|
||||
<STYP>DNLD</STYP>
|
||||
</META>
|
||||
<RECS>2</RECS>
|
||||
<REGN>
|
||||
<RNUM>B-8692</RNUM>
|
||||
<ITAT>320</ITAT>
|
||||
<ACAL>3U</ACAL>
|
||||
<MAXP>158</MAXP>
|
||||
</REGN>
|
||||
<REGN>
|
||||
<RNUM>B-32D1</RNUM>
|
||||
<ITAT>321</ITAT>
|
||||
<ACAL>3U</ACAL>
|
||||
<MAXP>199</MAXP>
|
||||
</REGN>
|
||||
</MSG>', 'REGN', 'DNLD', 'AODB', 4, '2026-09-19 12:00:04'),
|
||||
|
||||
-- ⑤ ARPT/DNLD 排最后:现状行为 = 合法但不支持 → FAILED(UNSUPPORTED)
|
||||
-- → 退避约 15s → DEAD(EXHAUSTED) → 回填;US-13 后预期改为 SKIPPED
|
||||
('<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MSG xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="unisysaodbsis.xsd">
|
||||
<META>
|
||||
<SNDR>AODB</SNDR>
|
||||
<SEQN>5</SEQN>
|
||||
<DTTM>20260919120005</DTTM>
|
||||
<TYPE>ARPT</TYPE>
|
||||
<STYP>DNLD</STYP>
|
||||
</META>
|
||||
<RECS>1</RECS>
|
||||
<ARPT>
|
||||
<ITCD>CTU</ITCD>
|
||||
<ICCD>ZUUU</ICCD>
|
||||
<ANAM>CHENGDU SHUANGLIU INTERNATIONAL</ANAM>
|
||||
<ANMC>成都双流国际机场</ANMC>
|
||||
<BDIS>12</BDIS>
|
||||
<CTRY>CN</CTRY>
|
||||
<ACTY>CTU</ACTY>
|
||||
<ATYP>D</ATYP>
|
||||
<HAUL>L</HAUL>
|
||||
</ARPT>
|
||||
</MSG>', 'ARPT', 'DNLD', 'AODB', 5, '2026-09-19 12:00:05');
|
||||
@@ -8,12 +8,12 @@
|
||||
|
||||
| 服务 | 用途 |
|
||||
| --- | --- |
|
||||
| postgres | msgexchange-v2 自有业务数据库;admin-api 使用只读账号 |
|
||||
| postgres | msgexchange-v2 自有业务数据库;admin-api 使用只读账号;基础数据表见 `basicdata` schema |
|
||||
| mysql | 本地共享信箱模拟,复用 `deploy/dev/mysql-init`,不修改外部邮箱结构 |
|
||||
| admin-mysql | admin-api Primary 数据源,独立空库,不与共享信箱混用 |
|
||||
| admin-mysql | admin-api Primary 数据源,首启自动建 `adminapi_*` 表与字典/UI 种子,不与共享信箱混用 |
|
||||
| redis | 保留开发栈的 Valkey 服务,不改变当前应用的数据归属 |
|
||||
| kafka | INTERNAL 用于容器健康检查,EXTERNAL 通告服务器地址 |
|
||||
| elasticsearch | admin-api 历史查询依赖;未预建索引或导入数据 |
|
||||
| elasticsearch | admin-api 历史查询依赖;es-init 预建空索引 `flight_hts`,写入待 US-14 交付 |
|
||||
|
||||
端口和测试凭据在 `compose.integration.yaml`,应用对应值在本目录配置文件。
|
||||
Elasticsearch 旧版本仅用于兼容验证,Apple Silicon 需要 amd64 模拟支持;镜像配置参考 [Elastic Docker 文档](https://www.elastic.co/guide/en/elasticsearch/reference/6.4/docker.html)。
|
||||
@@ -30,10 +30,47 @@ docker compose -f compose.integration.yaml ps
|
||||
```
|
||||
|
||||
该命令创建独立项目的容器、网络和数据卷,不启动两个 Java 应用。
|
||||
首次初始化时创建 PG 只读用户,并为随后由 `msgx_dev` 创建的 public 表和视图授予 SELECT;不授予写入权限。
|
||||
首次初始化时创建 PG 只读用户,为随后由 `msgx_dev` 创建的 public 表和视图授予 SELECT;`02` 脚本另建测试 schema `basicdata` 并授予同权限。均不授予写入权限。
|
||||
初始化脚本只对空数据卷执行,已有卷不会自动补执行或修改密码。
|
||||
SELinux 环境下,初始化目录挂载通过 `Z` 设置容器专用标签;与开发栈共用的信箱目录使用 `z` 共享标签,保持只读挂载。
|
||||
|
||||
## 测试数据库初始化与种子数据
|
||||
|
||||
计划与评审记录见 Plane `ACM2-76`;`basicdata` 是 admin-api 联调的基础数据承载,表列对齐其实体注解,不预设 `REF_MASTER` 物理形态。
|
||||
|
||||
**随首次初始化自动执行**(空卷时):
|
||||
|
||||
- `postgres-init/02-basicdata-schema.sql`:建 schema `basicdata` 与 25 张基础数据表;表与列取自 admin-api `domain/secondary/entity` 的 `@Table`/`@Column` 注解(`C-10`)。独立 schema 而非 `public`,否则首次 Flyway migrate 因 public 非空且无 history 表失败。
|
||||
- `postgres-init/03-basicdata-seed.sql`:`basicdata` 的双流 T2 语境种子,编码与信箱报文一致;季度计划表不造数(`Q25`)。
|
||||
- `../dev/mysql-init/02-mailbox-messages.sql`:向共享信箱 `cdairport.CMINMSGS` 插 5 条样例报文(SCHD/FLOP×2/REGN/ARPT)。该目录与开发栈共用,dev 侧已有卷同样不会自动补种。
|
||||
- `admin-mysql-init/v0.0.1.20190110_adminapi_ddl.sql` 与 `..._initdata.sql`:原样执行 admin-api 仓库迁移脚本,建 4 张 `adminapi_*` 表并灌字典分组/条目(含 `ROUTE_TYPE`)与 UI 默认设置,覆盖 `/dictionary/*`、`/settings/*`。
|
||||
- `admin-mysql-init/v0.0.2_adminapi_dict_extra.sql`:自造字典补充种子,补齐 `FLIGHT_TYPE`(对齐 `sys_flight_type` 的 S/N/C/F)与 `FLIGHT_TASK` 四条;服务端以 compose 强制 utf8mb4、容器设 `LANG=C.UTF-8` 防 initdb 客户端落 latin1 造成中文双重编码。
|
||||
- `es-init`(compose 一次性服务):按 admin-api 仓库的 `v1.2.0_20190428_flightHstMapping.json` 建索引 `flight_hts2`(别名 `flight_hts`)并把副本置 0(单节点保持 green);索引为空,写入待 US-14,已存在则跳过。
|
||||
|
||||
**应用首启后手动执行**(Flyway 建完 16 张业务表之后):
|
||||
|
||||
```sh
|
||||
psql -h 127.0.0.1 -p 15432 -U msgx_dev -d msgx -f deploy/integration/seed-flight.sql
|
||||
```
|
||||
|
||||
`seed-flight.sql` 在事务内写入 6 个场景共 8 条航班(进港/离港/主共享对/延误/取消/过站)及资源明细,可重复执行。
|
||||
|
||||
**重建数据卷**(破坏性操作,仅限测试环境;初始化与种子脚本只在空卷时生效):
|
||||
|
||||
```sh
|
||||
docker compose -f compose.integration.yaml down
|
||||
docker volume rm msgx-integration_pg_data # 基础数据表与种子需重建 PG 卷
|
||||
docker volume rm msgx-integration_mysql_data # 信箱报文种子另需重建 MySQL 卷
|
||||
docker volume rm msgx-integration_admin_mysql_data # 字典/UI 种子另需重建 admin MySQL 卷
|
||||
docker volume rm msgx-integration_es_data # flight_hts 索引另需重建 ES 卷
|
||||
docker compose -f compose.integration.yaml up -d
|
||||
```
|
||||
|
||||
开发栈要补信箱报文,同样删除其 mysql 卷后重启(卷名见 `compose.yaml`)。
|
||||
本文 `docker compose` 命令对 `podman compose` 同样适用;podman 需先启动用户级 API socket(`systemctl --user start podman.socket`)。
|
||||
|
||||
**预期行为**(现状口径,US-13 落地后需更新):应用消费信箱后,SCHD/FLOP 落 `FLIGHT_SCHD` 与明细;REGN 命中忽略清单 `SKIPPED` 并回填;ARPT 按合法但不支持处理,`FAILED(UNSUPPORTED)` 退避约 15 秒后 `DEAD(EXHAUSTED)` 再回填。admin-api 读 `basicdata`,`REF_MASTER` 读取契约待 `Q22`/`C-10` 定稿(参考数据的 SIS 落库本身也是 `G-REF-DATA` 缺口)。
|
||||
|
||||
## 运行 msgexchange-v2
|
||||
|
||||
在应用机器的仓库根目录,用项目要求的 JDK 执行:
|
||||
@@ -62,17 +99,18 @@ java -jar /home/fengzhiqiang/project/airport/chengdu/admin-api/target/admin-api-
|
||||
|
||||
独立 profile 避免加载内置 dev/test/pro 地址,关闭 Eureka 和自动建表,日志只输出控制台。
|
||||
两个 JPA 数据源不能全局强设 PG 方言;启动日志需确认 Primary 为 MySQL、Secondary 为 PostgreSQL。
|
||||
Secondary URL 带 `currentSchema=basicdata,public`,`/basicdata/*` 解析到 `basicdata` 的基础数据表。
|
||||
sys-api 不在本栈,依赖它的操作日志开关接口不可用,不以假响应掩盖缺失依赖。
|
||||
|
||||
## 数据准备与验收边界
|
||||
|
||||
本栈提供数据库连接环境,不等于完整业务联调环境;空库上的基础数据、季度计划、字典和历史查询可能报缺表或缺索引。
|
||||
admin-api Primary 需导入经确认的测试结构与脱敏数据,仅导入 `admin-mysql`,不得导入信箱实例。
|
||||
Secondary 的表与列需匹配 admin-api 实体;参考数据读取契约尚待 `Q22` 定稿,季度计划来源尚待 `Q25` 确认,不根据实体臆造生产迁移或测试数据。
|
||||
本栈提供数据库连接环境,不等于完整业务联调环境。首启已自动覆盖:字典与 UI 设置(admin-mysql 种子)、历史索引 `flight_hts`(空,返回空列表而非 500)、基础数据表与种子(`basicdata`)。
|
||||
剩余边界:季度计划 `fims_*` 只建空表不造数(供数方待 `Q25`),查询返回空;历史数据写入待 US-14 交付。
|
||||
`basicdata` 只对齐 admin-api `domain/secondary/entity` 的表列,不预设 `REF_MASTER` 物理形态(`Q22` 未定稿)。
|
||||
`G-REF-DATA` 标记的静态数据处理缺口不由 Compose 解决。
|
||||
|
||||
验收顺序:服务健康 → 应用驱动和方言 → 确认的表结构及数据 → 基础数据查询 → 季度计划日期与经停关联 → 接口返回对比。
|
||||
PG 只读账号可以查询当前 public 内部表;这是联调权限范围,不是生产最小权限方案。
|
||||
PG 只读账号可以查询 public 内部表与 `basicdata` 测试表(权限范围,不代表 admin-api 已接入 `REF_MASTER`;见上一节)。
|
||||
|
||||
## 停止与排查
|
||||
|
||||
|
||||
@@ -25,7 +25,8 @@ spring:
|
||||
test-on-borrow: true
|
||||
validation-query: SELECT 1
|
||||
secondary:
|
||||
url: jdbc:postgresql://${TEST_SERVER_HOST}:15432/msgx
|
||||
# currentSchema:基础数据表在 basicdata,public 兜底;不设则默认只找 public。
|
||||
url: jdbc:postgresql://${TEST_SERVER_HOST}:15432/msgx?currentSchema=basicdata,public
|
||||
username: admin_reader
|
||||
password: admin_reader_dev_pass
|
||||
driver: org.postgresql.Driver
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
CREATE TABLE `adminapi_datadic_groups` (
|
||||
`group_code` varchar(20) NOT NULL DEFAULT '' COMMENT '分组代码,字典分组代码',
|
||||
`group_name` varchar(50) DEFAULT NULL COMMENT '分组名称,字典分组名称',
|
||||
PRIMARY KEY (`group_code`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='字典分组表,字典的分组描述表';
|
||||
|
||||
|
||||
|
||||
CREATE TABLE `adminapi_datadic_items` (
|
||||
`dataitem_code` varchar(20) NOT NULL DEFAULT '' COMMENT '字典代码,字典代码code',
|
||||
`dataitem_name` varchar(50) DEFAULT NULL COMMENT '字典名称,字典名称',
|
||||
`dataitem_desc` varchar(500) DEFAULT NULL COMMENT '字典描述,字典描述字段',
|
||||
`group_code` varchar(20) DEFAULT NULL COMMENT '字典分组Code,字典分组Code',
|
||||
PRIMARY KEY (`dataitem_code`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='字典表,字典描述表';
|
||||
|
||||
|
||||
|
||||
CREATE TABLE `adminapi_uisettings` (
|
||||
`id` varchar(64) NOT NULL,
|
||||
`userid` varchar(64) NOT NULL COMMENT '用户id,用户id',
|
||||
`env_code` varchar(64) NOT NULL COMMENT '环境配置code , web - 大屏幕环境 mobile - 移动小屏幕 ',
|
||||
`group_code` varchar(64) NOT NULL COMMENT '设置分组,设置分组比如msgalert 消息提醒',
|
||||
`setting_content` varchar(20000) NOT NULL COMMENT '具体的设置内容,json格式的设置内容。不超过60KB',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='ui设置表,用户个人的UI设置习惯';
|
||||
|
||||
|
||||
CREATE TABLE `adminapi_uisettings_default` (
|
||||
`id` varchar(64) NOT NULL,
|
||||
`env_code` varchar(64) NOT NULL COMMENT '环境配置code , web - 大屏幕环境 mobile - 移动小屏幕 ',
|
||||
`group_code` varchar(64) NOT NULL COMMENT '设置分组,设置分组比如msgalert 消息提醒',
|
||||
`setting_content` varchar(20000) NOT NULL COMMENT '具体的设置内容,json格式的设置内容。不超过60KB',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='ui默认设置表,UI的默认设置';
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,23 @@
|
||||
-- =====================================================================
|
||||
-- deploy/integration/admin-mysql-init/v0.0.2_adminapi_dict_extra.sql
|
||||
-- 字典补充种子(本仓库自造,非 admin-api 原件):补齐 FLIGHT_TASK 与
|
||||
-- FLIGHT_TYPE 分组的条目,原 initdata 只建了分组没有条目,只能冒烟
|
||||
-- ROUTE_TYPE。文件名以 v0.0.2 起头,保证在 v0.0.1_* 之后执行(字典
|
||||
-- 分组已由原 initdata 建好,这里只插条目)。
|
||||
--
|
||||
-- 取值口径:FLIGHT_TYPE 对齐 basicdata.sys_flight_type 种子(S/N/C/F);
|
||||
-- FLIGHT_TASK 是人造测试值(admin-api 源码无权威取值表,仅季度计划列
|
||||
-- FLIGHT_TASK 引用该分组),业务联调前需按确认口径替换。
|
||||
-- =====================================================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
INSERT INTO `adminapi_datadic_items` (`dataitem_code`, `dataitem_name`, `dataitem_desc`, `group_code`) VALUES
|
||||
('S', '定期航班', '航班类别:定期(对齐 sys_flight_type)', 'FLIGHT_TYPE'),
|
||||
('N', '非定期航班', '航班类别:非定期(对齐 sys_flight_type)', 'FLIGHT_TYPE'),
|
||||
('C', '包机', '航班类别:包机(对齐 sys_flight_type)', 'FLIGHT_TYPE'),
|
||||
('F', '调机', '航班类别:调机(对齐 sys_flight_type)', 'FLIGHT_TYPE'),
|
||||
('PAX', '客运', '航班任务:客运(人造测试值)', 'FLIGHT_TASK'),
|
||||
('CGO', '货运', '航班任务:货运(人造测试值)', 'FLIGHT_TASK'),
|
||||
('BIZ', '公务', '航班任务:公务(人造测试值)', 'FLIGHT_TASK'),
|
||||
('TRN', '训练', '航班任务:训练(人造测试值)', 'FLIGHT_TASK');
|
||||
@@ -0,0 +1,23 @@
|
||||
#!/bin/sh
|
||||
# =====================================================================
|
||||
# deploy/integration/es-init/init-flight-hts.sh(ACM2-76)
|
||||
# 一次性初始化 ES 历史索引 flight_hts:建 flight_hts2、挂别名、套 mapping。
|
||||
# 幂等:索引已存在即整体跳过;可随 `compose up` 重复执行。
|
||||
# 映射文件 v1.2.0_20190428_flightHstMapping.json 原样取自 admin-api 仓库
|
||||
# src/main/resources/es/(CRLF、自带 PUT 命令行),此处只提取 JSON 体。
|
||||
# =====================================================================
|
||||
set -e
|
||||
ES="http://elasticsearch:9200"
|
||||
|
||||
if curl -fsS -o /dev/null "$ES/_cat/indices/flight_hts2"; then
|
||||
echo "flight_hts2 已存在,跳过初始化"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
curl -fsS -X PUT "$ES/flight_hts2"; echo
|
||||
curl -fsS -X PUT "$ES/flight_hts2/_alias/flight_hts"; echo
|
||||
tr -d '\r' < /init/v1.2.0_20190428_flightHstMapping.json | sed -n '/^{/,$p' > /tmp/flight_hts_mapping.json
|
||||
curl -fsS -X PUT -H 'Content-Type: application/json' --data-binary @/tmp/flight_hts_mapping.json "$ES/flight_hts2/_doc/_mapping"; echo
|
||||
# 单节点联调栈:副本置 0,避免未分配副本分片让集群一直 yellow。
|
||||
curl -fsS -X PUT -H 'Content-Type: application/json' "$ES/flight_hts2/_settings" -d '{"index":{"number_of_replicas":0}}'; echo
|
||||
echo "flight_hts 初始化完成"
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,356 @@
|
||||
-- =====================================================================
|
||||
-- deploy/integration/postgres-init/02-basicdata-schema.sql
|
||||
-- 联调栈基础数据表:admin-api 只读(`C-10`)。
|
||||
--
|
||||
-- 权威口径:表与列直接取自 admin-api 实体
|
||||
-- com.gzzn.omms.adminapi.domain.secondary.entity.baiscdata / .schedule
|
||||
-- 的 @Table / @Column 注解,不改名、不合并、不按 SIS 标签重排。
|
||||
-- 基础数据数据集见 docs/requirements.md「查询侧(admin-api)的数据面」。
|
||||
-- 本 schema 是 admin-api 联调的唯一测试承载;`REF_MASTER` 的物理形态
|
||||
-- 仍待 `Q22` 定稿,定稿前不以本表冒充。
|
||||
--
|
||||
-- 为什么独立 schema 而不是 public:
|
||||
-- public 由应用 Flyway 管辖,docker-entrypoint 先在里面建表会让首次
|
||||
-- migrate 命中「非空 schema 无 history 表」而失败(baselineOnMigrate=false)。
|
||||
-- admin-api 侧用 secondary URL 的 currentSchema=basicdata,public 解析表名。
|
||||
--
|
||||
-- 执行环境:docker-entrypoint-initdb.d,仅空卷首启时以 msgx_dev 运行;
|
||||
-- admin_reader 角色由 01-admin-reader.sql 先建。
|
||||
-- =====================================================================
|
||||
|
||||
CREATE SCHEMA IF NOT EXISTS basicdata;
|
||||
|
||||
COMMENT ON SCHEMA basicdata IS
|
||||
'联调栈基础数据(admin-api 实体口径,只读;表列取自 admin-api secondary 实体注解)。';
|
||||
|
||||
GRANT USAGE ON SCHEMA basicdata TO admin_reader;
|
||||
ALTER DEFAULT PRIVILEGES FOR ROLE msgx_dev IN SCHEMA basicdata
|
||||
GRANT SELECT ON TABLES TO admin_reader;
|
||||
|
||||
SET search_path = basicdata;
|
||||
|
||||
-- ① 国家 SYS_COUNTRY(admin-api SysCountry)
|
||||
CREATE TABLE sys_country (
|
||||
COUNTRY_ID BIGINT NOT NULL PRIMARY KEY,
|
||||
COUNTRY_CODE VARCHAR(16),
|
||||
COUNTRY_NAME_CHN VARCHAR(64),
|
||||
COUNTRY_NAME_ENG VARCHAR(64),
|
||||
OPERATE SMALLINT
|
||||
);
|
||||
|
||||
-- ② 城市 SYS_CITY(SysCity)
|
||||
CREATE TABLE sys_city (
|
||||
CITY_ID BIGINT NOT NULL PRIMARY KEY,
|
||||
CITY_CODE VARCHAR(16),
|
||||
CITY_ICCDE VARCHAR(16),
|
||||
CITY_NAME_CHN VARCHAR(64),
|
||||
CITY_NAME_ENG VARCHAR(64),
|
||||
COUNTRY_ID BIGINT,
|
||||
MAIN_CITY_TAG NUMERIC(18,0),
|
||||
OPERATE NUMERIC(18,0),
|
||||
TEL_CITY_CODE VARCHAR(16)
|
||||
);
|
||||
|
||||
-- ③ 机场集团 SYS_AIRPORTGROUP(SysAirportGroup)
|
||||
CREATE TABLE sys_airportgroup (
|
||||
AIRPORT_GROUP_ID BIGINT NOT NULL PRIMARY KEY,
|
||||
AIRPORT_GROUP_CODE VARCHAR(16),
|
||||
AIRPORT_GROUP_NAME VARCHAR(64)
|
||||
);
|
||||
|
||||
-- ④ 机场 SYS_AIRPORT(SysAirport;haul/operate 为无注解字段,列名即字段名)
|
||||
CREATE TABLE sys_airport (
|
||||
AIRPORT_ID BIGINT NOT NULL PRIMARY KEY,
|
||||
AIRPORT_CODE VARCHAR(16),
|
||||
AIRPORT_CODE_CAA VARCHAR(16),
|
||||
AIRPORT_CODE_IATA VARCHAR(16),
|
||||
AIRPORT_CODE_ICAO VARCHAR(16),
|
||||
AIRPORT_GROUP_ID BIGINT,
|
||||
AIRPORT_NAME_CHN VARCHAR(64),
|
||||
AIRPORT_NAME_ENG VARCHAR(64),
|
||||
BRIEF_NAME_CHN VARCHAR(64),
|
||||
BRIEF_NAME_CHN_COPY VARCHAR(64),
|
||||
BRIEF_NAME_ENG VARCHAR(64),
|
||||
CITY_ID BIGINT,
|
||||
HAUL VARCHAR(8),
|
||||
HOST_FLAG NUMERIC(18,0),
|
||||
INTERNATIONAL_FLAG NUMERIC(18,0),
|
||||
OPERATE NUMERIC(18,0)
|
||||
);
|
||||
|
||||
-- ⑤ 航空集团 SYS_AIRLINEGROUP(SysAirlineGroup)
|
||||
CREATE TABLE sys_airlinegroup (
|
||||
AIRLINE_GROUP_ID BIGINT NOT NULL PRIMARY KEY,
|
||||
AIRLINE_GROUP_CODE VARCHAR(16),
|
||||
AIRLINE_GROUP_NAME VARCHAR(64),
|
||||
AIRLINE_GROUP_CODE_CAA VARCHAR(16),
|
||||
AIRLINE_GROUP_CODE_IATA VARCHAR(16),
|
||||
AIRLINE_GROUP_CODE_ICAO VARCHAR(16)
|
||||
);
|
||||
|
||||
-- ⑥ 航空公司 SYS_AIRLINE(SysAirline;code/namc/name/operate 为无注解字段)
|
||||
CREATE TABLE sys_airline (
|
||||
AIRLINE_ID BIGINT NOT NULL PRIMARY KEY,
|
||||
AIRLINE_CODE VARCHAR(16),
|
||||
AIRLINE_CODE_CAA VARCHAR(16),
|
||||
AIRLINE_CODE_IATA VARCHAR(16),
|
||||
AIRLINE_CODE_ICAO VARCHAR(16),
|
||||
AIRLINE_GROUP_ID BIGINT,
|
||||
AIRLINE_NAME VARCHAR(64),
|
||||
AIRLINE_NAME_ENG VARCHAR(64),
|
||||
BRIEF_NAME_CHN VARCHAR(64),
|
||||
BRIEF_NAME_ENG VARCHAR(64),
|
||||
CODE VARCHAR(16),
|
||||
COUNTRY_ID BIGINT,
|
||||
HOST_FLAG NUMERIC(18,0),
|
||||
INTERNATIONAL_FLAG NUMERIC(18,0),
|
||||
NAMC VARCHAR(64),
|
||||
NAME VARCHAR(64),
|
||||
OPERATE NUMERIC(18,0),
|
||||
PARENT_AIRLINE_ID BIGINT
|
||||
);
|
||||
|
||||
-- ⑦ 机型分组 SYS_AIRCRAFTTYPEGROUP(SysAircrafttypeGroup)
|
||||
CREATE TABLE sys_aircrafttypegroup (
|
||||
AIRCRAFTTYPEGROUP_ID BIGINT NOT NULL PRIMARY KEY,
|
||||
AIRCRAFTTYPEGROUP_CODE VARCHAR(16),
|
||||
AIRCRAFTTYPEGROUP_NAME VARCHAR(64)
|
||||
);
|
||||
|
||||
-- ⑧ 机型 SYS_AIRCRAFTTYPE(SysAircrafttype;chap/operate/transitstoptime 无注解)
|
||||
CREATE TABLE sys_aircrafttype (
|
||||
AIRCRAFT_TYPE_CODE VARCHAR(16) NOT NULL PRIMARY KEY,
|
||||
AIRCRAFT_HEIGHT NUMERIC(18,4),
|
||||
AIRCRAFT_LENGTH NUMERIC(18,4),
|
||||
AIRCRAFT_TYPE_CODE_CAA VARCHAR(16),
|
||||
AIRCRAFT_TYPE_CODE_IATA VARCHAR(16),
|
||||
AIRCRAFT_TYPE_CODE_ICAO VARCHAR(16),
|
||||
AIRCRAFT_TYPE_NAME VARCHAR(64),
|
||||
AIRCRAFT_WIDTH NUMERIC(18,4),
|
||||
AIRCRAFTTYPEGROUP_ID BIGINT,
|
||||
CHAP VARCHAR(16),
|
||||
MAX_AIRBRIDGES NUMERIC(18,0),
|
||||
MAX_FREIGHT_WEIGHT NUMERIC(18,4),
|
||||
MAX_PASSENGERS NUMERIC(18,0),
|
||||
MAX_TAKEOFF_WEIGHT NUMERIC(18,4),
|
||||
OPERATE NUMERIC(18,0),
|
||||
TRANSITSTOPTIME NUMERIC(18,0)
|
||||
);
|
||||
|
||||
-- ⑨ 机号 SYS_AIRCRAFT(SysAircraft;operate/owid 无注解)
|
||||
CREATE TABLE sys_aircraft (
|
||||
AIRCRAFT_ID BIGINT NOT NULL PRIMARY KEY,
|
||||
AIRCRAFT_NUMBER VARCHAR(32),
|
||||
AIRCRAFT_OWNER_CODE VARCHAR(16),
|
||||
AIRCRAFT_TYPE_CODE VARCHAR(16),
|
||||
AIRLINE_CODE VARCHAR(16),
|
||||
MAX_AIRBRIDGES NUMERIC(18,0),
|
||||
MAX_FREIGHT_WEIGHT NUMERIC(18,4),
|
||||
MAX_PASSENGERS NUMERIC(18,0),
|
||||
MAX_TAKEOFF_WEIGHT NUMERIC(18,4),
|
||||
OPERATE NUMERIC(18,0),
|
||||
OWID NUMERIC(18,0)
|
||||
);
|
||||
|
||||
-- ⑩ 航班类型 SYS_FLIGHT_TYPE(SysFlightType;Byte 映射 SMALLINT)
|
||||
CREATE TABLE sys_flight_type (
|
||||
FLIGHT_TYPE_CODE VARCHAR(8) NOT NULL PRIMARY KEY,
|
||||
FLIGHT_TYPE_CAA_CODE VARCHAR(8),
|
||||
FLIGHT_TYPE_NAME VARCHAR(64),
|
||||
C_TAG VARCHAR(8),
|
||||
VIP_TAG VARCHAR(8),
|
||||
FLIGHT_TYPE_NAME_CN VARCHAR(64),
|
||||
OPERATE SMALLINT
|
||||
);
|
||||
|
||||
-- ⑪ 航班外部状态码 SYS_FLIGHT_STATUS(SysFlightStatus)
|
||||
CREATE TABLE sys_flight_status (
|
||||
STTC VARCHAR(16) NOT NULL PRIMARY KEY,
|
||||
ABNS VARCHAR(64),
|
||||
STDC VARCHAR(64),
|
||||
STTD VARCHAR(8)
|
||||
);
|
||||
|
||||
-- ⑫ 航班代理单位 SYS_FLIGHTAGENT(SysFlightAgent)
|
||||
CREATE TABLE sys_flightagent (
|
||||
FLIGHTAGENT_ID VARCHAR(32) NOT NULL PRIMARY KEY,
|
||||
FLIGHTAGENT_NAME VARCHAR(64),
|
||||
OGID VARCHAR(32)
|
||||
);
|
||||
|
||||
-- ⑬ 延误异常定义 FIMS_FLIGHTSTATUS_DEFINITION(FimsFlightStatusDefinition)
|
||||
CREATE TABLE fims_flightstatus_definition (
|
||||
FLIGHTSTATUSDEF_REC_ID BIGINT NOT NULL PRIMARY KEY,
|
||||
FLIGHT_STATUS VARCHAR(16),
|
||||
FLIGHT_STATUS_TYPE VARCHAR(16),
|
||||
FLIGHT_STATUS_DESC VARCHAR(128),
|
||||
ENABLED_FLAG VARCHAR(16),
|
||||
DCOD VARCHAR(16),
|
||||
DCDN BIGINT,
|
||||
DDES VARCHAR(128),
|
||||
DDSC VARCHAR(128),
|
||||
OPERATE SMALLINT
|
||||
);
|
||||
|
||||
-- ⑭ 航站楼 ORMS_TERMINAL(OrmsTerminal;operate 无注解)
|
||||
CREATE TABLE orms_terminal (
|
||||
TERMINAL_CODE VARCHAR(16) NOT NULL PRIMARY KEY,
|
||||
OPERATE NUMERIC(18,0),
|
||||
TERMINAL_NAME VARCHAR(64)
|
||||
);
|
||||
|
||||
-- ⑮ 航站楼区域 ORMS_TERMINALAREA(OrmsTerminalarea)
|
||||
CREATE TABLE orms_terminalarea (
|
||||
TERMINAL_AREA_CODE VARCHAR(16) NOT NULL PRIMARY KEY,
|
||||
ROUTE_TYPE VARCHAR(8),
|
||||
TERMINAL_AREA_NAME VARCHAR(64),
|
||||
TERMINAL_CODE VARCHAR(16)
|
||||
);
|
||||
|
||||
-- ⑯ 机位类型 ORMS_STANDTYPE(OrmsStandType)
|
||||
CREATE TABLE orms_standtype (
|
||||
STAND_TYPE VARCHAR(32) NOT NULL PRIMARY KEY,
|
||||
STAND_TYPE_DESC VARCHAR(64)
|
||||
);
|
||||
|
||||
-- ⑰ 机位 ORMS_STAND(OrmsStand;ddgt/digt/maxflightnum/operate/satc/stml 无注解)
|
||||
CREATE TABLE orms_stand (
|
||||
STAND_CODE VARCHAR(16) NOT NULL PRIMARY KEY,
|
||||
CURRENT_FLIGHT_ID BIGINT,
|
||||
DDGT VARCHAR(16),
|
||||
DIGT VARCHAR(16),
|
||||
FSTAND_CODE VARCHAR(16),
|
||||
ICON_LENGTH NUMERIC(18,4),
|
||||
ICON_WIDTH NUMERIC(18,4),
|
||||
LSTAND_CODE VARCHAR(16),
|
||||
MAX_PERMIT NUMERIC(18,0),
|
||||
MAXFLIGHTNUM NUMERIC(18,0),
|
||||
OPERATE NUMERIC(18,0),
|
||||
PIER_CODE VARCHAR(16),
|
||||
POS_X NUMERIC(18,4),
|
||||
POS_Y NUMERIC(18,4),
|
||||
RSTAND_CODE VARCHAR(16),
|
||||
SATC VARCHAR(16),
|
||||
STAND_AREA_CODE VARCHAR(16),
|
||||
STAND_LAYOUTED NUMERIC(18,0),
|
||||
STAND_LENGTH NUMERIC(18,4),
|
||||
STAND_NAME VARCHAR(64),
|
||||
STAND_ORDER NUMERIC(18,0),
|
||||
STAND_STATUS NUMERIC(18,0),
|
||||
STAND_TYPE VARCHAR(16),
|
||||
STAND_WIDTH NUMERIC(18,4),
|
||||
STML VARCHAR(16),
|
||||
TERMINAL_AREA_CODE VARCHAR(16)
|
||||
);
|
||||
|
||||
-- ⑱ 机位廊桥 ORMS_STAND_AIRBRIDGE(OrmsStandAirbridge + OrmsStandAirbridgePK)
|
||||
CREATE TABLE orms_stand_airbridge (
|
||||
STAND_CODE VARCHAR(16) NOT NULL,
|
||||
AIRBRIDGE_CODE VARCHAR(16) NOT NULL,
|
||||
PRIMARY KEY (STAND_CODE, AIRBRIDGE_CODE)
|
||||
);
|
||||
|
||||
-- ⑲ 登机门 ORMS_GATE(OrmsGate;gtml/operate 无注解)
|
||||
CREATE TABLE orms_gate (
|
||||
GATE_CODE VARCHAR(16) NOT NULL PRIMARY KEY,
|
||||
ACTION_ORDER NUMERIC(18,0),
|
||||
GATE_CATEGORY VARCHAR(8),
|
||||
GATE_NAME VARCHAR(64),
|
||||
GATE_STATUS NUMERIC(18,0),
|
||||
GATE_TYPE VARCHAR(8),
|
||||
GTML VARCHAR(16),
|
||||
ICON_LENGTH NUMERIC(18,4),
|
||||
ICON_WIDTH NUMERIC(18,4),
|
||||
OPERATE NUMERIC(18,0),
|
||||
PIER_CODE VARCHAR(16),
|
||||
POS_X NUMERIC(18,4),
|
||||
POS_Y NUMERIC(18,4),
|
||||
STAND_LAYOUTED NUMERIC(18,0),
|
||||
TERMINAL_AREA_CODE VARCHAR(16)
|
||||
);
|
||||
|
||||
-- ⑳ 行李滑槽 ORMS_CHUT(OrmsChut;bcat/btml/operate 无注解)
|
||||
CREATE TABLE orms_chut (
|
||||
CHUT_CODE VARCHAR(16) NOT NULL PRIMARY KEY,
|
||||
BCAT VARCHAR(16),
|
||||
BTML VARCHAR(16),
|
||||
CHUT_LENGTH NUMERIC(18,4),
|
||||
CHUT_NAME VARCHAR(64),
|
||||
CHUT_STATUS VARCHAR(8),
|
||||
OPERATE NUMERIC(18,0)
|
||||
);
|
||||
|
||||
-- ㉑ 值机柜台 ORMS_CHECKINDESK(OrmsCheckindesk;ccat/ctra/operate 无注解)
|
||||
CREATE TABLE orms_checkindesk (
|
||||
CHECKINDESK_CODE VARCHAR(16) NOT NULL PRIMARY KEY,
|
||||
CCAT VARCHAR(16),
|
||||
CHECKIN_GROUP_CODE VARCHAR(16),
|
||||
CHECKINDESK_NAME VARCHAR(64),
|
||||
CHECKINDESK_STATUS VARCHAR(8),
|
||||
CHUT_CODE VARCHAR(16),
|
||||
CTRA VARCHAR(8),
|
||||
NEXTCHECKINDESK_CODE VARCHAR(16),
|
||||
OPERATE NUMERIC(18,0),
|
||||
TERMINAL_AREA_CODE VARCHAR(16)
|
||||
);
|
||||
|
||||
-- ㉒ 值机岛 ORMS_CHECKIN_GROUP(CheckinGroup)
|
||||
CREATE TABLE orms_checkin_group (
|
||||
CHECKIN_GROUP_CODE VARCHAR(16) NOT NULL PRIMARY KEY,
|
||||
CHECKIN_GROUP_NAME VARCHAR(64)
|
||||
);
|
||||
|
||||
-- ㉓ 行李转盘 ORMS_CAROUSEL(OrmsCarousel;bcls 无注解)
|
||||
CREATE TABLE orms_carousel (
|
||||
CAROUSEL_CODE VARCHAR(16) NOT NULL PRIMARY KEY,
|
||||
ACTION_ORDER NUMERIC(18,0),
|
||||
BCLS VARCHAR(16),
|
||||
CAROUSEL_NAME VARCHAR(64),
|
||||
CAROUSEL_STATUS VARCHAR(32),
|
||||
ICON_LENGTH NUMERIC(18,4),
|
||||
ICON_WIDTH NUMERIC(18,4),
|
||||
POS_X NUMERIC(18,4),
|
||||
POS_Y NUMERIC(18,4),
|
||||
STAND_LAYOUTED NUMERIC(18,0),
|
||||
TERMINAL_AREA_CODE VARCHAR(16)
|
||||
);
|
||||
|
||||
-- ㉔ 季度计划 FIMS_FLIGHTSCHD_SEASON(FimsFlightschdSeason;remarks 无注解)
|
||||
-- 供数方待定(`Q25`),本轮只建空表,不造数。
|
||||
CREATE TABLE fims_flightschd_season (
|
||||
SEASONFLIGHT_ID BIGINT NOT NULL PRIMARY KEY,
|
||||
AIRCRAFT_TYPE_CODE VARCHAR(16),
|
||||
AIRLINE_ID BIGINT,
|
||||
ARRI_OR_DEPT VARCHAR(4),
|
||||
ARRIVAL_TIME VARCHAR(8),
|
||||
DEPARTURE_TIME VARCHAR(8),
|
||||
END_AIRPORT VARCHAR(16),
|
||||
END_DATE DATE,
|
||||
FLIGHT_NUMBER VARCHAR(16),
|
||||
FLIGHT_TASK VARCHAR(16),
|
||||
FLIGHT_TYPE_CODE VARCHAR(8),
|
||||
FLYING_DISTANCE NUMERIC(18,4),
|
||||
FLYING_TIME NUMERIC(18,4),
|
||||
INTERNATIONAL_CODE VARCHAR(8),
|
||||
OPERATION_DAYS VARCHAR(32),
|
||||
REMARKS VARCHAR(256),
|
||||
ROUTE_TYPE VARCHAR(8),
|
||||
SEASON_NAME VARCHAR(32),
|
||||
SEASON_REC_ID BIGINT,
|
||||
START_AIRPORT VARCHAR(16),
|
||||
START_DATE DATE,
|
||||
SUB_AIRLINE_ID BIGINT
|
||||
);
|
||||
|
||||
-- ㉕ 季度计划经停 FIMS_MIDAIRPORTS_SEASON(FimsMidairportsSeason;orderno 无注解)
|
||||
CREATE TABLE fims_midairports_season (
|
||||
MIDAIRPORTS_REC_ID BIGINT NOT NULL PRIMARY KEY,
|
||||
AIRPORT_ID BIGINT,
|
||||
ARRIVAL_TIME VARCHAR(8),
|
||||
DEPARTURE_TIME VARCHAR(8),
|
||||
ORDERNO NUMERIC(18,0),
|
||||
SEASONFLIGHT_ID BIGINT
|
||||
);
|
||||
|
||||
CREATE INDEX idx_fims_midairports_season_flight
|
||||
ON fims_midairports_season (SEASONFLIGHT_ID);
|
||||
@@ -0,0 +1,142 @@
|
||||
-- =====================================================================
|
||||
-- deploy/integration/postgres-init/03-basicdata-seed.sql
|
||||
-- 基础数据测试种子(联调栈,DEV ONLY):成都双流 T2 语境的人造数据,
|
||||
-- 不是生产数据,仅供 admin-api `/basicdata/*` 与手工查验。
|
||||
--
|
||||
-- 与 deploy/dev/mysql-init/02-mailbox-messages.sql
|
||||
-- 对齐同一套编码:登机门 D06/D08、值机柜台 C05/C06、滑槽 CH04、转盘 4、
|
||||
-- 机号 B-2087/B-8690、机型 320/738/321。
|
||||
-- 季度计划(fims_*)不造数,供数方待定(`Q25`)。
|
||||
-- 执行环境:docker-entrypoint-initdb.d,仅空卷首启时以 msgx_dev 运行。
|
||||
-- =====================================================================
|
||||
|
||||
SET search_path = basicdata;
|
||||
|
||||
INSERT INTO sys_country (COUNTRY_ID, COUNTRY_CODE, COUNTRY_NAME_CHN, COUNTRY_NAME_ENG, OPERATE) VALUES
|
||||
(1, 'CN', '中国', 'China', 1),
|
||||
(2, 'US', '美国', 'United States', 1),
|
||||
(3, 'JP', '日本', 'Japan', 1),
|
||||
(4, 'KR', '韩国', 'Korea', 1),
|
||||
(5, 'SG', '新加坡', 'Singapore', 1),
|
||||
(6, 'TH', '泰国', 'Thailand', 1);
|
||||
|
||||
INSERT INTO sys_city (CITY_ID, CITY_CODE, CITY_ICCDE, CITY_NAME_CHN, CITY_NAME_ENG, COUNTRY_ID, MAIN_CITY_TAG, OPERATE, TEL_CITY_CODE) VALUES
|
||||
(1, 'CTU', 'ZUUU', '成都', 'Chengdu', 1, 1, 1, '028'),
|
||||
(2, 'PEK', 'ZBAA', '北京', 'Beijing', 1, 1, 1, '010'),
|
||||
(3, 'SHA', 'ZSSS', '上海', 'Shanghai', 1, 1, 1, '021'),
|
||||
(4, 'CAN', 'ZGGG', '广州', 'Guangzhou', 1, 1, 1, '020'),
|
||||
(5, 'SZX', 'ZGSZ', '深圳', 'Shenzhen', 1, 1, 1, '0755'),
|
||||
(6, 'SIN', 'WSSS', '新加坡', 'Singapore', 5, 1, 1, NULL);
|
||||
|
||||
INSERT INTO sys_airportgroup (AIRPORT_GROUP_ID, AIRPORT_GROUP_CODE, AIRPORT_GROUP_NAME) VALUES
|
||||
(1, 'CDIA', '成都双流国际机场集团');
|
||||
|
||||
INSERT INTO sys_airport (AIRPORT_ID, AIRPORT_CODE, AIRPORT_CODE_CAA, AIRPORT_CODE_IATA, AIRPORT_CODE_ICAO, AIRPORT_GROUP_ID, AIRPORT_NAME_CHN, AIRPORT_NAME_ENG, BRIEF_NAME_CHN, BRIEF_NAME_CHN_COPY, BRIEF_NAME_ENG, CITY_ID, HAUL, HOST_FLAG, INTERNATIONAL_FLAG, OPERATE) VALUES
|
||||
(1, 'CTU', 'CTU', 'CTU', 'ZUUU', 1, '成都双流国际机场', 'Chengdu Shuangliu International Airport', '双流', '成都', 'Shuangliu', 1, 'L', 1, 1, 1),
|
||||
(2, 'TFU', 'TFU', 'TFU', 'ZUTF', 1, '成都天府国际机场', 'Chengdu Tianfu International Airport', '天府', '成都', 'Tianfu', 1, 'L', 1, 1, 1),
|
||||
(3, 'PEK', 'PEK', 'PEK', 'ZBAA', NULL, '北京首都国际机场', 'Beijing Capital International Airport', '首都', '北京', 'Capital', 2, 'L', 0, 1, 1),
|
||||
(4, 'SZX', 'SZX', 'SZX', 'ZGSZ', NULL, '深圳宝安国际机场', 'Shenzhen Baoan International Airport', '宝安', '深圳', 'Baoan', 5, 'L', 0, 1, 1),
|
||||
(5, 'SIN', 'SIN', 'SIN', 'WSSS', NULL, '新加坡樟宜机场', 'Singapore Changi Airport', '樟宜', '新加坡', 'Changi', 6, 'L', 0, 1, 1);
|
||||
|
||||
INSERT INTO sys_airlinegroup (AIRLINE_GROUP_ID, AIRLINE_GROUP_CODE, AIRLINE_GROUP_NAME, AIRLINE_GROUP_CODE_CAA, AIRLINE_GROUP_CODE_IATA, AIRLINE_GROUP_CODE_ICAO) VALUES
|
||||
(1, 'CA', '中国国际航空集团', 'CA', 'CA', 'CCA'),
|
||||
(2, 'CZ', '中国南方航空集团', 'CZ', 'CZ', 'CSN'),
|
||||
(3, '3U', '四川航空集团', '3U', '3U', 'CSC');
|
||||
|
||||
INSERT INTO sys_airline (AIRLINE_ID, AIRLINE_CODE, AIRLINE_CODE_CAA, AIRLINE_CODE_IATA, AIRLINE_CODE_ICAO, AIRLINE_GROUP_ID, AIRLINE_NAME, AIRLINE_NAME_ENG, BRIEF_NAME_CHN, BRIEF_NAME_ENG, CODE, COUNTRY_ID, HOST_FLAG, INTERNATIONAL_FLAG, NAMC, NAME, OPERATE, PARENT_AIRLINE_ID) VALUES
|
||||
(1, 'CA', 'CA', 'CA', 'CCA', 1, '中国国际航空股份有限公司', 'Air China', '国航', 'Air China', 'CA', 1, 0, 1, NULL, NULL, 1, 1),
|
||||
(2, 'CZ', 'CZ', 'CZ', 'CSN', 2, '中国南方航空股份有限公司', 'China Southern', '南航', 'China Southern', 'CZ', 1, 0, 1, NULL, NULL, 1, 2),
|
||||
(3, '3U', '3U', '3U', 'CSC', 3, '四川航空股份有限公司', 'Sichuan Airlines', '川航', 'Sichuan Airlines', '3U', 1, 1, 1, NULL, NULL, 1, 3),
|
||||
(4, 'MU', 'MU', 'MU', 'CES', NULL, '中国东方航空股份有限公司', 'China Eastern', '东航', 'China Eastern', 'MU', 1, 0, 1, NULL, NULL, 1, NULL);
|
||||
|
||||
INSERT INTO sys_aircrafttypegroup (AIRCRAFTTYPEGROUP_ID, AIRCRAFTTYPEGROUP_CODE, AIRCRAFTTYPEGROUP_NAME) VALUES
|
||||
(1, 'A320', '空客 A320 系列'),
|
||||
(2, 'B737', '波音 737 系列'),
|
||||
(3, 'A350', '空客 A350 系列');
|
||||
|
||||
INSERT INTO sys_aircrafttype (AIRCRAFT_TYPE_CODE, AIRCRAFT_HEIGHT, AIRCRAFT_LENGTH, AIRCRAFT_TYPE_CODE_CAA, AIRCRAFT_TYPE_CODE_IATA, AIRCRAFT_TYPE_CODE_ICAO, AIRCRAFT_TYPE_NAME, AIRCRAFT_WIDTH, AIRCRAFTTYPEGROUP_ID, CHAP, MAX_AIRBRIDGES, MAX_FREIGHT_WEIGHT, MAX_PASSENGERS, MAX_TAKEOFF_WEIGHT, OPERATE, TRANSITSTOPTIME) VALUES
|
||||
('320', 11.76, 37.57, '320', '320', 'A320', '空客 A320', 34.10, 1, 'C', 1, 20000, 158, 78000, 1, 45),
|
||||
('321', 11.76, 44.51, '321', '321', 'A321', '空客 A321', 34.10, 1, 'C', 1, 25000, 199, 93500, 1, 50),
|
||||
('738', 12.50, 39.50, '738', '738', 'B738', '波音 737-800', 35.80, 2, 'C', 1, 20000, 189, 79000, 1, 45),
|
||||
('359', 17.05, 66.80, '359', '359', 'A359', '空客 A350-900', 64.75, 3, 'C', 2, 40000, 312, 280000, 1, 60);
|
||||
|
||||
INSERT INTO sys_aircraft (AIRCRAFT_ID, AIRCRAFT_NUMBER, AIRCRAFT_OWNER_CODE, AIRCRAFT_TYPE_CODE, AIRLINE_CODE, MAX_AIRBRIDGES, MAX_FREIGHT_WEIGHT, MAX_PASSENGERS, MAX_TAKEOFF_WEIGHT, OPERATE, OWID) VALUES
|
||||
(1, 'B-2087', 'CA', '738', 'CA', 1, 20000, 189, 79000, 1, NULL),
|
||||
(2, 'B-8690', '3U', '320', '3U', 1, 20000, 158, 78000, 1, NULL),
|
||||
(3, 'B-8692', '3U', '320', '3U', 1, 20000, 158, 78000, 1, NULL),
|
||||
(4, 'B-32D1', '3U', '321', '3U', 1, 25000, 199, 93500, 1, NULL);
|
||||
|
||||
INSERT INTO sys_flight_type (FLIGHT_TYPE_CODE, FLIGHT_TYPE_CAA_CODE, FLIGHT_TYPE_NAME, C_TAG, VIP_TAG, FLIGHT_TYPE_NAME_CN, OPERATE) VALUES
|
||||
('S', 'S', 'Scheduled', 'N', 'N', '定期航班', 1),
|
||||
('N', 'N', 'Non-scheduled', 'N', 'N', '非定期航班', 1),
|
||||
('C', 'C', 'Charter', 'N', 'N', '包机', 1),
|
||||
('F', 'F', 'Ferry', 'N', 'N', '调机', 1);
|
||||
|
||||
INSERT INTO sys_flight_status (STTC, ABNS, STDC, STTD) VALUES
|
||||
('SCH', 'Scheduled', '计划', 'N'),
|
||||
('EST', 'Estimated', '预计', 'N'),
|
||||
('ACT', 'Actual', '实际', 'N'),
|
||||
('DLY', 'Delayed', '延误', 'Y'),
|
||||
('CNL', 'Cancelled', '取消', 'Y'),
|
||||
('DIV', 'Diverted', '备降', 'Y');
|
||||
|
||||
INSERT INTO sys_flightagent (FLIGHTAGENT_ID, FLIGHTAGENT_NAME, OGID) VALUES
|
||||
('AG01', '成都双流机场地面服务有限公司', 'OG01'),
|
||||
('AG02', '四川机场集团航空服务有限公司', 'OG02');
|
||||
|
||||
INSERT INTO fims_flightstatus_definition (FLIGHTSTATUSDEF_REC_ID, FLIGHT_STATUS, FLIGHT_STATUS_TYPE, FLIGHT_STATUS_DESC, ENABLED_FLAG, DCOD, DCDN, DDES, DDSC, OPERATE) VALUES
|
||||
(1, '气象延误', 'DELY', '天气原因延误', 'Enabled', 'WX', 1, 'Weather delay', '气象延误', 1),
|
||||
(2, '旅客延误', 'DELY', '旅客原因延误', 'Enabled', 'PA', 2, 'Passenger delay', '旅客延误', 1),
|
||||
(3, '流量延误', 'DELY', '流量控制原因延误', 'Enabled', 'FC', 3, 'Flow control delay', '流量延误', 1),
|
||||
(4, '机务延误', 'DELY', '机务原因延误', 'Enabled', 'MT', 4, 'Maintenance delay', '机务延误', 1);
|
||||
|
||||
INSERT INTO orms_terminal (TERMINAL_CODE, OPERATE, TERMINAL_NAME) VALUES
|
||||
('T1', 1, '成都双流 T1 航站楼'),
|
||||
('T2', 1, '成都双流 T2 航站楼');
|
||||
|
||||
INSERT INTO orms_terminalarea (TERMINAL_AREA_CODE, ROUTE_TYPE, TERMINAL_AREA_NAME, TERMINAL_CODE) VALUES
|
||||
('T2C', 'D', 'T2 国内指廊 C', 'T2'),
|
||||
('T2D', 'D', 'T2 国内指廊 D', 'T2'),
|
||||
('T1I', 'I', 'T1 国际指廊', 'T1');
|
||||
|
||||
INSERT INTO orms_standtype (STAND_TYPE, STAND_TYPE_DESC) VALUES
|
||||
('bridge', '靠桥机位'),
|
||||
('remote', '远机位'),
|
||||
('near', '近机位'),
|
||||
('night', '过夜机位'),
|
||||
('specific', '专机位');
|
||||
|
||||
INSERT INTO orms_stand (STAND_CODE, CURRENT_FLIGHT_ID, DDGT, DIGT, FSTAND_CODE, ICON_LENGTH, ICON_WIDTH, LSTAND_CODE, MAX_PERMIT, MAXFLIGHTNUM, OPERATE, PIER_CODE, POS_X, POS_Y, RSTAND_CODE, SATC, STAND_AREA_CODE, STAND_LAYOUTED, STAND_LENGTH, STAND_NAME, STAND_ORDER, STAND_STATUS, STAND_TYPE, STAND_WIDTH, STML, TERMINAL_AREA_CODE) VALUES
|
||||
('101', NULL, 'D06', NULL, NULL, 40, 20, NULL, 264, 1, 1, 'C', 100, 200, NULL, '738', 'T2C', 1, 60, '101 号机位', 1, 0, 'bridge', 45, 'T2', 'T2C'),
|
||||
('102', NULL, 'D06', NULL, NULL, 40, 20, NULL, 264, 1, 1, 'C', 140, 200, NULL, '738', 'T2C', 1, 60, '102 号机位', 2, 0, 'bridge', 45, 'T2', 'T2C'),
|
||||
('105', NULL, 'D08', NULL, NULL, 40, 20, NULL, 199, 1, 1, 'D', 200, 300, NULL, '321', 'T2D', 1, 55, '105 号机位', 3, 0, 'bridge', 45, 'T2', 'T2D'),
|
||||
('201', NULL, NULL, NULL, NULL, 40, 20, NULL, 312, 2, 1, 'C', 300, 400, NULL, '359', 'T2C', 1, 70, '201 号远机位', 4, 0, 'remote', 60, 'T2', 'T2C');
|
||||
|
||||
INSERT INTO orms_stand_airbridge (STAND_CODE, AIRBRIDGE_CODE) VALUES
|
||||
('101', 'D06'),
|
||||
('102', 'D06'),
|
||||
('105', 'D08');
|
||||
|
||||
INSERT INTO orms_gate (GATE_CODE, ACTION_ORDER, GATE_CATEGORY, GATE_NAME, GATE_STATUS, GATE_TYPE, GTML, ICON_LENGTH, ICON_WIDTH, OPERATE, PIER_CODE, POS_X, POS_Y, STAND_LAYOUTED, TERMINAL_AREA_CODE) VALUES
|
||||
('C05', 1, 'D', 'C05 登机口', 0, '2', 'T2', 30, 20, 1, 'C', 110, 210, 1, 'T2C'),
|
||||
('C06', 2, 'D', 'C06 登机口', 0, '2', 'T2', 30, 20, 1, 'C', 150, 210, 1, 'T2C'),
|
||||
('D06', 3, 'D', 'D06 登机口', 0, '2', 'T2', 30, 20, 1, 'D', 210, 310, 1, 'T2D'),
|
||||
('D08', 4, 'D', 'D08 登机口', 0, '2', 'T2', 30, 20, 1, 'D', 250, 310, 1, 'T2D');
|
||||
|
||||
INSERT INTO orms_chut (CHUT_CODE, BCAT, BTML, CHUT_LENGTH, CHUT_NAME, CHUT_STATUS, OPERATE) VALUES
|
||||
('CH04', 'D', 'T2', 12, 'CH04 行李滑槽', 'E', 1),
|
||||
('CH05', 'D', 'T2', 12, 'CH05 行李滑槽', 'E', 1);
|
||||
|
||||
INSERT INTO orms_checkin_group (CHECKIN_GROUP_CODE, CHECKIN_GROUP_NAME) VALUES
|
||||
('A', 'A 值机岛'),
|
||||
('B', 'B 值机岛'),
|
||||
('C', 'C 值机岛');
|
||||
|
||||
INSERT INTO orms_checkindesk (CHECKINDESK_CODE, CCAT, CHECKIN_GROUP_CODE, CHECKINDESK_NAME, CHECKINDESK_STATUS, CHUT_CODE, CTRA, NEXTCHECKINDESK_CODE, OPERATE, TERMINAL_AREA_CODE) VALUES
|
||||
('C05', 'D', 'C', 'C05 值机柜台', 'E', 'CH04', 'N', NULL, 1, 'T2C'),
|
||||
('C06', 'D', 'C', 'C06 值机柜台', 'E', 'CH05', 'N', NULL, 1, 'T2C'),
|
||||
('C07', 'D', 'C', 'C07 值机柜台', 'E', NULL, 'Y', 'C06', 1, 'T2C');
|
||||
|
||||
INSERT INTO orms_carousel (CAROUSEL_CODE, ACTION_ORDER, BCLS, CAROUSEL_NAME, CAROUSEL_STATUS, ICON_LENGTH, ICON_WIDTH, POS_X, POS_Y, STAND_LAYOUTED, TERMINAL_AREA_CODE) VALUES
|
||||
('4', 1, 'D', '4 号行李转盘', 'E', 40, 20, 120, 400, 1, 'T2C'),
|
||||
('5', 2, 'D', '5 号行李转盘', 'E', 40, 20, 160, 400, 1, 'T2C');
|
||||
@@ -0,0 +1,179 @@
|
||||
-- =====================================================================
|
||||
-- deploy/integration/seed-flight.sql(ACM2-76)
|
||||
-- 联调栈航班当前态种子:手动执行,前置条件是应用以 MSGX_FLYWAY_ENABLED=true
|
||||
-- 启动过一次(V1 基线已应用)。双流 T2 语境人造数据,运营日 2026-09-20。
|
||||
--
|
||||
-- 幂等:主表 FLIGHT_SCHD 用 ON CONFLICT (FLID) DO UPDATE(OPERATION_DAY 按
|
||||
-- INV-12 非空后不可改变,只补空不覆盖);明细表主键是 (FLID, ORDINAL)
|
||||
-- (路线点含 ROUTE_KIND),FLID 上无唯一约束,故按 FLID 先删后插(INV-14
|
||||
-- 的完整合并口径)。CREATED_AT/UPDATED_AT 为 NOT NULL,显式给值。
|
||||
-- 只写决策层(FLIGHT_SCHD + 明细),不碰管道层(PROC_STATE/MSG_EVENT/
|
||||
-- INBOX_CURSOR/PIPELINE_LOCK/REQ_TRACK/SCHD_SNAP_LOG)。
|
||||
-- 执行:psql -h 127.0.0.1 -p 15432 -U msgx_dev -d msgx -f 本文件
|
||||
-- =====================================================================
|
||||
|
||||
BEGIN;
|
||||
|
||||
DELETE FROM FLIGHT_GATE WHERE FLID IN ('90001','90002','90003','90004','90005','90006','90007','90008');
|
||||
DELETE FROM FLIGHT_CHECKIN WHERE FLID IN ('90001','90002','90003','90004','90005','90006','90007','90008');
|
||||
DELETE FROM FLIGHT_BELT WHERE FLID IN ('90001','90002','90003','90004','90005','90006','90007','90008');
|
||||
DELETE FROM FLIGHT_STAND_PLAN WHERE FLID IN ('90001','90002','90003','90004','90005','90006','90007','90008');
|
||||
DELETE FROM FLIGHT_CHUTE WHERE FLID IN ('90001','90002','90003','90004','90005','90006','90007','90008');
|
||||
DELETE FROM FLIGHT_DELAY WHERE FLID IN ('90001','90002','90003','90004','90005','90006','90007','90008');
|
||||
DELETE FROM FLIGHT_ROUTE_POINT WHERE FLID IN ('90001','90002','90003','90004','90005','90006','90007','90008');
|
||||
|
||||
-- 主行 upsert。OPERATION_DAY 只补空不覆盖(INV-12);STATE_VERSION 重置为 1
|
||||
-- 仅是测试种子语义,真实链路由处理写入推进。
|
||||
INSERT INTO FLIGHT_SCHD (
|
||||
FLID, OPERATION_DAY, STATE, STATE_VERSION, LAST_MSG_ID,
|
||||
ALCD, FLNO, MVIN, SODT, FLTY, FLIN, ACFT, RENO, TRML, MAXP,
|
||||
CSOP, CSFT, MAID, TAOP, TAFL, TAID,
|
||||
ESTT, ACTT, STND, PHAG, CNCL, REMC,
|
||||
CREATED_AT, UPDATED_AT
|
||||
) VALUES
|
||||
-- ① 进港:CA4418 CAN→CTU,已落地,转盘 3、机位 108
|
||||
('90001', DATE '2026-09-20', 'ACTIVE', 1, NULL,
|
||||
'CA', 'CA4418', 'A', '20SEP261400', 'S', 'D', '77W', 'B-2006', 'T2', '294',
|
||||
NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, '20SEP261412', '108', '10002', NULL, NULL,
|
||||
now(), now()),
|
||||
-- ② 离港:3U8881 CTU→PEK,柜台 C01/C02、登机门 D05、滑槽 CH03、机位 101
|
||||
('90002', DATE '2026-09-20', 'ACTIVE', 1, NULL,
|
||||
'3U', '3U8881', 'D', '20SEP261630', 'S', 'D', '320', 'B-8690', 'T2', '158',
|
||||
NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
'20SEP261630', NULL, '101', '10001', NULL, NULL,
|
||||
now(), now()),
|
||||
-- ③ 主/共享对·主航班:CA1858 CTU→SZX
|
||||
('90003', DATE '2026-09-20', 'ACTIVE', 1, NULL,
|
||||
'CA', 'CA1858', 'D', '20SEP261830', 'S', 'D', '321', 'B-8691', 'T2', '199',
|
||||
NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
'20SEP261830', NULL, '102', '10002', NULL, NULL,
|
||||
now(), now()),
|
||||
-- ③ 主/共享对·共享航班:3U1858 挂主航班 CA1858(MAID/CSOP/CSFT)
|
||||
('90004', DATE '2026-09-20', 'ACTIVE', 1, NULL,
|
||||
'3U', '1858', 'D', '20SEP261830', 'S', 'D', '321', NULL, 'T2', '199',
|
||||
'CA', 'CA1858', '90003', NULL, NULL, NULL,
|
||||
'20SEP261830', NULL, '102', NULL, NULL, NULL,
|
||||
now(), now()),
|
||||
-- ④ 延误进港:SQ8351 SIN→CTU,预计延后 2 小时并带 DELY
|
||||
('90005', DATE '2026-09-20', 'ACTIVE', 1, NULL,
|
||||
'SQ', 'SQ8351', 'A', '20SEP260930', 'S', 'I', '359', 'B-306N', 'T2', '288',
|
||||
NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
'20SEP261130', NULL, '107', '10002', NULL, 'Catering Delay',
|
||||
now(), now()),
|
||||
-- ⑤ 取消离港:EU2230 CTU→KMG(CNCL 记取消时间,STATE 仍 ACTIVE)
|
||||
('90006', DATE '2026-09-20', 'ACTIVE', 1, NULL,
|
||||
'EU', 'EU2230', 'D', '20SEP260800', 'S', 'D', 'ARJ', 'B-1115', 'T2', '78',
|
||||
NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
'20SEP260800', NULL, NULL, '10002', '20SEP260730', NULL,
|
||||
now(), now()),
|
||||
-- ⑥ 过站进港:3U3210 KMG→CTU,连线后续航班 3U3211
|
||||
('90007', DATE '2026-09-20', 'ACTIVE', 1, NULL,
|
||||
'3U', '3U3210', 'A', '20SEP261000', 'S', 'D', '320', 'B-2345', 'T2', '162',
|
||||
NULL, NULL, NULL, '3U', '3U3211', '90008',
|
||||
'20SEP261000', '20SEP261007', '103', '10001', NULL, NULL,
|
||||
now(), now()),
|
||||
-- ⑥ 过站后续离港:3U3211 CTU→HGH
|
||||
('90008', DATE '2026-09-20', 'ACTIVE', 1, NULL,
|
||||
'3U', '3U3211', 'D', '20SEP261155', 'S', 'D', '320', 'B-2345', 'T2', '162',
|
||||
NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
'20SEP261155', NULL, '103', '10001', NULL, NULL,
|
||||
now(), now())
|
||||
ON CONFLICT (FLID) DO UPDATE SET
|
||||
STATE = EXCLUDED.STATE,
|
||||
STATE_VERSION = EXCLUDED.STATE_VERSION,
|
||||
LAST_MSG_ID = EXCLUDED.LAST_MSG_ID,
|
||||
ALCD = EXCLUDED.ALCD,
|
||||
FLNO = EXCLUDED.FLNO,
|
||||
MVIN = EXCLUDED.MVIN,
|
||||
SODT = EXCLUDED.SODT,
|
||||
FLTY = EXCLUDED.FLTY,
|
||||
FLIN = EXCLUDED.FLIN,
|
||||
ACFT = EXCLUDED.ACFT,
|
||||
RENO = EXCLUDED.RENO,
|
||||
TRML = EXCLUDED.TRML,
|
||||
MAXP = EXCLUDED.MAXP,
|
||||
CSOP = EXCLUDED.CSOP,
|
||||
CSFT = EXCLUDED.CSFT,
|
||||
MAID = EXCLUDED.MAID,
|
||||
TAOP = EXCLUDED.TAOP,
|
||||
TAFL = EXCLUDED.TAFL,
|
||||
TAID = EXCLUDED.TAID,
|
||||
ESTT = EXCLUDED.ESTT,
|
||||
ACTT = EXCLUDED.ACTT,
|
||||
STND = EXCLUDED.STND,
|
||||
PHAG = EXCLUDED.PHAG,
|
||||
CNCL = EXCLUDED.CNCL,
|
||||
REMC = EXCLUDED.REMC,
|
||||
UPDATED_AT = now(),
|
||||
-- OPERATION_DAY 非空后不可改变(INV-12):只补空
|
||||
OPERATION_DAY = COALESCE(FLIGHT_SCHD.OPERATION_DAY, EXCLUDED.OPERATION_DAY);
|
||||
|
||||
-- ① 90001 进港明细:转盘、计划机位、航线
|
||||
INSERT INTO FLIGHT_BELT (FLID, ORDINAL, SOURCE_SEQ, BELT, BCLS, PCOT, PCCT, FBAG, LBAG, BTYP, CREATED_AT, UPDATED_AT) VALUES
|
||||
('90001', 1, '1', '3', 'X', '20SEP261405', '20SEP261455', '20SEP261418', '20SEP261450', 'D', now(), now());
|
||||
INSERT INTO FLIGHT_STAND_PLAN (FLID, ORDINAL, SOURCE_SEQ, PSST, STST, STET, CREATED_AT, UPDATED_AT) VALUES
|
||||
('90001', 1, '1', '108', '20SEP261355', '20SEP261510', now(), now());
|
||||
INSERT INTO FLIGHT_ROUTE_POINT (FLID, ORDINAL, SOURCE_SEQ, ROUTE_KIND, APCD, SCAT, SCDT, CREATED_AT, UPDATED_AT) VALUES
|
||||
('90001', 1, '1', 'ROUT', 'CAN', NULL, '20SEP261155', now(), now()),
|
||||
('90001', 2, '2', 'ROUT', 'CTU', '20SEP261400', NULL, now(), now()),
|
||||
('90001', 1, '1', 'ERUT', 'CTU', NULL, '20SEP261400', now(), now()),
|
||||
('90001', 2, '2', 'ERUT', 'CAN', NULL, '20SEP261155', now(), now());
|
||||
|
||||
-- ② 90002 离港明细:柜台×2、登机门、滑槽、计划机位、航线
|
||||
INSERT INTO FLIGHT_CHECKIN (FLID, ORDINAL, SOURCE_SEQ, CHKC, CCLS, PCOT, PCCT, CTYP, CREATED_AT, UPDATED_AT) VALUES
|
||||
('90002', 1, '1', 'C01', 'Y', '20SEP261430', '20SEP261600', 'D', now(), now()),
|
||||
('90002', 2, '2', 'C02', 'X', '20SEP261430', '20SEP261600', 'D', now(), now());
|
||||
INSERT INTO FLIGHT_GATE (FLID, ORDINAL, SOURCE_SEQ, GATE, PGOT, PGCT, GTYP, CREATED_AT, UPDATED_AT) VALUES
|
||||
('90002', 1, '1', 'D05', '20SEP261530', '20SEP261620', 'D', now(), now());
|
||||
INSERT INTO FLIGHT_CHUTE (FLID, ORDINAL, SOURCE_SEQ, CHUT, CHCLS, PCBT, PCET, CHTYP, CREATED_AT, UPDATED_AT) VALUES
|
||||
('90002', 1, '1', 'CH03', 'X', '20SEP261330', '20SEP261600', 'D', now(), now());
|
||||
INSERT INTO FLIGHT_STAND_PLAN (FLID, ORDINAL, SOURCE_SEQ, PSST, STST, STET, CREATED_AT, UPDATED_AT) VALUES
|
||||
('90002', 1, '1', '101', '20SEP261445', '20SEP261645', now(), now());
|
||||
INSERT INTO FLIGHT_ROUTE_POINT (FLID, ORDINAL, SOURCE_SEQ, ROUTE_KIND, APCD, SCAT, SCDT, CREATED_AT, UPDATED_AT) VALUES
|
||||
('90002', 1, '1', 'ROUT', 'CTU', NULL, '20SEP261630', now(), now()),
|
||||
('90002', 2, '2', 'ROUT', 'PEK', '20SEP261935', NULL, now(), now()),
|
||||
('90002', 1, '1', 'ERUT', 'CTU', NULL, '20SEP261630', now(), now()),
|
||||
('90002', 2, '2', 'ERUT', 'PEK', '20SEP261935', NULL, now(), now());
|
||||
|
||||
-- ③ 主/共享对明细:同一物理航班、各自独立行(禁止按资源号去重)
|
||||
INSERT INTO FLIGHT_STAND_PLAN (FLID, ORDINAL, SOURCE_SEQ, PSST, STST, STET, CREATED_AT, UPDATED_AT) VALUES
|
||||
('90003', 1, '1', '102', '20SEP261645', '20SEP261945', now(), now()),
|
||||
('90004', 1, '1', '102', '20SEP261645', '20SEP261945', now(), now());
|
||||
INSERT INTO FLIGHT_ROUTE_POINT (FLID, ORDINAL, SOURCE_SEQ, ROUTE_KIND, APCD, SCAT, SCDT, CREATED_AT, UPDATED_AT) VALUES
|
||||
('90003', 1, '1', 'ROUT', 'CTU', NULL, '20SEP261830', now(), now()),
|
||||
('90003', 2, '2', 'ROUT', 'SZX', '20SEP262105', NULL, now(), now()),
|
||||
('90003', 1, '1', 'ERUT', 'CTU', NULL, '20SEP261830', now(), now()),
|
||||
('90003', 2, '2', 'ERUT', 'SZX', '20SEP262105', NULL, now(), now()),
|
||||
('90004', 1, '1', 'ROUT', 'CTU', NULL, '20SEP261830', now(), now()),
|
||||
('90004', 2, '2', 'ROUT', 'SZX', '20SEP262105', NULL, now(), now());
|
||||
|
||||
-- ④ 90005 延误进港明细:延误、转盘、计划机位、航线
|
||||
INSERT INTO FLIGHT_DELAY (FLID, ORDINAL, SOURCE_SEQ, CODE, STRT, DURA, CREATED_AT, UPDATED_AT) VALUES
|
||||
('90005', 1, '1', '23', '20SEP260930', '0120', now(), now());
|
||||
INSERT INTO FLIGHT_BELT (FLID, ORDINAL, SOURCE_SEQ, BELT, BCLS, PCOT, PCCT, BTYP, CREATED_AT, UPDATED_AT) VALUES
|
||||
('90005', 1, '1', '5', 'X', '20SEP261135', '20SEP261225', 'I', now(), now());
|
||||
INSERT INTO FLIGHT_STAND_PLAN (FLID, ORDINAL, SOURCE_SEQ, PSST, STST, STET, CREATED_AT, UPDATED_AT) VALUES
|
||||
('90005', 1, '1', '107', '20SEP261050', '20SEP261240', now(), now());
|
||||
INSERT INTO FLIGHT_ROUTE_POINT (FLID, ORDINAL, SOURCE_SEQ, ROUTE_KIND, APCD, SCAT, SCDT, CREATED_AT, UPDATED_AT) VALUES
|
||||
('90005', 1, '1', 'ROUT', 'SIN', NULL, '20SEP260745', now(), now()),
|
||||
('90005', 2, '2', 'ROUT', 'CTU', '20SEP260930', NULL, now(), now()),
|
||||
('90005', 1, '1', 'ERUT', 'CTU', NULL, '20SEP260930', now(), now()),
|
||||
('90005', 2, '2', 'ERUT', 'SIN', NULL, '20SEP260745', now(), now());
|
||||
|
||||
-- ⑥ 过站对明细:90007 计划机位 + 航线;90008 登机门 + 航线
|
||||
INSERT INTO FLIGHT_STAND_PLAN (FLID, ORDINAL, SOURCE_SEQ, PSST, STST, STET, CREATED_AT, UPDATED_AT) VALUES
|
||||
('90007', 1, '1', '103', '20SEP260955', '20SEP261140', now(), now());
|
||||
INSERT INTO FLIGHT_ROUTE_POINT (FLID, ORDINAL, SOURCE_SEQ, ROUTE_KIND, APCD, SCAT, SCDT, CREATED_AT, UPDATED_AT) VALUES
|
||||
('90007', 1, '1', 'ROUT', 'KMG', NULL, '20SEP260845', now(), now()),
|
||||
('90007', 2, '2', 'ROUT', 'CTU', '20SEP261000', NULL, now(), now()),
|
||||
('90007', 1, '1', 'ERUT', 'CTU', NULL, '20SEP261000', now(), now()),
|
||||
('90007', 2, '2', 'ERUT', 'KMG', NULL, '20SEP260845', now(), now()),
|
||||
('90008', 1, '1', 'ROUT', 'CTU', NULL, '20SEP261155', now(), now()),
|
||||
('90008', 2, '2', 'ROUT', 'HGH', '20SEP261425', NULL, now(), now()),
|
||||
('90008', 1, '1', 'ERUT', 'CTU', NULL, '20SEP261155', now(), now()),
|
||||
('90008', 2, '2', 'ERUT', 'HGH', '20SEP261425', NULL, now(), now());
|
||||
INSERT INTO FLIGHT_GATE (FLID, ORDINAL, SOURCE_SEQ, GATE, PGOT, PGCT, GTYP, CREATED_AT, UPDATED_AT) VALUES
|
||||
('90008', 1, '1', 'D04', '20SEP261055', '20SEP261145', 'D', now(), now());
|
||||
|
||||
COMMIT;
|
||||
Reference in New Issue
Block a user