from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session

from .. import models
from ..database import get_db
from ..services.reporting import portfolio_summary

router = APIRouter(prefix="/api/dashboard", tags=["dashboard"])


@router.get("/briefing")
def briefing(db: Session = Depends(get_db)):
    """AI CIO executive briefing: regime, mode, readiness-ranked opportunities."""
    from ..services.briefing import build_briefing

    return build_briefing(db)


@router.get("/summary")
def summary(db: Session = Depends(get_db)):
    portfolio = portfolio_summary(db)
    latest_run = db.query(models.ScanRun).order_by(models.ScanRun.id.desc()).first()
    signals = (
        db.query(models.Signal)
        .filter(models.Signal.status == "approved")
        .order_by(models.Signal.created_at.desc(), models.Signal.confidence.desc())
        .limit(6)
        .all()
    )
    return {
        "portfolio": portfolio,
        "last_scan": {
            "id": latest_run.id,
            "started_at": latest_run.started_at.isoformat(),
            "universe_size": latest_run.universe_size,
            "candidates": latest_run.candidates,
            "signals_created": latest_run.signals_created,
        } if latest_run else None,
        "top_signals": [
            {
                "id": s.id, "symbol": s.symbol, "company": s.company,
                "direction": s.direction, "confidence": s.confidence,
                "probability": s.probability, "risk_reward": s.risk_reward,
                "entry": s.entry, "risk_rating": s.risk_rating, "history": s.history,
            } for s in signals
        ],
    }
