import uuid
from datetime import datetime
from typing import Optional

from pydantic import BaseModel, ConfigDict


# ── Anomaly Flags ───────────────────────────────────────────────────────────

class AnomalyFlagResponse(BaseModel):
    model_config = ConfigDict(from_attributes=True)

    id: uuid.UUID
    user_id: uuid.UUID
    user_name: Optional[str] = None
    completion_id: Optional[uuid.UUID] = None
    flag_type: str
    severity: str
    description: str
    auto_detected: bool
    resolved: bool
    resolved_by: Optional[uuid.UUID] = None
    resolved_at: Optional[datetime] = None
    resolution_note: Optional[str] = None
    created_at: datetime


class ResolveAnomalyRequest(BaseModel):
    approve: bool
    note: Optional[str] = None


# ── Verification Requests ───────────────────────────────────────────────────

class VerificationResponse(BaseModel):
    model_config = ConfigDict(from_attributes=True)

    id: uuid.UUID
    completion_id: uuid.UUID
    user_id: uuid.UUID
    user_name: Optional[str] = None
    evidence_url: Optional[str] = None
    evidence_type: Optional[str] = None
    notes: Optional[str] = None
    status: str
    reviewed_by: Optional[uuid.UUID] = None
    reviewed_at: Optional[datetime] = None
    review_note: Optional[str] = None
    created_at: datetime


class ReviewVerificationRequest(BaseModel):
    approve: bool
    note: Optional[str] = None
