Appearance
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
| Momento | Destinatario | Descripción | Plantilla |
|---|---|---|---|
| Agenda: mérito o demérito | Padres del estudiante | Cuando 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 publicada | Padres del estudiante | Cuando 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)
| Momento | Destinatario | Descripción | Prioridad |
|---|---|---|---|
| Tarea asignada | Estudiante (y opcionalmente padres) | Cuando el profesor crea una tarea con fecha límite. Incluir título, clase y fecha. | Alta |
| Recordatorio entrega | Estudiante | Cron/job: tareas con due_date en las próximas 24–48 h. Solo si aún no hay entrega. | Media |
| Noticia aprobada | Autor de la noticia (opcional) | Avisar al creador cuando una noticia pasa a APPROVED (NewsApprovedEvent ya existe). | Baja |
| Anuncio de clase | Estudiantes de la clase | Cuando el profesor publica un anuncio en una clase. | Media |
| Pago registrado / recordatorio | Padre | Confirmación de pago o recordatorio de pendientes (si aplica). | Según negocio |
Configuración
- SES:
aws.ses.from-emaildebe estar configurado (remitente verificado en AWS SES). - Padres: Solo reciben correo si tienen email en la tabla
usersy están vinculados al estudiante enparent_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:,,,,,. ServicioAgendaEmailTemplateService. - Nota publicada:
templates/email/grade-posted.html. Placeholders:,,,. ServicioGradeEmailTemplateService.
Para nuevas plantillas (tarea asignada, etc.), seguir el mismo patrón: recurso HTML + servicio de plantilla + listener del evento correspondiente.