"""Schemas — AI-generated candidate profile summaries (SOW capabilities)."""

from typing import Any
from uuid import UUID

from pydantic import BaseModel, Field

from app.schemas.common import StubMeta


class CandidateProfileSummarizeRequest(BaseModel):
    """POST /api/v1/candidate-profiles/summarize"""

    correlation_id: UUID | None = None
    candidate_id: str
    resume_text: str | None = None
    interview_history: list[dict[str, Any]] = Field(default_factory=list)
    assessment_records: list[dict[str, Any]] = Field(default_factory=list)
    badges: list[str] = Field(default_factory=list)
    reports: list[dict[str, Any]] = Field(default_factory=list)
    target_role: str | None = None
    language: str = Field(default="en", min_length=2, max_length=10)
    options: dict[str, Any] = Field(default_factory=dict)


class CandidateProfileSummarizeResponse(StubMeta):
    correlation_id: UUID | None = None
    candidate_id: str
    headline: str | None = None
    summary_markdown: str | None = None
    strengths: list[str] = Field(default_factory=list)
    growth_areas: list[str] = Field(default_factory=list)
    readiness_score: float | None = None
    badge_highlights: list[str] = Field(default_factory=list)
    recommended_next_steps: list[str] = Field(default_factory=list)
