from __future__ import annotations

import logging
from dataclasses import dataclass
from datetime import datetime, timezone

from config.settings import settings

logger = logging.getLogger(__name__)


@dataclass
class Decision:
    symbol: str
    action: str        # "BUY" | "SELL" | "HOLD"
    score: float
    signal_count: int
    decided_at: datetime


class DecisionEngine:
    """يحوِّل الـ score إلى قرار BUY / SELL / HOLD."""

    def decide(self, symbol: str, score: float, signal_count: int) -> Decision:
        if score > settings.DECISION_THRESHOLD:
            action = "BUY"
        elif score < -settings.DECISION_THRESHOLD:
            action = "SELL"
        else:
            action = "HOLD"

        decision = Decision(
            symbol=symbol,
            action=action,
            score=score,
            signal_count=signal_count,
            decided_at=datetime.now(timezone.utc),
        )
        logger.info(
            f"قرار: {action} {symbol} | score={score:.3f} "
            f"threshold=±{settings.DECISION_THRESHOLD} إشارات={signal_count}"
        )
        return decision


decision_engine = DecisionEngine()
