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.
buffer_platform/openspec/changes/config-to-mysql/proposal.md

60 lines
2.1 KiB

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