feat期权盈亏按交易账户快照结算:一次一仓、持仓禁划转、卖回后冻结。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-10-09 00:29:47 +08:00
parent e0e2a94322
commit 260bfd1f29
12 changed files with 659 additions and 157 deletions
+39
View File
@@ -1026,6 +1026,21 @@ def register_options_routes(app: Flask, cfg: dict[str, Any]) -> None:
conn_c.close()
except Exception:
pass
transfer_blocked = False
transfer_block_msg = ""
try:
from lib.options.options_account_pnl_lib import transfer_blocked_by_position_msg
conn_tb = cfg["get_db"]()
try:
tmsg = transfer_blocked_by_position_msg(conn_tb, ex)
if tmsg:
transfer_blocked = True
transfer_block_msg = tmsg
finally:
conn_tb.close()
except Exception:
pass
return jsonify(
{
"ok": True,
@@ -1034,6 +1049,8 @@ def register_options_routes(app: Flask, cfg: dict[str, Any]) -> None:
"cond_order_locked": cond_locked,
"cond_order_msg": cond_msg,
"cond_order": cond_order,
"transfer_blocked": transfer_blocked,
"transfer_block_msg": transfer_block_msg,
}
)
@@ -1196,6 +1213,18 @@ def register_options_routes(app: Flask, cfg: dict[str, Any]) -> None:
inst_id=inst_id,
)
if out.get("ok"):
try:
from lib.options.options_account_pnl_lib import try_settle_after_sellback
bid = out.get("bridge_id")
try_settle_after_sellback(
cfg["get_db"],
ex,
bridge_id=int(bid) if bid is not None else None,
cfg=cfg,
)
except Exception:
pass
_mark_balances_stale(cfg)
return jsonify(out)
@@ -1215,6 +1244,16 @@ def register_options_routes(app: Flask, cfg: dict[str, Any]) -> None:
ex, err = _require_options_ex(cfg)
if ex is None:
return jsonify({"ok": False, "msg": err})
# 持仓/待卖回禁止划转(规格)
conn_blk = cfg["get_db"]()
try:
from lib.options.options_account_pnl_lib import transfer_blocked_by_position_msg
block = transfer_blocked_by_position_msg(conn_blk, ex)
if block:
return jsonify({"ok": False, "msg": block, "transfer_blocked": True})
finally:
conn_blk.close()
data = request.get_json(silent=True) or {}
ccy = (data.get("ccy") or "USDC").upper()
from_acct = (data.get("from") or "funding").strip()