"""Schemas — Hiring-fit prediction (SOW AI Intelligence)."""

from typing import Any
from uuid import UUID

from pydantic import BaseModel, Field

from app.schemas.common import StubMeta
from app.schemas.interviews import TranscriptTurn


class HiringFitRequest(BaseModel):
    """POST /api/v1/hiring-fit/predict"""

    correlation_id: UUID | None = None
    candidate_id: str
    role_title: str
    job_description: str | None = None
    required_skills: list[str] = Field(default_factory=list)
    resume_text: str | None = None
    transcript: list[TranscriptTurn] = Field(default_factory=list)
    scorecard: dict[str, Any] = Field(default_factory=dict)
    language: str = Field(default="en", min_length=2, max_length=10)
    options: dict[str, Any] = Field(default_factory=dict)


class HiringFitResponse(StubMeta):
    correlation_id: UUID | None = None
    candidate_id: str
    role_title: str
    hiring_fit_score: float | None = None
    hiring_fit_label: str | None = None  # strong_yes | yes | maybe | no
    passed: bool | None = None
    reasons: list[str] = Field(default_factory=list)
    risks: list[str] = Field(default_factory=list)
    next_step: str | None = None
