"""Schemas — Personalized interview prep plans."""

from typing import Any
from uuid import UUID

from pydantic import BaseModel, Field

from app.schemas.common import StubMeta


class PrepPlanRequest(BaseModel):
    """POST /api/v1/prep-plans/generate"""

    correlation_id: UUID | None = None
    candidate_id: str | None = None
    role_title: str = Field(..., min_length=1)
    job_description: str = Field(..., min_length=20)
    resume_text: str | None = None
    resume_structured: dict[str, Any] = Field(default_factory=dict)
    target_level: str = Field(default="intermediate")  # beginner | intermediate | advanced
    focus_skills: list[str] = Field(default_factory=list)
    language: str = Field(default="en", min_length=2, max_length=10)
    options: dict[str, Any] = Field(default_factory=dict)


class PrepPlanSection(BaseModel):
    title: str
    items: list[str] = Field(default_factory=list)
    estimated_hours: float | None = None


class PrepPlanResponse(StubMeta):
    correlation_id: UUID | None = None
    candidate_id: str | None = None
    role_title: str
    plan_id: str | None = None
    summary: str | None = None
    skill_gaps: list[str] = Field(default_factory=list)
    sections: list[PrepPlanSection] = Field(default_factory=list)
    suggested_tracks: list[str] = Field(default_factory=list)
