Capas del Backend, Provider Layer & Extensibilidad Futura
Esta especificación describe la separación entre el Núcleo de Dominio de Innovia y los adaptadores de mensajería externa, aplicando el patrón de puertos y adaptadores (Arquitectura Hexagonal).
Innovia es Sistema Maestro
Nuestra base de datos PostgreSQL mantiene el estado autoritativo de Tenants, Líneas, Campañas, Mensajes y Métricas. Kapso es el motor de despacho, no la fuente de verdad.
Regla Estricta de Desacople
Ningún identificador de Kapso (ej. kps_cust_912), estructura de datos propietaria ni endpoint se expone al Frontend ni a la API Pública.
Test de Sustitución Directa
Si mañana se incorpora Gupshup o Meta Cloud API directo, solo se implementa una nueva clase Adapter. El frontend y los clientes externos no requieren ningún cambio.
Mapa de Componentes del Sistema
Flujo de peticiones a través de las capas de seguridad, dominio, orquestación y proveedor
Capa de Abstracción: MessagingProvider Port
Define el contrato unificado sin atar a Innovia al SDK de Kapso
`createCustomer()`, `createSetupLink()`, `syncPhoneNumbers()`.
`syncTemplates(wabaId)` para sincronizar plantillas aprobadas por Meta.
`sendTemplateMessage(phoneId, payload)` con retorno de providerMessageId.
`createAndExecuteBroadcast()` y `normalizeWebhook()` a enums de Innovia.
Evolución Multi-Proveedor Sin Modificar el Modelo Central
Incorporar Gupshup o Meta Cloud API solo requiere una clase Adapter adicional