Saltar al contenido principal

RF47: Usuario consulta cursos disponibles

Descripción

Como usuario autenticado, quiero ver el catálogo de cursos de educación financiera disponibles para elegir qué aprender.

El Courses Module lee los metadatos de los cursos desde Finnova DB; el contenido de video vive en el bucket privado de S3 (Courses Database) y solo se entrega vía URLs prefirmadas al reproducir (RF53).

CampoValor
MóduloCourses Module
ActorUsuario autenticado
EndpointGET /courses
PrecondicionesSesión activa
PrioridadMedia (MVP)
EtapaMBI 1
Requisitos relacionadosRF48, RF50, RF52

Reglas de negocio

  • RN-47.1 — Se listan solo cursos publicados (no borradores).
  • RN-47.2 — Cada curso muestra título, descripción corta, categoría, nivel, duración, miniatura y si requiere plan premium.
  • RN-47.3 — La lista se pagina; se puede ordenar por popularidad/novedad.
  • RN-47.4 — Las miniaturas se sirven por URL prefirmada o CDN; el contenido de video no se expone aquí.

Validaciones de entrada

CampoReglasMensaje de error
page/pageSize (query, opcional)Enteros dentro de rango."Parámetros de paginación no válidos." (400)
AuthorizationBearer válido."Sesión no válida." (401)

Criterios de aceptación

Escenario 1: Consulta de catálogo exitosa

Dado que hay cursos publicados, Cuando abro la sección de cursos, Entonces el sistema lista los cursos publicados paginados, Y responde 200 OK.

Escenario 2: Catálogo vacío

Dado que no hay cursos publicados, Cuando abro la sección, Entonces se muestra un estado vacío.

Dado que hay cursos solo para premium y estoy en Free, Cuando veo el catálogo, Entonces esos cursos aparecen marcados como premium (acceso se valida en RF52).

Criterios no funcionales

  • Respuesta < 1.5 s con paginación.
  • El contenido de video no se expone en la consulta del catálogo.
  • Comunicación TLS 1.2+.

Diagrama de secuencia