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.

2.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

Proposal: Config to MySQL

问题背景

当前配置信息(symbols_config.json 品种合约映射、ai_config.json AI 模型配置)以 JSON 文件形式存储在 config/ 目录下。存在以下问题:

  1. 配置与应用状态分离:文件配置难以统一备份、迁移和多实例共享
  2. 读写分散:多个模块直接读取 JSON 文件,重复解析逻辑
  3. 无版本/审计:文件修改无历史记录,难以追踪配置变更
  4. 与架构不一致:行情数据和分析数据已迁移到 MySQL配置仍停留在文件系统

目标

symbols_config.jsonai_config.json 迁移到 MySQL buffer_platform 数据库,提供统一的配置读取/写入接口,并保留 JSON 文件作为降级方案。

范围

包含

  • 新增 MySQL 配置表:symbol_configai_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 需求
多处修改引入回归 统一封装 + 全面测试