# 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 自动创建表结构 |