feat(GOV-007): 建立开发库 Schema 基线门禁
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
# 工程需求
|
||||
|
||||
## 安全配置
|
||||
|
||||
- `APP_ENV` 必须为 `development`,`MYSQL_DATABASE` 必须为 `a_share_analysis_dev`。
|
||||
- 字符集固定 `utf8mb4`,排序规则固定 `utf8mb4_general_ci`。
|
||||
- 启用 MySQL 后 host、port、username、password 均为必填;密码只通过子进程环境传递。
|
||||
- 启用 MySQL 时主机只能是本机回环地址;远程开发库必须先由运维建立本地 SSH 隧道,脚本不接受任意远程目标。
|
||||
- 命令行不接受 env 文件、环境类型、数据库名或其他覆盖参数。
|
||||
|
||||
## 数据库与导出
|
||||
|
||||
- 客户端和服务端版本必须匹配 MySQL 5.7.x。
|
||||
- 执行元数据查询的 `mysql` 客户端和执行导出的 `mysqldump` 客户端都必须分别验证为 5.7.x。
|
||||
- `mysqldump` 使用 `--no-data --routines --triggers --events`,不得输出 INSERT 或 REPLACE。
|
||||
- 完整对象范围为表、索引、外键、视图、触发器、存储过程、函数和事件。
|
||||
- 规范化删除不稳定注释、环境 `DEFINER` 和表选项当前自增值,保留列自增属性。
|
||||
|
||||
## 产物与校验
|
||||
|
||||
- 目录固定为 `database/schema-baselines/<已发布版本>/`。
|
||||
- 真实基线包含 `schema.sql`、`manifest.yaml`、`checksum.sha256`。
|
||||
- `manifest.yaml` 使用 JSON 兼容 YAML 的结构化格式,可由标准 JSON 解析器读取。
|
||||
- 清单记录版本、标签提交、来源环境、库名、版本、字符规则、对象范围、生成器和 SHA-256。
|
||||
- 目录采用同父目录临时写入后原子改名;既有目录只允许逐字节相同的幂等重跑。
|
||||
- MySQL 未启用时只生成 `manifest.yaml`,状态为 `not_applicable`,原因是 `mysql_disabled`,所有对象均为未捕获。
|
||||
|
||||
## 流程
|
||||
|
||||
- `governance:start` 在写入功能档案或刷新 GitNexus 前只读验证上一发布版本基线。
|
||||
- `governance:start` 还要求基线文件已被 Git 跟踪、无未提交改动、当前分支已推送且远程发布标签提交一致;`schema:verify` 只负责本地内容校验。
|
||||
- `governance:finish` 运行全部既有治理测试、Schema 测试和基线验证。
|
||||
- 本版本实际产物为 `v0.0.5` 的 N/A 清单,不连接任何数据库。
|
||||
Reference in New Issue
Block a user