"""Schemas — Behavioral analysis (tone, hesitation, confidence cues)."""

from typing import Any
from uuid import UUID

from pydantic import BaseModel, Field

from app.schemas.common import StubMeta
from app.schemas.interviews import InterviewMode, TranscriptTurn


class BehavioralAnalysisRequest(BaseModel):
    """POST /api/v1/behavioral-analysis"""

    correlation_id: UUID | None = None
    interview_id: str
    candidate_id: str | None = None
    mode: InterviewMode = InterviewMode.VOICE
    transcript: list[TranscriptTurn] = Field(default_factory=list)
    audio_features: dict[str, Any] = Field(
        default_factory=dict,
        description="Optional acoustic features from media pipeline",
    )
    video_signals: 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 BehavioralCue(BaseModel):
    name: str
    score: float | None = None
    evidence: str | None = None


class BehavioralAnalysisResponse(StubMeta):
    correlation_id: UUID | None = None
    interview_id: str
    overall_confidence: float | None = None
    tone_summary: str | None = None
    cues: list[BehavioralCue] = Field(default_factory=list)
    flags: list[str] = Field(default_factory=list)
