FlotillasGPS - Sistema completo de monitoreo de flotillas GPS
Sistema completo para monitoreo y gestion de flotas de vehiculos con: - Backend FastAPI con PostgreSQL/TimescaleDB - Frontend React con TypeScript y TailwindCSS - App movil React Native con Expo - Soporte para dispositivos GPS, Meshtastic y celulares - Video streaming en vivo con MediaMTX - Geocercas, alertas, viajes y reportes - Autenticacion JWT y WebSockets en tiempo real Documentacion completa y guias de usuario incluidas.
This commit is contained in:
108
backend/app/schemas/configuracion.py
Normal file
108
backend/app/schemas/configuracion.py
Normal file
@@ -0,0 +1,108 @@
|
||||
"""
|
||||
Schemas Pydantic para Configuración.
|
||||
"""
|
||||
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
from pydantic import Field
|
||||
|
||||
from app.schemas.base import BaseSchema, TimestampSchema
|
||||
|
||||
|
||||
class ConfiguracionBase(BaseSchema):
|
||||
"""Schema base de configuración."""
|
||||
|
||||
clave: str = Field(..., min_length=2, max_length=100)
|
||||
categoria: str = Field(default="general", max_length=50)
|
||||
descripcion: Optional[str] = None
|
||||
|
||||
|
||||
class ConfiguracionCreate(ConfiguracionBase):
|
||||
"""Schema para crear configuración."""
|
||||
|
||||
valor: Any # Se convertirá a JSON
|
||||
tipo_dato: str = Field(default="string", pattern="^(string|number|boolean|json|array)$")
|
||||
sensible: bool = False
|
||||
editable: bool = True
|
||||
|
||||
|
||||
class ConfiguracionUpdate(BaseSchema):
|
||||
"""Schema para actualizar configuración."""
|
||||
|
||||
valor: Any
|
||||
descripcion: Optional[str] = None
|
||||
|
||||
|
||||
class ConfiguracionResponse(ConfiguracionBase, TimestampSchema):
|
||||
"""Schema de respuesta de configuración."""
|
||||
|
||||
valor_json: str
|
||||
tipo_dato: str
|
||||
sensible: bool
|
||||
editable: bool
|
||||
|
||||
# Valor parseado
|
||||
valor: Optional[Any] = None
|
||||
|
||||
|
||||
class ConfiguracionResumen(BaseSchema):
|
||||
"""Schema resumido de configuración."""
|
||||
|
||||
clave: str
|
||||
categoria: str
|
||||
valor: Any
|
||||
tipo_dato: str
|
||||
editable: bool
|
||||
|
||||
|
||||
class ConfiguracionesPorCategoria(BaseSchema):
|
||||
"""Schema con configuraciones agrupadas por categoría."""
|
||||
|
||||
categoria: str
|
||||
configuraciones: List[ConfiguracionResumen]
|
||||
|
||||
|
||||
class ConfiguracionesResponse(BaseSchema):
|
||||
"""Schema de respuesta con todas las configuraciones."""
|
||||
|
||||
categorias: List[str]
|
||||
configuraciones: Dict[str, List[ConfiguracionResumen]]
|
||||
|
||||
|
||||
class ActualizarConfiguracionesRequest(BaseSchema):
|
||||
"""Schema para actualizar múltiples configuraciones."""
|
||||
|
||||
configuraciones: Dict[str, Any] # {clave: valor}
|
||||
|
||||
|
||||
class ConfiguracionesAlertasResponse(BaseSchema):
|
||||
"""Schema específico para configuraciones de alertas."""
|
||||
|
||||
velocidad_maxima: int
|
||||
parada_minutos: int
|
||||
bateria_minima: int
|
||||
sin_señal_minutos: int
|
||||
motor_encendido_minutos: int
|
||||
|
||||
|
||||
class ConfiguracionesViajesResponse(BaseSchema):
|
||||
"""Schema específico para configuraciones de viajes."""
|
||||
|
||||
velocidad_minima: float
|
||||
parada_minutos: int
|
||||
|
||||
|
||||
class ConfiguracionesNotificacionesResponse(BaseSchema):
|
||||
"""Schema específico para configuraciones de notificaciones."""
|
||||
|
||||
email_habilitado: bool
|
||||
push_habilitado: bool
|
||||
destinatarios: List[str]
|
||||
|
||||
|
||||
class ConfiguracionesMapaResponse(BaseSchema):
|
||||
"""Schema específico para configuraciones de mapa."""
|
||||
|
||||
centro_lat: float
|
||||
centro_lng: float
|
||||
zoom_default: int
|
||||
Reference in New Issue
Block a user