CRM & Database
O LipMKT utiliza Firestore como banco de dados NoSQL para armazenar todas as informações do CRM, incluindo conversas, mensagens, contatos, fluxos e métricas.
🗄️ Arquitetura do Banco de Dados
Estrutura Multi-Tenant
Todos os documentos incluem tenantId e companyId para isolamento de dados:
Tenant A (tenant_abc)
├── Company 1 (company_123)
│ ├── Conversas
│ ├── Mensagens
│ ├── Contatos
│ └── Agentes
└── Company 2 (company_456)
├── Conversas
└── ...
Tenant B (tenant_xyz)
└── Company 3 (company_789)
└── ...
📊 Coleções Principais
1. Conversations (Conversas)
Propósito: Armazenar conversas do WhatsApp.
Estrutura:
Índices:
companyId + status + lastMessageAt(desc)companyId + assignedAgentId + statuscompanyId + phoneNumbertenantId + createdAt(desc)
Exemplo de documento:
2. Messages (Mensagens)
Propósito: Armazenar mensagens individuais de cada conversa.
Estrutura:
Índices:
conversationId + timestamp(asc)companyId + timestamp(desc)senderId + timestamp(desc)
Exemplo de documento:
3. Contacts (Contatos)
Propósito: Armazenar informações de contatos/clientes.
Estrutura:
Índices:
companyId + phoneNumber(unique)companyId + emailcompanyId + tagscompanyId + lastConversationAt(desc)
4. Flows (Fluxos de Automação)
Propósito: Armazenar fluxos de chatbot.
Estrutura:
Exemplo de fluxo simples:
5. Agents (Agentes/Atendentes)
Propósito: Armazenar informações dos atendentes.
Estrutura:
6. Analytics (Métricas)
Propósito: Armazenar dados agregados para dashboards.
Estrutura:
7. Companies (Empresas)
Propósito: Armazenar configurações das empresas.
Estrutura:
🔄 Relacionamentos
Diagrama de Relacionamentos
Companies (1) ──────────── (N) Agents
│
│ (1)
│
├─────────────────────── (N) Conversations
│ │
│ │ (1)
│ │
│ └─── (N) Messages
│
└─────────────────────── (N) Contacts
│
│ (1)
│
└─── (N) Conversations
📝 Queries Comuns
1. Buscar conversas ativas de uma empresa
2. Buscar mensagens de uma conversa
3. Buscar conversas atribuídas a um agente
4. Buscar contato por telefone
5. Buscar métricas de um período
🔄 Operações em Tempo Real
Listener de Conversas
Listener de Mensagens
🔒 Security Rules
Regras de Segurança Firestore
📊 Otimizações
1. Índices Compostos
Criar índices para queries frequentes:
conversations: companyId ASC, status ASC, lastMessageAt DESC
conversations: companyId ASC, assignedAgentId ASC, status ASC
messages: conversationId ASC, timestamp ASC
contacts: companyId ASC, phoneNumber ASC
analytics: companyId ASC, date ASC
2. Paginação
3. Batch Operations
🔗 Próximos Passos
- API Reference - Endpoints da API
- Autenticação - Sistema de autenticação
- Firebase Integration - Configuração Firebase
Última atualização
26 de novembro de 2025