"""Schemas — Dedicated skill-gap analysis (SOW AI Intelligence)."""

from typing import Any
from uuid import UUID

from pydantic import BaseModel, Field

from app.schemas.common import StubMeta


class SkillGapAnalyzeRequest(BaseModel):
    """POST /api/v1/skill-gap/analyze"""

    correlation_id: UUID | None = None
    candidate_id: str | None = None
    role_title: str
    job_description: str = Field(..., min_length=20)
    resume_text: str | None = None
    resume_structured: dict[str, Any] = Field(default_factory=dict)
    required_skills: list[str] = Field(default_factory=list)
    demonstrated_skills: list[str] = Field(default_factory=list)
    interview_answers: list[dict[str, Any]] = Field(default_factory=list)
    language: str = Field(default="en", min_length=2, max_length=10)
    options: dict[str, Any] = Field(default_factory=dict)


class SkillGapItem(BaseModel):
    skill: str
    required_level: float | None = None
    demonstrated_level: float | None = None
    gap: float | None = None
    priority: str = "medium"  # low | medium | high
    learning_suggestions: list[str] = Field(default_factory=list)
    evidence: str | None = None


class SkillGapAnalyzeResponse(StubMeta):
    correlation_id: UUID | None = None
    candidate_id: str | None = None
    role_title: str
    overall_readiness: float | None = None
    gaps: list[SkillGapItem] = Field(default_factory=list)
    strengths: list[str] = Field(default_factory=list)
    recommended_prep_focus: list[str] = Field(default_factory=list)
