# 工程需求 ## 功能需求 - `schema:baseline` 不得调用本机 `mysql`、`mysqldump` 或其他外部数据库客户端。 - 根工作区直接声明并使用固定版本的 `mysql2`,不得从 Server 私有依赖路径加载。 - 工具只允许 development、`a_share_analysis_dev`、固定开发主机白名单、MySQL 5.7.x、`utf8mb4` 和 `utf8mb4_general_ci`。 - 使用 `SHOW CREATE` 导出基础表、视图、触发器、存储过程、函数和事件;索引与外键随表定义保存。 - 视图按库内依赖拓扑排序;循环依赖、未知依赖或对象丢失必须失败。 - format v3 清单记录导出器和驱动信息;format v1/v2 继续只读验证。 - 空库仍生成 `captured_empty`,MySQL 未启用仍生成 `not_applicable`,两者不得创建伪造 SQL。 - 版本目录继续使用临时目录、完整校验后原子重命名,既有目录只允许逐字节幂等复用。 ## 安全需求 - 禁止查询业务表数据,禁止 DDL、DML、多语句、锁表和生产探测。 - 密码只能从被 Git 忽略的 development 配置读取,不进入异常、日志、清单、SQL 或命令参数。 - 顶层数据语句、连接串、疑似凭据、残留 `DEFINER` 和环境主机信息必须被拒绝。 - 对象名只能来自已验证的元数据,并使用 MySQL 标识符转义。 - 连接必须在所有成功和失败路径关闭。 ## 性能与稳定性需求 - 使用单连接和有限并发,设置连接超时、查询超时、对象数量和响应大小保护。 - 中小型开发库目标在 30 秒内完成;超时不得保存部分基线。 - 导出前后读取对象摘要,两次不一致时失败,避免并发 DDL 形成混合快照。 - 相同输入必须生成确定性顺序、换行、清单和校验值。 ## 兼容与测试需求 - 外部命令名称和参数保持不变。 - 现有 format v1/v2 夹具、状态和错误边界继续通过。 - 新增假连接单元测试,不以真实数据库作为普通测试门禁。 - 实施完成后只对固定开发库执行一次真实 `captured_empty` 或 `captured` 验证,禁止访问生产环境。