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.

52 lines
1.8 KiB

# Proposal: Analysis Storage Refactor
## 问题背景
当前 `futures_analysis.db` 是独立的 SQLite 数据库,存储 14 张表AI 分析、复盘计划、交易记录等)。与行情数据(已迁移到 MySQL/Redis分离存储存在以下问题
1. **数据孤岛**:分析数据与行情数据分离,无法统一管理和备份
2. **扩展性差**SQLite 不适合高并发读写场景
3. **架构不一致**:行情数据已采用 Redis→MySQL→SQLite 三级降级策略,分析数据仍使用单一 SQLite
## 目标
`futures_analysis.db` 的 14 张表迁移到 MySQL `buffer_platform` 数据库,并引入 Redis 缓存层,与行情数据存储策略保持一致。
## 范围
### 包含
- 复用现有 MySQL 连接(`mysql_engine`)和 Redis 连接(`redis_client`
- 实现三级降级Redis 缓存 → MySQL 持久化 → SQLite 兜底
- 启动时自动迁移现有 SQLite 数据到 MySQL
- 保持 ORM 模型定义不变
- 保持 API 接口不变
### 不包含
- 行情数据存储(已完成)
- 前端代码修改
- 新增业务功能
## 非目标
- 不改变现有 ORM 模型定义
- 不改变 API 接口签名
- 不引入新的业务逻辑
## 验收标准
1. 启动时检测 MySQL/Redis 可用,自动创建 analysis 表并迁移数据
2. API 读写 analysis 表时优先使用 Redis 缓存,未命中回源 MySQL
3. MySQL 不可用时降级到 SQLite
4. 现有功能AI 分析、复盘计划、交易记录)正常工作
5. 单元测试覆盖三级降级场景
## 风险
| 风险 | 缓解措施 |
|------|----------|
| 数据迁移失败 | 保留 SQLite 作为降级方案,迁移失败时自动降级 |
| Redis 缓存一致性 | 写入时先删缓存,再写 MySQL最后回填缓存 |
| 表结构不兼容 | 复用现有 ORM 模型MySQL 自动创建表结构 |