Skip to content

Notificaciones por correo — Intranet Despertares

Documento de referencia: dónde se envían (o se recomienda enviar) notificaciones por email en el backend, para un uso tipo Blackboard con alta carga.


Implementado

MomentoDestinatarioDescripciónPlantilla
Agenda: mérito o deméritoPadres del estudianteCuando el profesor crea o actualiza una anotación de agenda (mérito/demérito), se envía un correo a cada padre vinculado al estudiante.HTML: templates/email/agenda-merit-demerit.html
Nota publicadaPadres del estudianteCuando el profesor registra o actualiza una nota, se envía un correo a cada padre vinculado al estudiante (curso, tipo de evaluación, valor).HTML: templates/email/grade-posted.html

El envío se dispara por eventos (AgendaEntryCreatedEvent, GradePostedEvent) y se ejecuta de forma asíncrona (@Async) para no bloquear la respuesta al profesor.

Diseño (Clean Code / SOLID): El listener (DomainEventListeners) solo delega en AgendaEntryNotificationService.notifyParents(event) (SRP). El servicio resuelve destinatarios, construye asunto y cuerpo (plantilla HTML + texto plano) y envía un correo por cada padre; un fallo en un envío no detiene el resto (try/catch por destinatario). Interfaces AgendaEntryNotificationService y AgendaEmailTemplateService permiten tests y futuras variantes (DIP).


Recomendado implementar (nivel Blackboard / uso pesado)

MomentoDestinatarioDescripciónPrioridad
Tarea asignadaEstudiante (y opcionalmente padres)Cuando el profesor crea una tarea con fecha límite. Incluir título, clase y fecha.Alta
Recordatorio entregaEstudianteCron/job: tareas con due_date en las próximas 24–48 h. Solo si aún no hay entrega.Media
Noticia aprobadaAutor de la noticia (opcional)Avisar al creador cuando una noticia pasa a APPROVED (NewsApprovedEvent ya existe).Baja
Anuncio de claseEstudiantes de la claseCuando el profesor publica un anuncio en una clase.Media
Pago registrado / recordatorioPadreConfirmación de pago o recordatorio de pendientes (si aplica).Según negocio

Configuración

  • SES: aws.ses.from-email debe estar configurado (remitente verificado en AWS SES).
  • Padres: Solo reciben correo si tienen email en la tabla users y están vinculados al estudiante en parent_students.
  • Errores: Si el envío falla (SES, red), se registra en log; la operación del usuario (ej. guardar mérito/demérito) no se revierte.

Plantillas

  • Agenda mérito/demérito: templates/email/agenda-merit-demerit.html. Placeholders: , , , , , . Servicio AgendaEmailTemplateService.
  • Nota publicada: templates/email/grade-posted.html. Placeholders: , , , . Servicio GradeEmailTemplateService.

Para nuevas plantillas (tarea asignada, etc.), seguir el mismo patrón: recurso HTML + servicio de plantilla + listener del evento correspondiente.