fix(hub): preserve key monitors when enrich_monitor returns partial payload
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+39
-11
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user