from fastapi import APIRouter, Depends from prisma import Prisma from typing import List, Dict from datetime import datetime, timedelta from app.api.dependencies import get_prisma router = APIRouter(prefix="/alertas", tags=["alertas"]) @router.get("/") async def obtener_alertas( db: Prisma = Depends(get_prisma) ) -> List[Dict]: """Obtener alertas de pedidos urgentes (menos de 12 horas)""" ahora = datetime.now() limite = ahora + timedelta(hours=12) pedidos_urgentes = await db.pedidocliente.find_many( where={ "fechaCita": { "gte": ahora, "lte": limite }, "estado": { "in": ["pendiente_revision", "en_revision", "pendiente_materiales"] } }, include={ "cliente": True, "referencias": True } ) alertas = [] for pedido in pedidos_urgentes: referencias_faltantes = [ ref.dict() for ref in pedido.referencias if ref.unidadesPendientes > 0 ] if referencias_faltantes: tiempo_restante = (pedido.fechaCita - ahora).total_seconds() / 3600 alertas.append({ "pedido": pedido.dict(), "referencias_faltantes": referencias_faltantes, "horas_restantes": tiempo_restante }) return alertas