"""Esquemas Pydantic para retroalimentación ciudadana."""
from typing import Optional
from pydantic import BaseModel, Field


class FeedbackCreate(BaseModel):
    """Cuerpo enviado por el ciudadano al crear una queja/sugerencia.

    Importante: NUNCA se acepta driver_id; solo el número de la unidad.
    """

    address_id: Optional[str] = None  # UUID
    type: str = Field(min_length=1, max_length=40)
    rating: int = Field(ge=1, le=5)
    # Llega como string ("101") desde Flutter; Pydantic lo coacciona a int.
    target_unit_id: Optional[int] = None
    message: Optional[str] = Field(default=None, max_length=1000)


class FeedbackOut(BaseModel):
    id: str
    user_id: str
    address_id: Optional[str] = None
    type: str
    target_unit_id: Optional[int] = None
    message: Optional[str] = None
    rating: Optional[int] = None
    created_at: Optional[str] = None
