Round 5V:本目录的全量初始化包仅为历史资料,本轮禁止重新执行。当前隔离启动入口是
scripts/qa/qa.py,运行账号为已存在的fusion_qa_app;不据此新建账号或扩大权限。详见根目录DEMO_RUNBOOK.md。
RailwaySystem 融合测试数据库初始化包 (qa-bootstrap)
本目录为 Round 3B-1 收口成果,用于在全新空白 KingbaseES 数据库 railwaysystem_fusion_qa_20261013 中实现可重复、可审计、零破坏性、纯合成数据的闭环初始化。
一、核心原则与安全铁律
- 零生产污染:绝不恢复生产或共享库备份,所有主数据与业务数据 100% 为合成测试数据(Synthetic Data Only)。
- 零破坏性 DDL:在空库初始化中,废弃“先建旧表再 drop/alter”的历史迁移链,全量采用 V2 最终纯净 Schema,避免破坏性 DROP/TRUNCATE。
- 严格白名单隔离:执行工具硬编码限制唯一目标数据库:
railwaysystem_fusion_qa_20261013。非白名单目标立即拒绝执行。 - 命名空间与 Mapper 对齐:培训业务表与若依系统表位于
public模式;智能门锁 9 张核心业务表位于iotlocks模式;应用连接池统一注入search_path to public, iotlocks, pg_catalog, sys_catalog。 - 硬件验收边界诚实披露:重新入住软件防竞态逻辑已闭环,但由于物理门锁通信缺乏硬件级凭证版本(Epoch),在途物理执行状态标记为
HARDWARE_PENDING,必须待现场硬件联调验收。
二、目录结构
qa-bootstrap/
├── README.md # 本说明文档
├── manifest.md # 清单文件:文件顺序、来源追溯、依赖关系与 SHA-256
├── env.example # 环境变量模板 (包含三级账号与白名单配置)
├── application-fusion-qa.yml.example # Spring Boot 应用数据源与连接池推荐配置样例
├── scripts/
│ ├── run_bootstrap.sh # 安全执行脚本 (默认 --dry-run,强制白名单校验)
│ └── cleanup_guide.md # 仅文档说明:手动回滚与清理操作手册 (无自动执行)
└── sql/
├── 01_system_foundation.sql # 若依系统基础表与 Quartz 调度表 (public)
├── 02_training_v2_schema.sql # 培训业务 V2 完整物理表结构 (23 张表、补齐 person_no、约束与索引) (public)
├── 03_system_permissions_and_menus.sql # 培训业务专属角色、菜单与权限 (public)
├── 04_iotlocks_schema.sql # 智能门锁业务表 (iotlocks) 及门禁字典 (public) 修订版
├── 05_synthetic_demo_data.sql # 纯合成演示与测试数据 (学员/教师/宿舍/计划) (public)
├── 05b_fusion_iot_test_data.sql # 专属跨模式 IoT 门锁业务融合测试数据集 (入住/调宿/退宿/重新入住)
└── 06_verify_schema_integrity.sql # 完整性、字段断言 (person_no) 与跨表业务关联自动化校验断言脚本
三、三级数据库权限模型
| 角色级别 | 建议账号名 | 权限范围与职责 | 安全约束 |
|---|---|---|---|
| 建库管理员 (DBA) | kingbase |
仅用于执行 CREATE DATABASE railwaysystem_fusion_qa_20261013; 并创建初始化角色 |
仅限 DBA 手动在受控会话中操作,脚本绝不硬编码 |
| 初始化专用账号 | fusion_bootstrap_user |
对该库拥有 CONNECT;对 public 和 iotlocks 拥有 CREATE, USAGE 及所有对象的 DDL/DML 权限 |
仅用于执行 01 ~ 05b 初始化脚本,初始化完成后可锁定或仅留归档 |
| 应用运行账号 | fusion_qa_app |
对该库拥有 CONNECT;对 public 和 iotlocks 拥有 USAGE;对所有表拥有 SELECT, INSERT, UPDATE, DELETE;对所有序列拥有 USAGE, SELECT, UPDATE |
严禁赋予 CREATEDB、SUPERUSER;禁止拥有 Schema 的 CREATE 权限;禁止任何跨库访问 |
四、安全 Dry-Run 校验说明
在未连接真实数据库的情况下,可执行以下命令完成前置完整性自检:
./scripts/run_bootstrap.sh --dry-run
脚本将输出:
- 目标库白名单比对结果;
- 7 个 SQL 脚本的 SHA-256 校验与行数统计;
- 静态 SQL 扫描(确认绝无
DROP DATABASE等未受控高危语句)。