feat: notificaction service completo

This commit is contained in:
CarmenGlez20
2026-05-22 18:05:33 -06:00
parent e6a1c7fb84
commit 0b9407f3f9

View File

@@ -247,3 +247,30 @@ def startup():
t = threading.Thread(target=start_cron, daemon=True) t = threading.Thread(target=start_cron, daemon=True)
t.start() t.start()
print(f"[STARTUP] Notification Service listo. {len(RUTAS)} rutas cargadas.") print(f"[STARTUP] Notification Service listo. {len(RUTAS)} rutas cargadas.")
@app.post("/internal/reset")
def reset_routes():
"""Reinicia todas las rutas a positionId 1. Útil para el demo."""
for route_id in RUTAS:
route_state[route_id] = {"positionId": 1, "notified": set()}
print("[RESET] Todas las rutas reiniciadas a positionId 1")
return {"status": "ok", "message": f"{len(RUTAS)} rutas reiniciadas"}
@app.post("/internal/demo")
def demo_trigger(payload: dict):
"""
Fuerza una ruta a un positionId específico al instante.
Ideal para demos en vivo.
Body: { "routeId": "RUTA-01", "positionId": 4 }
"""
route_id = payload.get("routeId", "RUTA-01")
position_id = payload.get("positionId", 4)
# Limpia notificaciones previas para que dispare de nuevo
state = route_state.setdefault(route_id, {"positionId": 1, "notified": set()})
state["notified"].discard("ROUTE_START")
state["notified"].discard("TRUCK_PROXIMITY")
state["notified"].discard("ROUTE_COMPLETED")
process_position_update(route_id, position_id)
return {"status": "ok", "routeId": route_id, "positionId": position_id}