from typing import Annotated

from fastapi import APIRouter, Depends, HTTPException, status

from app.auth.deps import CurrentUser, current_user
from app.schemas.intel import AnalysisMetrics, AnalysisRequest, AnalysisResponse
from app.services.analysis import run_analysis

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


@router.post("/run", response_model=AnalysisResponse)
async def analysis_run(
    payload: AnalysisRequest,
    _user: Annotated[CurrentUser, Depends(current_user)],
) -> AnalysisResponse:
    if not payload.nif:
        raise HTTPException(status.HTTP_400_BAD_REQUEST, "nif is required")
    try:
        result = await run_analysis(payload.nif, payload.name)
    except ValueError as e:
        raise HTTPException(status.HTTP_400_BAD_REQUEST, str(e))
    return AnalysisResponse(
        company_id=result["company_id"],
        nif=result["nif"],
        legal_name=result["legal_name"],
        monitoring_type=result["monitoring_type"],
        metrics=AnalysisMetrics(**result["metrics"]),
        created=result["created"],
    )
