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.
53 lines
1.4 KiB
Python
53 lines
1.4 KiB
Python
"""
|
|
Schemas Pydantic para Grupo de Vehículos.
|
|
"""
|
|
|
|
from typing import List, Optional
|
|
|
|
from pydantic import Field
|
|
|
|
from app.schemas.base import BaseSchema, TimestampSchema
|
|
|
|
|
|
class GrupoVehiculosBase(BaseSchema):
|
|
"""Schema base de grupo de vehículos."""
|
|
|
|
nombre: str = Field(..., min_length=2, max_length=100)
|
|
descripcion: Optional[str] = None
|
|
color: str = Field(default="#3B82F6", pattern=r"^#[0-9A-Fa-f]{6}$")
|
|
icono: Optional[str] = Field(None, max_length=50)
|
|
|
|
|
|
class GrupoVehiculosCreate(GrupoVehiculosBase):
|
|
"""Schema para crear grupo de vehículos."""
|
|
|
|
pass
|
|
|
|
|
|
class GrupoVehiculosUpdate(BaseSchema):
|
|
"""Schema para actualizar grupo de vehículos."""
|
|
|
|
nombre: Optional[str] = Field(None, min_length=2, max_length=100)
|
|
descripcion: Optional[str] = None
|
|
color: Optional[str] = Field(None, pattern=r"^#[0-9A-Fa-f]{6}$")
|
|
icono: Optional[str] = Field(None, max_length=50)
|
|
|
|
|
|
class GrupoVehiculosResponse(GrupoVehiculosBase, TimestampSchema):
|
|
"""Schema de respuesta de grupo de vehículos."""
|
|
|
|
id: int
|
|
cantidad_vehiculos: Optional[int] = None
|
|
|
|
|
|
class GrupoVehiculosConVehiculos(GrupoVehiculosResponse):
|
|
"""Schema con lista de vehículos del grupo."""
|
|
|
|
vehiculos: List["VehiculoResumen"] = []
|
|
|
|
|
|
# Import circular fix
|
|
from app.schemas.vehiculo import VehiculoResumen # noqa: E402
|
|
|
|
GrupoVehiculosConVehiculos.model_rebuild()
|