docs(GOV-005): 建立 MySQL 5.7 兼容性基线
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
|
||||
- 前端:Vue 3、Vite、TypeScript、Dart Sass、Naive UI。
|
||||
- 后端:NestJS、TypeScript。
|
||||
- 数据库:MySQL;缓存:Redis;消息队列:RabbitMQ。
|
||||
- 数据库:MySQL 5.7.x,字符集 `utf8mb4`,排序规则 `utf8mb4_general_ci`;缓存:Redis;消息队列:RabbitMQ。
|
||||
- 图表:Lightweight Charts负责K线和分时,ECharts负责热力图、分布和资金趋势。
|
||||
- AI:由服务端调用兼容 OpenAI 格式的付费 API,密钥不得下发浏览器。
|
||||
|
||||
@@ -98,7 +98,21 @@ count += 1;
|
||||
- 消费者必须幂等,消息确认只能发生在持久化或可验证处理完成后。
|
||||
- 免费数据源通过 Adapter 统一为内部模型,上层不得依赖供应商原始字段。
|
||||
|
||||
## 10. 测试要求
|
||||
## 10. MySQL 5.7 兼容规范
|
||||
|
||||
- 开发、测试、Docker 和生产环境必须使用明确的 MySQL 5.7 补丁版本,禁止使用 `latest`、MySQL 8.x 或其他数据库代替兼容性验证。
|
||||
- 创建数据库必须显式声明 `DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci`;建表与迁移脚本必须显式保持 `DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci`。
|
||||
- ORM 和数据库驱动必须声明 `utf8mb4`,连接建立后验证会话、数据库和表的排序规则为 `utf8mb4_general_ci`,不得依赖服务器默认值。
|
||||
- 文本列默认继承表级规则。列级改变字符集或排序规则必须由具体功能设计解释,并通过 ADR 审批。
|
||||
- 禁止使用 MySQL 8.x 专属或在 5.7 行为不同的公用表表达式、递归 CTE、窗口函数、函数索引、不可见索引、`utf8mb4_0900_*` 排序规则和 JSON 增强能力。
|
||||
- 不得依赖 `CHECK` 约束在 MySQL 8.x 的强制执行语义;MySQL 5.7 下的业务约束必须由边界校验、普通索引或可测试的写入逻辑保证。
|
||||
- `utf8mb4_general_ci` 不区分大小写。证券代码、外部事件 ID、幂等键等身份字段必须规范化输入,或显式采用经设计批准的二进制比较与唯一键,不能误把默认比较当成大小写敏感。
|
||||
- 索引长度按 MySQL 5.7 和 `utf8mb4` 最多四字节字符预算;超长标识使用受控长度、前缀索引或稳定摘要时,必须说明唯一性和碰撞处理。
|
||||
- JSON 字段只能使用 MySQL 5.7 已支持并经过真实环境验证的能力,查询和索引不得建立在 8.x 特性上。
|
||||
- 每份迁移脚本必须能够从上一版本基线在 MySQL 5.7 正向执行;禁止用直接修改共享数据库表代替迁移脚本。
|
||||
- 代码 Review 必须检查服务端版本、字符集、排序规则、SQL/迁移兼容性、索引长度和字符串比较语义;任一不符合项按 Important 处理并阻断发布。
|
||||
|
||||
## 11. 测试要求
|
||||
|
||||
- 功能和缺陷修复遵循测试先行:先看到测试因缺少行为而失败,再实现最小代码。
|
||||
- 纯规则和指标计算使用单元测试,期望值必须手工推导。
|
||||
@@ -107,14 +121,14 @@ count += 1;
|
||||
- 关键页面使用 Playwright流程测试和视觉截图对比。
|
||||
- 合并前必须通过类型检查、测试、构建和适用的视觉验证。
|
||||
|
||||
## 11. 安全要求
|
||||
## 12. 安全要求
|
||||
|
||||
- 禁止提交 `.env`、API Key、密码、真实账号和生产数据。
|
||||
- AI 密钥、数据源凭证和支付凭证仅存在服务端密钥管理中。
|
||||
- SQL必须参数化;外部输入必须在边界处校验。
|
||||
- 日志和异常报告必须脱敏。
|
||||
|
||||
## 12. 代码 Review 要求
|
||||
## 13. 代码 Review 要求
|
||||
|
||||
开发者完成自测不等于 Review 完成。审查者必须从功能 PRD、设计和 Git diff 出发,检查:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user