Files

Round 5V:本目录的全量初始化包仅为历史资料,本轮禁止重新执行。当前隔离启动入口是 scripts/qa/qa.py,运行账号为已存在的 fusion_qa_app;不据此新建账号或扩大权限。详见根目录 DEMO_RUNBOOK.md。

RailwaySystem 融合测试数据库初始化包 (qa-bootstrap)

本目录为 Round 3B-1 收口成果,用于在全新空白 KingbaseES 数据库 railwaysystem_fusion_qa_20261013 中实现可重复、可审计、零破坏性、纯合成数据的闭环初始化。


一、核心原则与安全铁律

  1. 零生产污染:绝不恢复生产或共享库备份,所有主数据与业务数据 100% 为合成测试数据(Synthetic Data Only)。
  2. 零破坏性 DDL:在空库初始化中,废弃“先建旧表再 drop/alter”的历史迁移链,全量采用 V2 最终纯净 Schema,避免破坏性 DROP/TRUNCATE。
  3. 严格白名单隔离:执行工具硬编码限制唯一目标数据库:railwaysystem_fusion_qa_20261013。非白名单目标立即拒绝执行。
  4. 命名空间与 Mapper 对齐:培训业务表与若依系统表位于 public 模式;智能门锁 9 张核心业务表位于 iotlocks 模式;应用连接池统一注入 search_path to public, iotlocks, pg_catalog, sys_catalog。
  5. 硬件验收边界诚实披露:重新入住软件防竞态逻辑已闭环,但由于物理门锁通信缺乏硬件级凭证版本(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 等未受控高危语句)。