"""Schemas — Badge recommendations from tracks/assessments (SOW gamification AI)."""

from typing import Any
from uuid import UUID

from pydantic import BaseModel, Field

from app.schemas.common import StubMeta


class BadgeRecommendRequest(BaseModel):
    """POST /api/v1/badges/recommend"""

    correlation_id: UUID | None = None
    candidate_id: str
    track_results: list[dict[str, Any]] = Field(default_factory=list)
    assessment_results: list[dict[str, Any]] = Field(default_factory=list)
    interview_scores: list[dict[str, Any]] = Field(default_factory=list)
    options: dict[str, Any] = Field(default_factory=dict)


class BadgeItem(BaseModel):
    badge_id: str
    name: str
    level: str | None = None
    reason: str | None = None


class BadgeRecommendResponse(StubMeta):
    correlation_id: UUID | None = None
    candidate_id: str
    earned: list[BadgeItem] = Field(default_factory=list)
    next_badges: list[BadgeItem] = Field(default_factory=list)
