fix: 交易安全审计修复 — 补偿平仓、中控同步、滚仓/趋势防护

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-04 22:44:16 +08:00
parent df28e6dfb8
commit eb975b0133
11 changed files with 675 additions and 162 deletions
@@ -37,6 +37,34 @@ KEY_ENTRY_REASON_CALLBACK = "关键位回调触价开仓"
KEY_ENTRY_REASON_BREAKOUT = "关键位突破触价开仓"
KEY_ENTRY_REASON_TRIGGER_LEGACY = "关键位触价开仓"
TRIGGER_ENTRY_IN_FLIGHT_OID = "__trigger_entry_in_flight__"
def is_trigger_entry_in_flight_row(row: Any) -> bool:
if row is None:
return False
try:
v = row["fib_limit_order_id"]
except (KeyError, IndexError, TypeError):
v = getattr(row, "fib_limit_order_id", None)
return (v or "").strip() == TRIGGER_ENTRY_IN_FLIGHT_OID
def acquire_trigger_entry_exec_lock(conn: Any, monitor_id: int) -> bool:
cur = conn.execute(
"UPDATE key_monitors SET fib_limit_order_id=? WHERE id=? "
"AND (fib_limit_order_id IS NULL OR fib_limit_order_id='')",
(TRIGGER_ENTRY_IN_FLIGHT_OID, int(monitor_id)),
)
return int(cur.rowcount or 0) == 1
def release_trigger_entry_exec_lock(conn: Any, monitor_id: int) -> None:
conn.execute(
"UPDATE key_monitors SET fib_limit_order_id=NULL WHERE id=? AND fib_limit_order_id=?",
(int(monitor_id), TRIGGER_ENTRY_IN_FLIGHT_OID),
)
def normalize_trigger_entry_monitor_type(monitor_type: Optional[str]) -> str:
mt = (monitor_type or "").strip()