Skip to content

[F4-11] Progreso en tiempo real por SSE #68

Open

Description

@JCCG-code

Fase: F4 · Tamaño: M · Depende de: #65 (F4-10)

Objetivo

Que la web vea avanzar el proyecto paso a paso sin sondear la API, incluso tras cortes de red.

Alcance

  • GET /api/v1/projects/:id/events (text/event-stream), autenticado por la cookie de sesión y con comprobación de propietario.
  • Al conectar, o si Last-Event-ID es menor que project.rev, envía primero un evento snapshot (ProjectDTO completo) y después los cambios en vivo: step, scene, asset, project. El id de cada evento es la rev.
  • Un único suscriptor Redis por instancia de API, que reparte los eventos de project:<id> a sus conexiones.
  • Latido : ping cada 15 s; cabecera X-Accel-Buffering: no; excluido de compresión.
  • Se cierra al terminar el proyecto (completed, failed o cancelled) tras enviar el estado final.

Criterios de aceptación

  • Test con fake: un cliente SSE recibe snapshot y después eventos con rev estrictamente creciente hasta completed.
  • Test: reconectar con Last-Event-ID antiguo recibe un snapshot con el estado actual.
  • Test: otro usuario recibe 404 al conectarse al stream.
  • Test: con dos instancias de API, un cliente conectado a la instancia B recibe los eventos de un trabajo procesado mientras la A atiende la creación.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions