fix(hub): preserve key monitors when enrich_monitor returns partial payload

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-03 21:34:39 +08:00
parent f95118065d
commit 7900a68d07
2 changed files with 78 additions and 11 deletions
+39 -11
View File
@@ -52,6 +52,30 @@ def _row_to_dict(row):
return dict(row) if row is not None else {}
def build_hub_monitor_payload(
*,
keys,
orders,
trends,
rolls,
enrich=None,
) -> dict:
"""合并 enrich 增量字段;enrich 只返回 trends 等局部时不得丢掉 keys/orders。"""
payload = {
"ok": True,
"keys": keys,
"orders": orders,
"trends": trends,
"rolls": rolls,
"key_prices": [],
}
if callable(enrich):
extra = enrich(keys=keys, orders=orders, trends=trends, rolls=rolls)
if isinstance(extra, dict):
payload.update(extra)
return payload
_FAIL_HINTS = (
"失败",
"错误",
@@ -280,20 +304,24 @@ def register_hub_routes(app):
enrich = c.get("enrich_monitor")
if callable(enrich):
try:
payload = enrich(keys=keys, orders=orders, trends=trends, rolls=rolls)
if isinstance(payload, dict):
return jsonify({"ok": True, **payload})
return jsonify(
build_hub_monitor_payload(
keys=keys,
orders=orders,
trends=trends,
rolls=rolls,
enrich=enrich,
)
)
except Exception as e:
return jsonify({"ok": False, "msg": str(e)}), 500
return jsonify(
{
"ok": True,
"keys": keys,
"orders": orders,
"trends": trends,
"rolls": rolls,
"key_prices": [],
}
build_hub_monitor_payload(
keys=keys,
orders=orders,
trends=trends,
rolls=rolls,
)
)
@app.route("/api/hub/ohlcv")