You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.1 KiB
2.1 KiB
Proposal: Config to MySQL
问题背景
当前配置信息(symbols_config.json 品种合约映射、ai_config.json AI 模型配置)以 JSON 文件形式存储在 config/ 目录下。存在以下问题:
- 配置与应用状态分离:文件配置难以统一备份、迁移和多实例共享
- 读写分散:多个模块直接读取 JSON 文件,重复解析逻辑
- 无版本/审计:文件修改无历史记录,难以追踪配置变更
- 与架构不一致:行情数据和分析数据已迁移到 MySQL,配置仍停留在文件系统
目标
将 symbols_config.json 和 ai_config.json 迁移到 MySQL buffer_platform 数据库,提供统一的配置读取/写入接口,并保留 JSON 文件作为降级方案。
范围
包含
- 新增 MySQL 配置表:
symbol_config、ai_config - 创建统一配置管理模块
app/config_store.py - 启动时自动迁移现有 JSON 配置到 MySQL
- 修改以下模块从数据库读取配置:
app/api/config.pyapp/api/ai_config.pyapp/api/futures_analysis.pyapp/api/trade_review.pyapp/services/trade_parser.pyapp/services/plan_generator.pyapp/services/ai_analysis.py
- MySQL 不可用时降级到 JSON 文件
不包含
- 新增业务功能
- 修改配置结构(保持现有 JSON schema)
- Redis 缓存层
非目标
- 不改变配置 schema
- 不改变 API 接口签名
- 不引入配置版本控制或审计日志
验收标准
- 启动时自动创建配置表并迁移 JSON 数据到 MySQL
- 所有配置读写通过
app/config_store.py接口 - MySQL 不可用时自动降级到 JSON 文件
- 现有功能(品种列表、AI 配置、交易复盘、计划生成)正常工作
- 单元测试覆盖数据库命中、数据库未命中降级、迁移幂等性
风险
| 风险 | 缓解措施 |
|---|---|
| 数据迁移失败 | 保留 JSON 文件作为降级方案 |
| 配置读取性能下降 | 配置数据量小,数据库查询足够快;无 Redis 需求 |
| 多处修改引入回归 | 统一封装 + 全面测试 |