feat: QMT Bridge 设为主数据源,新增指数日K支持及数据源文档
- QmtBridgeSource: provides 增加 index_daily,新增 fetch_index_daily 方法 - task_kline_index: 优先级改为 qmt_bridge → mairui → sina 三级降级 - task_kline_5min: 优先用 qmt_bridge,不可用时降级 mairui - task_kline_daily: 优先级加入 qmt_bridge(首位) - config: 新增 qmt_bridge_url 配置项 - registry: qmt_bridge 注册信息同步更新 - docs: 新增 DATASETS_AND_SOURCES.md,完整说明数据集与数据源依赖关系 - AGENTS.md: 同步更新指数数据源描述
This commit is contained in:
@@ -77,13 +77,25 @@ class SyncKline5Min(SyncTask):
|
||||
max_workers: int = 5,
|
||||
**kwargs,
|
||||
) -> dict[str, Any]:
|
||||
primary = ds_registry.get("datasource_mairui")
|
||||
# QMT Bridge 优先,不可用时降级到 mairui
|
||||
primary = ds_registry.get("datasource_qmt_bridge") or ds_registry.get("datasource_mairui")
|
||||
if primary is None:
|
||||
return {"status": "error", "message": "5min 数据源 mairui 未注册"}
|
||||
return {"status": "error", "message": "5min 数据源 qmt_bridge/mairui 均未注册"}
|
||||
ok, reason = is_source_ready(primary.key)
|
||||
if not ok:
|
||||
mark_sync_blocked(self.dataset_id, message=f"{primary.key} 未就绪: {reason}")
|
||||
return {"status": "blocked", "message": f"{primary.key} 未就绪: {reason}"}
|
||||
# 如果 bridge 不可用但 mairui 可用,尝试切换
|
||||
fallback = ds_registry.get("datasource_mairui") if primary.key == "datasource_qmt_bridge" else None
|
||||
if fallback:
|
||||
fb_ok, fb_reason = is_source_ready(fallback.key)
|
||||
if fb_ok:
|
||||
logger.warning(f"[5min] {primary.key} 不可用 ({reason}), 降级到 {fallback.key}")
|
||||
primary = fallback
|
||||
else:
|
||||
mark_sync_blocked(self.dataset_id, message=f"{primary.key}/{fallback.key} 均不可用")
|
||||
return {"status": "blocked", "message": f"{primary.key}/{fallback.key} 均不可用"}
|
||||
else:
|
||||
mark_sync_blocked(self.dataset_id, message=f"{primary.key} 未就绪: {reason}")
|
||||
return {"status": "blocked", "message": f"{primary.key} 未就绪: {reason}"}
|
||||
|
||||
if codes:
|
||||
stock_codes = [to_code6(c) for c in codes]
|
||||
|
||||
Reference in New Issue
Block a user