Files
pedidosClientes/app/api/routes/alertas.py
2025-12-05 11:27:16 -03:00

51 lines
1.4 KiB
Python

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