# 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 需求 |
| 多处修改引入回归 | 统一封装 + 全面测试 |
