中控可下发买一全平:客户端新增 /api/hub/options/close,由本地执行并拒绝无效买一。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
"""中控只读 Bridge 路由 + SSO 登录入口."""
|
||||
"""中控 Bridge:只读快照 + 受限写(买一全平) + SSO 登录入口."""
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
@@ -151,6 +151,34 @@ def register_hub_bridge_routes(app: Flask, app_module: Any) -> None:
|
||||
return jsonify({"ok": False, "msg": str(e), "version": 1, "enabled": True}), 500
|
||||
return jsonify(_enrich_hub_protocol(snap, app_module=app_module))
|
||||
|
||||
@app.route("/api/hub/options/close", methods=["POST"])
|
||||
def api_hub_options_close():
|
||||
"""中控下发全平指令:客户端本地买一限价执行;无效买一拒绝."""
|
||||
if not hub_bridge_token_ok(request.headers):
|
||||
return jsonify({"ok": False, "msg": "未授权", "version": 1}), 401
|
||||
data = request.get_json(silent=True) or {}
|
||||
if data.get("market"):
|
||||
return jsonify({"ok": False, "msg": "已禁用市价平仓,仅支持买一限价", "version": 1})
|
||||
# 总览约定只全平,忽略/拒绝自定义张数
|
||||
if data.get("sheets") is not None and str(data.get("sheets")).strip() != "":
|
||||
return jsonify({"ok": False, "msg": "中控平仓仅支持全平,勿传 sheets", "version": 1})
|
||||
inst_id = (data.get("inst_id") or "").strip()
|
||||
if not inst_id:
|
||||
return jsonify({"ok": False, "msg": "缺少 inst_id", "version": 1})
|
||||
hub_ctx = app.config.get("HUB_CTX") or {}
|
||||
fn = hub_ctx.get("options_close_fn")
|
||||
if not callable(fn):
|
||||
return jsonify({"ok": False, "msg": "平仓接口未注册", "version": 1}), 503
|
||||
try:
|
||||
result = fn(inst_id) or {}
|
||||
except Exception as e:
|
||||
return jsonify({"ok": False, "msg": str(e) or "平仓失败", "version": 1}), 500
|
||||
if not isinstance(result, dict):
|
||||
return jsonify({"ok": False, "msg": "平仓返回异常", "version": 1}), 500
|
||||
out = dict(result)
|
||||
out["version"] = 1
|
||||
return jsonify(out)
|
||||
|
||||
@app.route("/hub_sso")
|
||||
def hub_sso_login():
|
||||
token = (request.args.get("token") or "").strip()
|
||||
|
||||
Reference in New Issue
Block a user