Notifications (Alertas y Canales)
El módulo de Notifications gestiona la comunicación directa con el asegurado y los vendedores. Se encarga de enviar certificados, recordatorios de pago y alertas de seguridad a través de múltiples canales integrados.
Key Features
Section titled “Key Features”- Email Engine: Envío masivo de pólizas en PDF y comunicaciones transaccionales (AWS SES o SendGrid).
- WhatsApp API Integration: Notificaciones interactivas para confirmación de pago y recordatorios de mora.
- Gestión de Plantillas: Sistema centralizado de templates para mantener la consistencia de marca.
- Retry Policy: Lógica de reintento integrada para asegurar la entrega de mensajes críticos.
Deep Dive Técnico
Section titled “Deep Dive Técnico”Integración de Canales
Section titled “Integración de Canales”El servicio de notificaciones actúa como una fachada (Facade) que orquesta múltiples proveedores:
- EmailService:
- Adjunta dinámicamente el certificado PDF generado por el módulo de Emission.
- Utiliza plantillas HTML responsivas.
- WhatsAppService:
- Envía mensajes de texto y documentos a través de proveedores externos.
- Enfocado en mensajes de alta urgencia (Mora, Emisión Exitosa).
Orquestación de Eventos
Section titled “Orquestación de Eventos”Las notificaciones no se invocan de forma aislada, sino que responden a eventos de negocio:
on_policy_issued: Dispara el envío del PDF por ambos canales.on_payment_failed: Lógica condicional: Email en el primer fallo, WhatsApp se añade en el segundo.
Ejemplo Práctico: Orquestador de Alertas
Section titled “Ejemplo Práctico: Orquestador de Alertas”El siguiente código muestra cómo se distribuyen las notificaciones según el evento de negocio:
class NotificationsService: """ Servicio unificado para la gestión de notificaciones omnicanal. """ async def on_policy_issued(self, policy, client, pdf_bytes: bytes) -> None: """ Notificación inmediata de nueva póliza emitida. Envía Email con PDF adjunto y mensaje de bienvenida por WhatsApp. """ # Envío asíncrono por Email await self.email.send_policy_confirmation(policy, client, pdf_bytes)
# Envío asíncrono por WhatsApp await self.whatsapp.send_policy_confirmation_wa(policy, client)
async def on_payment_failed(self, policy, client, attempt: int) -> None: """ Lógica de escalonamiento de recordatorios de pago. """ # Siempre se envía un Email de aviso de fallo await self.email.send_payment_failed(policy, client, attempt)
# WhatsApp solo se activa a partir del segundo intento fallido (urgencia alta) if attempt >= 2: await self.whatsapp.send_payment_reminder_wa(policy, client)Diagrama de Proceso
Section titled “Diagrama de Proceso”
Canales Disponibles
Section titled “Canales Disponibles”| Canal | Propósito | Formato |
|---|---|---|
| Comunicación formal, envío de adjuntos, soporte. | HTML / PDF | |
| Recordatorios rápidos, confirmación instantánea. | Texto / Documentos | |
| Push (Planes) | Notificaciones en app móvil (en roadmap). | Texto / Acción |