[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.
| Backlog | Motivo |
|---|---|
| F-00.1 | Base Laravel instalada |
| F-05.1 | Conexión PostgreSQL activa para LISTEN/pg_notify |
| F-05.3 | Middleware auth para bloquear acceso SSE sin sesión válida |
| F-05.4 | Ruta 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 conContent-Type: text/event-streamy 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
StreamedResponsede Laravel. Usarpg_notify/LISTENde PostgreSQL para reactividad. El endpoint requiere middlewareauth(sesión web de Laravel — no Sanctum, no hay tokens API en este proyecto). Configurarphp.iniconoutput_buffering = Offpara streaming correcto.