"""Schemas — Bias detection in questions / evaluation (SOW)."""

from typing import Any
from uuid import UUID

from pydantic import BaseModel, Field

from app.schemas.common import StubMeta


class BiasDetectionRequest(BaseModel):
    """POST /api/v1/bias-detection/analyze"""

    correlation_id: UUID | None = None
    content_type: str = Field(
        default="questions",
        description="questions | evaluation | job_description | transcript",
    )
    content: str | None = None
    questions: list[dict[str, Any]] = Field(default_factory=list)
    evaluation_text: str | None = None
    job_description: str | None = None
    language: str = Field(default="en", min_length=2, max_length=10)
    options: dict[str, Any] = Field(default_factory=dict)


class BiasFlagItem(BaseModel):
    category: str
    severity: str = "low"
    excerpt: str | None = None
    description: str
    recommendation: str | None = None


class BiasDetectionResponse(StubMeta):
    correlation_id: UUID | None = None
    content_type: str
    passed: bool | None = None
    risk_score: float | None = None
    flags: list[BiasFlagItem] = Field(default_factory=list)
    rewritten_suggestions: list[str] = Field(default_factory=list)
