Saltar al contenido principal

RF53: Usuario reproduce video

Descripción

Como usuario autenticado con acceso al curso, quiero reproducir el video de una lección para consumir el contenido del curso.

El video se almacena en el bucket privado de S3 (Courses Database, SSE-S3). El backend valida el acceso y entrega una URL prefirmada de corta expiración (p. ej. 15 min) para el streaming; el contenido nunca es público (Cifrado §4.3).

CampoValor
MóduloCourses Module
ActorUsuario autenticado
EndpointGET /courses/:id/lessons/:lessonId/stream
PrecondicionesSesión activa; derecho de acceso al curso (RF52)
PrioridadMedia (MVP)
EtapaMBI 1
Requisitos relacionadosRF52, RF54, RF55, RF57

Reglas de negocio

  • RN-53.1 — El backend valida el derecho de acceso antes de emitir la URL prefirmada.
  • RN-53.2 — La URL prefirmada expira en minutos; el bucket bloquea todo acceso público.
  • RN-53.3 — Se registra el progreso de reproducción (posición/última lección vista).
  • RN-53.4 — Si el usuario pierde el acceso (p. ej. se degrada a Free en un curso premium), se deja de emitir URLs.

Validaciones de entrada

CampoReglasMensaje de error
id, lessonIdObligatorios. Existentes y del curso."Lección no encontrada." (404)
AuthorizationBearer válido."Sesión no válida." (401)

Criterios de aceptación

Escenario 1: Reproducción exitosa

Dado que tengo acceso al curso, Cuando abro una lección, Entonces el sistema valida el acceso y entrega una URL prefirmada, Y el video se reproduce, Y se registra mi progreso.

Escenario 2: Sin derecho de acceso

Dado que el curso es premium y ya no tengo plan premium, Cuando intento reproducir, Entonces el sistema responde 403 Forbidden y no entrega URL.

Escenario 3: Lección inexistente

Dado que la lección no existe en el curso, Cuando intento reproducir, Entonces el sistema responde 404 Not Found.

Escenario 4: Protección del contenido (seguridad)

Dado que se obtiene una URL prefirmada, Cuando expira, Entonces deja de dar acceso al archivo, Y el bucket nunca permite acceso público directo.

Criterios no funcionales

  • Inicio de reproducción < 3 s; streaming adaptable si aplica.
  • URL prefirmada con expiración corta; comunicación TLS 1.2+.

Diagrama de secuencia