Files
a-share-analysis/docs/features/GOV-012-node-schema-exporter/requirements.md

35 lines
2.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 工程需求
## 功能需求
- `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` 验证,禁止访问生产环境。