"""Schemas — Browser proctoring / anti-cheat signals (SOW)."""

from typing import Any
from uuid import UUID

from pydantic import BaseModel, Field

from app.schemas.common import StubMeta


class ProctoringAnalyzeRequest(BaseModel):
    """POST /api/v1/proctoring/analyze"""

    correlation_id: UUID | None = None
    interview_id: str
    candidate_id: str | None = None
    events: list[dict[str, Any]] = Field(
        default_factory=list,
        description="tab_switch, blur, multi_face, copy_paste, idle, etc.",
    )
    duration_seconds: int | None = None
    options: dict[str, Any] = Field(default_factory=dict)


class ProctoringFlag(BaseModel):
    event_type: str
    severity: str = "low"
    count: int = 1
    notes: str | None = None


class ProctoringAnalyzeResponse(StubMeta):
    correlation_id: UUID | None = None
    interview_id: str
    risk_score: float | None = None
    integrity_passed: bool | None = None
    flags: list[ProctoringFlag] = Field(default_factory=list)
    recommendation: str | None = None
