"""Schemas — Progress / improvement analytics (SOW candidate AI)."""

from typing import Any
from uuid import UUID

from pydantic import BaseModel, Field

from app.schemas.common import StubMeta


class ProgressAnalyticsRequest(BaseModel):
    """POST /api/v1/progress-analytics/analyze"""

    correlation_id: UUID | None = None
    candidate_id: str
    role_title: str | None = None
    mock_history: list[dict[str, Any]] = Field(
        default_factory=list,
        description="Prior mock sessions: score, date, skills, mode",
    )
    assessment_history: list[dict[str, Any]] = Field(default_factory=list)
    prep_history: 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 ProgressAnalyticsResponse(StubMeta):
    correlation_id: UUID | None = None
    candidate_id: str
    readiness_score: float | None = None
    trend: str | None = None  # improving | flat | declining
    skill_trends: dict[str, Any] = Field(default_factory=dict)
    strengths: list[str] = Field(default_factory=list)
    focus_areas: list[str] = Field(default_factory=list)
    summary_markdown: str | None = None
