Spaces:
Running
Running
| """Modelos Pydantic para validaci贸n de datos""" | |
| from pydantic import BaseModel, EmailStr, Field | |
| from typing import Optional | |
| from datetime import datetime | |
| class RegistroRequest(BaseModel): | |
| """Modelo para crear un nuevo registro""" | |
| uid: str = Field(..., max_length=255, description="UID de Firestore") | |
| display_name: str = Field(..., min_length=1, max_length=255, description="Nombre a mostrar") | |
| pais: str = Field(..., min_length=1, max_length=255, description="Pa铆s del usuario") | |
| correo: EmailStr = Field(..., description="Email del usuario") | |
| fecha_registro: Optional[datetime] = Field(None, description="Fecha de registro") | |
| usos: Optional[int] = Field(0, ge=0, description="Cantidad de usos") | |
| prompt: Optional[str] = Field(None, max_length=255, description="Prompt utilizado") | |
| prompt_type: Optional[str] = Field(None, max_length=255, description="Tipo de prompt") | |
| prompt_eval: Optional[str] = Field(None, max_length=255, description="Evaluaci贸n del prompt") | |
| estilo: Optional[str] = Field(None, max_length=255, description="Estilo para la generaci贸n") | |
| estilo_agregado: Optional[str] = Field(None, max_length=255, description="Estilo adicional") | |
| calificacion: Optional[int] = Field(None, ge=0, description="Calificaci贸n num茅rica") | |
| proveedor: Optional[str] = Field(None, max_length=255, description="Proveedor del servicio") | |
| seed: Optional[int] = Field(None, description="Seed para generaci贸n") | |
| class Config: | |
| example = { | |
| "uid": "usuario123", | |
| "display_name": "Juan P茅rez", | |
| "pais": "Espa帽a", | |
| "correo": "juan@example.com", | |
| "prompt": "crear imagen de perro", | |
| "prompt_type": "imagen", | |
| "prompt_eval": "muy buena calidad", | |
| "estilo": "realista", | |
| "estilo_agregado": "alto detalle", | |
| "calificacion": 9, | |
| "proveedor": "openai", | |
| "seed": 12345 | |
| } | |
| class RegistroResponse(BaseModel): | |
| """Modelo para respuesta de registro""" | |
| id: int = Field(..., description="ID 煤nico del registro (auto-incremental)") | |
| uid: str = Field(..., description="UID de Firestore") | |
| display_name: str | |
| pais: str | |
| correo: str | |
| fecha_registro: Optional[datetime] | |
| usos: int | |
| prompt: Optional[str] | |
| prompt_type: Optional[str] | |
| prompt_eval: Optional[str] | |
| estilo: Optional[str] | |
| estilo_agregado: Optional[str] | |
| calificacion: Optional[int] | |
| proveedor: Optional[str] | |
| seed: Optional[int] | |
| created_at: datetime | |
| class Config: | |
| example = { | |
| "id": "550e8400-e29b-41d4-a716-446655440000", | |
| "display_name": "Juan P茅rez", | |
| "pais": "Espa帽a", | |
| "correo": "juan@example.com", | |
| "fecha_registro": "2025-01-13T10:30:00", | |
| "usos": 0, | |
| "prompt": "crear imagen de perro", | |
| "proveedor": "openai", | |
| "seed": 12345, | |
| "created_at": "2025-01-13T10:30:00" | |
| } | |
| class CalificacionRequest(BaseModel): | |
| """Modelo para actualizar calificaci贸n de un registro""" | |
| id: int = Field(..., gt=0, description="ID del registro a calificar") | |
| calificacion: int = Field(..., ge=0, description="Calificaci贸n num茅rica") | |
| class Config: | |
| example = { | |
| "id": 1, | |
| "calificacion": 8 | |
| } | |