# Proposal: Config to MySQL ## 问题背景 当前配置信息(`symbols_config.json` 品种合约映射、`ai_config.json` AI 模型配置)以 JSON 文件形式存储在 `config/` 目录下。存在以下问题: 1. **配置与应用状态分离**:文件配置难以统一备份、迁移和多实例共享 2. **读写分散**:多个模块直接读取 JSON 文件,重复解析逻辑 3. **无版本/审计**:文件修改无历史记录,难以追踪配置变更 4. **与架构不一致**:行情数据和分析数据已迁移到 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.py` - `app/api/ai_config.py` - `app/api/futures_analysis.py` - `app/api/trade_review.py` - `app/services/trade_parser.py` - `app/services/plan_generator.py` - `app/services/ai_analysis.py` - MySQL 不可用时降级到 JSON 文件 ### 不包含 - 新增业务功能 - 修改配置结构(保持现有 JSON schema) - Redis 缓存层 ## 非目标 - 不改变配置 schema - 不改变 API 接口签名 - 不引入配置版本控制或审计日志 ## 验收标准 1. 启动时自动创建配置表并迁移 JSON 数据到 MySQL 2. 所有配置读写通过 `app/config_store.py` 接口 3. MySQL 不可用时自动降级到 JSON 文件 4. 现有功能(品种列表、AI 配置、交易复盘、计划生成)正常工作 5. 单元测试覆盖数据库命中、数据库未命中降级、迁移幂等性 ## 风险 | 风险 | 缓解措施 | |------|----------| | 数据迁移失败 | 保留 JSON 文件作为降级方案 | | 配置读取性能下降 | 配置数据量小,数据库查询足够快;无 Redis 需求 | | 多处修改引入回归 | 统一封装 + 全面测试 |