"""开仓后挂 TP/SL 失败时的补偿平仓(避免裸仓)."""
from __future__ import annotations

from typing import Callable


def log_compensating_close_error(prefix: str, exc: BaseException) -> None:
    print(f"[{prefix}] {exc}", flush=True)


def run_compensating_close(close_fn: Callable[[], None], *, log_prefix: str = "compensating_close") -> None:
    """执行补偿平仓;二次失败只打日志,不掩盖原始异常."""
    try:
        close_fn()
    except Exception as e:
        log_compensating_close_error(log_prefix, e)
