Skip to content

[INTEGRATION] F-05.2 — Endpoint SSE para Push de Eventos al Frontend

Épica: EPIC-05 — Infraestructura y Conectividad

🏷️ Categoría

Categoría: IntegrationImpacta en: Equipo Backend (Laravel) + Equipo Infraestructura

📦 Dependencias

Backlogs que deben estar completados antes de implementar esta feature.

BacklogMotivo
F-00.1Base Laravel instalada
F-05.1Conexión PostgreSQL activa para LISTEN/pg_notify
F-05.3Middleware auth para bloquear acceso SSE sin sesión válida
F-05.4Ruta GET /sse/logs definida en routes/web.php

Prioridad: Should


Descripción: Como desarrollador del sistema Quiero implementar un endpoint SSE en Laravel 12 que envíe actualizaciones de contadores al panel Livewire en tiempo real Para que el dashboard refleje cambios automáticamente sin polling desde el cliente

Criterios de Aceptación (Checklist):

  • [ ] Escenario 1 (Conexión SSE): Dado que el cliente Alpine.js abre la conexión al endpoint SSE via EventSource, cuando el servidor acepta la conexión, entonces responde con Content-Type: text/event-stream y mantiene la conexión abierta.
  • [ ] Escenario 2 (Evento push): Dado que n8n inserta un nuevo log en Postgres, cuando el servidor detecta el cambio (via pg_notify o polling), entonces envía un evento SSE con los nuevos contadores actualizados en menos de 2 s (NFR-LAT-03).
  • [ ] Escenario 3 (Autenticación): Dado que un cliente sin sesión válida solicita el endpoint SSE, cuando realiza la petición, entonces recibe redirección al login y la conexión no se establece (STRIDE I-API-01).
  • [ ] Escenario 4 (Desconexión limpia): Dado que el frontend cierra el tab o navega fuera, cuando la conexión SSE se cierra, entonces el servidor libera los recursos asociados sin memory leaks.
  • [ ] Requisito Técnico: Implementar con StreamedResponse de Laravel. Usar pg_notify/LISTEN de PostgreSQL para reactividad. El endpoint requiere middleware auth (sesión web de Laravel — no Sanctum, no hay tokens API en este proyecto). Configurar php.ini con output_buffering = Off para streaming correcto.

Log Management Dashboard — Documentación del Proyecto