Saltar al contenido principal

RF59: Sistema genera certificado de finalización de curso

Descripción

El sistema genera un certificado de finalización (PDF) cuando un usuario completa un curso (RF57), con un folio verificable, y lo deja disponible para el usuario (RF58).

El PDF se almacena en S3 privado (SSE-S3) y se entrega solo por URL prefirmada. La generación es asíncrona y se dispara por la finalización del curso.

CampoValor
MóduloCourses Module
ActorSistema (worker de generación)
EndpointInterno: worker disparado por finalización (RF57)
PrecondicionesEl usuario finalizó el curso cumpliendo las condiciones
PrioridadBaja (post-MVP)
EtapaMBI 1
Requisitos relacionadosRF57, RF58

Reglas de negocio

  • RN-59.1 — Se genera un único certificado por (usuario, curso); reintentos no duplican (idempotente por folio).
  • RN-59.2 — El certificado incluye nombre del usuario, título del curso, fecha de finalización y un folio único verificable.
  • RN-59.3 — El PDF se guarda en S3 privado; nunca público.
  • RN-59.4 — Al generarse, se notifica al usuario (push/email) que su certificado está disponible.
  • RN-59.5 — El folio permite verificar la autenticidad del certificado (endpoint de verificación).

Validaciones / consideraciones

AspectoRegla
DisparadorEvento de finalización (RF57).
IdempotenciaUn certificado por usuario/curso.
DatosNombre real del usuario tomado de su perfil.

Criterios de aceptación

Escenario 1: Generación exitosa

Dado que un usuario finalizó un curso, Cuando se dispara la generación, Entonces el sistema crea el PDF con folio único, Y lo guarda en S3 privado, Y notifica al usuario que está disponible (RF58).

Escenario 2: Reintento sin duplicar (idempotencia)

Dado que ya existe un certificado para ese usuario y curso, Cuando se vuelve a disparar la generación, Entonces el sistema no crea un duplicado.

Escenario 3: Fallo en la generación

Dado que la generación del PDF falla, Cuando ocurre el error, Entonces el sistema lo registra y reintenta más tarde, Y no marca el certificado como disponible hasta lograrlo.

Escenario 4: Verificación de autenticidad

Dado que alguien tiene el folio de un certificado, Cuando lo verifica, Entonces el sistema confirma su validez sin exponer datos personales innecesarios.

Criterios no funcionales

  • Generación asíncrona; PDF en S3 privado con SSE-S3.
  • Comunicación TLS 1.2+.

Diagrama de secuencia