2.9 KiB
2.9 KiB
全局配置与数据库同步
1. 是否需要“同步到数据库”?
分两种理解:
(1)在页面上改完并保存 → 已实现
- 已实现:在「全局配置」页修改任意配置项并保存时,后端会调用
update_global_configs_batch,对每条配置执行GlobalStrategyConfig.set(...)。 GlobalStrategyConfig.set使用 INSERT ... ON DUPLICATE KEY UPDATE:- 若该
config_key在表global_strategy_config中不存在,会插入一条新记录; - 若已存在,会更新该记录的
config_value、config_type、category、description等。
- 若该
- 因此:新加的配置项(如 MAX_RSI_FOR_LONG、MIN_RSI_FOR_SHORT 等)只要在页面上改一次并点保存,就会自动写入数据库,不需要单独“同步到数据库”的步骤。
(2)不打开页面,一次性把“缺省值”写入数据库 → 可选脚本
- 若希望新配置项一开始就出现在数据库里(方便备份、导出、或不在 UI 改也能看到默认值),可以执行一次同步缺省脚本。
- 脚本会检查
global_strategy_config表,对尚未存在的 key 插入默认值;已存在的 key 不会覆盖。
2. 已实现的能力小结
| 场景 | 是否已实现 | 说明 |
|---|---|---|
| 在「全局配置」页修改并保存 | ✅ 是 | 调用 POST /api/config/global/batch,写入 global_strategy_config 表 |
| 新 key 第一次保存 | ✅ 是 | GlobalStrategyConfig.set 用 INSERT ... ON DUPLICATE KEY UPDATE,会自动插入新 key |
| 策略/后端读取配置 | ✅ 是 | config_manager.get_trading_config() 从全局配置表(及 Redis)读;缺省时用代码里的默认值 |
| 一次性把缺省项写入 DB | ✅ 可选 | 运行 backend/sync_global_config_defaults.py(见下) |
3. 可选:一次性同步缺省到数据库
若希望把新增的全局配置项默认值一次性写入 global_strategy_config 表(不覆盖已有记录),可在项目根目录或 backend 目录执行:
# 在项目根目录
cd backend && python sync_global_config_defaults.py
# 或(若 PYTHONPATH 已含 backend)
python backend/sync_global_config_defaults.py
脚本会:
- 只插入当前在表中不存在的
config_key; - 已存在的 key 不会被修改;
- 默认会同步的项包括:
MAX_RSI_FOR_LONG、MAX_CHANGE_PERCENT_FOR_LONG、MIN_RSI_FOR_SHORT、MAX_CHANGE_PERCENT_FOR_SHORT、TAKE_PROFIT_1_PERCENT、SCAN_EXTRA_SYMBOLS_FOR_SUPPLEMENT、BETA_FILTER_ENABLED、BETA_FILTER_THRESHOLD等(见脚本内DEFAULTS_TO_SYNC)。
结论:
- 需要同步到数据库吗? 若你会在「全局配置」里改这些项并保存,则不需要额外同步,保存即写入数据库。
- 有实现吗? 有:保存即写入;另提供可选脚本,用于一次性把缺省值写入数据库。