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:
FlotillasGPS Developer
2026-01-21 08:18:00 +00:00
commit 51d78bacf4
248 changed files with 50171 additions and 0 deletions

View 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