# 开发数据库 Schema 基线与版本门禁 PRD - 功能编号:GOV-007 - PRD 版本:0.1 - 状态:approved - 日期:2026-08-13 ## 问题 数据库迁移文件只能表达预期变化,不能证明每个版本开始前开发数据库的实际结构,也无法发现手工改表、对象遗漏或环境误连。当前 MySQL 尚未启用,还需要一种不伪造空 Schema 的可审计状态。 ## 目标 - 每个新应用版本开发前,封存上一已发布版本的开发库完整 Schema。 - 将环境、数据库名、MySQL 版本、字符集、排序规则和对象范围设置为强制门禁。 - 生成确定性、可校验、可版本控制且不含数据或凭据的产物。 - MySQL 未启用时生成可验证的不适用记录。 - 在 `governance:start` 前阻断缺失或失效的上一版本基线。 ## 用户流程 1. 开发者确认上一已发布语义化版本。 2. 执行 `npm run schema:baseline` 生成或幂等验证对应目录。 3. 执行 `npm run schema:verify` 复核清单、版本、提交和校验值。 4. 将基线用中文提交推送项目 Gitea。 5. 执行 `governance:start` 开始下一版本功能。 ## 非目标 - 不备份任何业务数据、用户数据或生产数据。 - 不连接、探测、读取或验证生产数据库。 - 不替代生产运维备份、数据库恢复演练或迁移框架。 - 本版本不启动 MySQL,也不对真实数据库执行命令。 ## 风险 - `DEFINER`、导出时间和当前自增值会造成不可移植或无意义差异。 - 参数可覆盖 env 或数据库名会扩大到生产资源的误操作范围。 - 空 SQL 或可篡改的 N/A 清单会让门禁形式化而不可信。 - 既有版本目录被覆盖会破坏发布历史。 ## 验收标准 - 开发库、MySQL 5.7 和字符规则不符合时全部阻断。 - 导出参数明确只含结构并覆盖表、视图、触发器、例程和事件。 - 规范化固定样本精确保留业务对象和列自增属性。 - 真实基线三方 SHA-256 一致;N/A 基线只有清单。 - 版本、标签提交、对象范围、状态和文件集合都能自动校验。 - 既有不同内容禁止覆盖,命令行不能切换 production env 或数据库。 - 治理流程、双 Review、GitNexus、中文提交和 Gitea 推送完成。