Schema
| Campo | Tipo | Descrição |
|---|---|---|
channelIdentityId | UUIDv7 | Identificador único |
leadId | UUIDv7 | FK para Lead |
channel | enum | WHATSAPP, WEB, INSTAGRAM, EMAIL, VOICE, TELEGRAM, SMS |
channelIdentifier | string | Identificador específico do canal (telefone, email, cookie ID, etc.), max 255 |
metadata | JSON | Dados específicos do canal |
linkedAt | datetime | Quando esta identidade foi vinculada |
Banco de dados: Aurora PostgreSQL (via RDS Proxy). Vive junto com o Lead por ser consultado em joins frequentes durante a resolução de identidade.
Relacionamentos
- Belongs to Lead
Regras de Negócio
- Unique constraint em
(channel, channelIdentifier)— um identificador por canal pertence a um único lead - Usada para resolução de identidade: dado um canal + identificador, encontrar o lead
- Um lead pode ter múltiplas identidades em canais diferentes
- Um lead pode ter múltiplas identidades no mesmo canal (ex: dois números de telefone no WhatsApp)
Resolução de Identidade
A ChannelIdentity é a peça central do mecanismo de identity resolution do domínio Lead. O fluxo funciona assim:- Uma mensagem chega em um canal (ex: WhatsApp) com um identificador (ex:
+5511999887766) - O sistema busca na tabela ChannelIdentity por
(channel = WHATSAPP, channelIdentifier = +5511999887766) - Se encontrar, retorna o
leadIdassociado — a identidade está resolvida - Se não encontrar, cria um novo Lead e uma nova ChannelIdentity vinculada a ele