"""Schemas — Panelist notes & PDF evaluation reports."""

from typing import Any
from uuid import UUID

from pydantic import BaseModel, Field

from app.schemas.common import StubMeta


class PanelistNotesRequest(BaseModel):
    """POST /api/v1/reports/panelist-notes"""

    correlation_id: UUID | None = None
    interview_id: str
    candidate_id: str
    role_title: str
    scorecard: dict[str, Any] = Field(default_factory=dict)
    transcript_excerpt: str | None = None
    recruiter_annotations: list[str] = Field(default_factory=list)
    options: dict[str, Any] = Field(default_factory=dict)


class PanelistNotesResponse(StubMeta):
    correlation_id: UUID | None = None
    interview_id: str
    notes_markdown: str | None = None
    highlights: list[str] = Field(default_factory=list)
    risks: list[str] = Field(default_factory=list)
    recommendation: str | None = None


class EvaluationReportRequest(BaseModel):
    """POST /api/v1/reports/evaluation-pdf"""

    correlation_id: UUID | None = None
    interview_id: str
    candidate_id: str
    candidate_name: str | None = None
    role_title: str
    company_name: str | None = None
    scoring_payload: dict[str, Any] = Field(default_factory=dict)
    panelist_notes: str | None = None
    include_transcript: bool = False
    branding: dict[str, Any] = Field(default_factory=dict)
    options: dict[str, Any] = Field(default_factory=dict)


class EvaluationReportResponse(StubMeta):
    correlation_id: UUID | None = None
    interview_id: str
    report_id: str | None = None
    pdf_base64: str | None = None
    download_url: str | None = None
    summary_markdown: str | None = None
