RF54: Usuario adelanta video
Descripción
Como usuario reproduciendo una lección, quiero adelantar el video (saltar hacia adelante) para avanzar a la parte que me interesa.
Es principalmente una interacción del reproductor (control de seek) que ocurre en el cliente sobre el stream ya autorizado (RF53); la posición se persiste periódicamente para conservar el progreso entre dispositivos.
| Campo | Valor |
|---|---|
| Módulo | Courses Module (cliente de reproducción + persistencia de progreso) |
| Actor | Usuario autenticado |
| Endpoint | PATCH /courses/:id/lessons/:lessonId/progress ({ positionSeconds }) |
| Precondiciones | Lección en reproducción con acceso válido |
| Prioridad | Baja (MVP) |
| Etapa | MBI 1 |
| Requisitos relacionados | RF53, RF55 |
Reglas de negocio
- RN-54.1 — El
seekadelante ocurre en el reproductor; no requiere volver a pedir la URL salvo que haya expirado. - RN-54.2 — La posición no puede exceder la duración de la lección.
- RN-54.3 — El progreso se guarda con throttling (no en cada segundo) para no saturar el backend.
- RN-54.4 — Si la URL prefirmada expiró, se solicita una nueva (RF53) de forma transparente.
Validaciones de entrada
| Campo | Reglas | Mensaje de error |
|---|---|---|
positionSeconds | Numérico ≥ 0 y ≤ duración. | "Posición de reproducción no válida." |
Authorization | Bearer válido. | "Sesión no válida." (401) |
Criterios de aceptación
Escenario 1: Adelantar exitoso
Dado que estoy reproduciendo una lección, Cuando adelanto a una posición válida, Entonces el reproductor salta a esa posición, Y la nueva posición se guarda como progreso.
Escenario 2: Adelantar más allá del final
Dado que intento adelantar más allá de la duración, Cuando lo hago, Entonces la posición se limita al final de la lección.
Escenario 3: URL expirada durante la sesión
Dado que la URL prefirmada expiró mientras veía el video, Cuando adelanto, Entonces el sistema solicita una nueva URL (RF53) y continúa sin interrumpir.
Criterios no funcionales
- El guardado de progreso usa throttling; respuesta < 300 ms.
- Comunicación TLS 1.2+.