Modelo de dados
Os objetos do Ailove CRM, seus campos e como se relacionam. Gerado direto do código.
Esta página é gerada a partir do esquema do banco a cada versão publicada, então sempre corresponde ao sistema no ar. Objetos marcados com 🔒 têm isolamento por empresa: o próprio banco de dados só devolve as linhas da empresa de quem está consultando.
Empresa 🔒
Cada cliente do Ailove CRM. Tudo o que pertence a uma empresa fica isolado das demais.
Tabela: organizacoes
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | uuid | sim | Identificador. |
nome | text | sim | Nome para exibição. |
slug | text | sim | Identificador curto e único, usado em endereços. |
fuso | text | sim | Fuso horário da empresa; toda data é mostrada nele. |
plano | text | sim | Plano contratado. |
criado_em | timestamp with time zone | sim | Quando foi criado. |
Usuário
Pessoa que entra no sistema. Pode participar de mais de uma empresa.
Tabela: usuarios
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | uuid | sim | Identificador. |
email | text | sim | E-mail (único, sem diferenciar maiúsculas). |
nome | text | sim | Nome para exibição. |
senha_hash | text | não | Senha guardada só como hash (bcrypt); nunca é exposta. |
ativo | boolean | sim | Usuário desativado não entra. |
dono_plataforma | boolean | sim | Uso interno da Ailove. |
ultimo_login_em | timestamp with time zone | não | Último acesso. |
criado_em | timestamp with time zone | sim | Quando foi criado. |
atualizado_em | timestamp with time zone | sim | Última alteração. |
Membro 🔒
Liga um usuário a uma empresa, com o papel dele nela (administrador ou usuário).
Tabela: membros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
organizacao_id | uuid | sim | Empresa dona do registro. → organizacoes |
usuario_id | uuid | sim | Usuário. → usuarios |
papel | text | sim | admin (gerencia a empresa) ou usuario. |
criado_em | timestamp with time zone | sim | Quando foi criado. |
Empresa (cliente) 🔒
Empresa com quem você se relaciona (cliente ou cliente em potencial). Deduplicada pelo domínio.
Tabela: empresas
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | uuid | sim | Identificador. |
organizacao_id | uuid | sim | Empresa dona do registro. → organizacoes |
nome | text | sim | Nome para exibição. |
dominio | text | não | Domínio do site/e-mail; não se repete dentro da sua conta. |
telefone | text | não | Telefone. |
cidade | text | não | Cidade. |
uf | text | não | Estado (UF). |
responsavel_id | uuid | não | Usuário responsável → usuarios. → usuarios |
origem | text | sim | De onde veio: manual, planilha, prospeccao, formulario, api, resposta. |
origem_detalhe | jsonb | não | Detalhe da origem (ex.: nome do arquivo importado). |
campos | jsonb | sim | Valores dos campos personalizados. |
criado_por | uuid | não | Quem criou. → usuarios |
criado_em | timestamp with time zone | sim | Quando foi criado. |
atualizado_em | timestamp with time zone | sim | Última alteração. |
arquivado_em | timestamp with time zone | não | Arquivada (não aparece nas listas). |
Contato 🔒
Pessoa com quem você fala. Pode pertencer a uma empresa. Deduplicado pelo e-mail.
Tabela: contatos
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | uuid | sim | Identificador. |
organizacao_id | uuid | sim | Empresa dona do registro. → organizacoes |
empresa_id | uuid | não | Empresa da pessoa. → empresas |
nome | text | sim | Nome para exibição. |
email | text | não | E-mail (único, sem diferenciar maiúsculas). |
telefone | text | não | Telefone. |
cargo | text | não | Cargo. |
responsavel_id | uuid | não | Usuário responsável. → usuarios |
origem | text | sim | De onde veio (ver Empresa). |
origem_detalhe | jsonb | não | Detalhe da origem. |
campos | jsonb | sim | Valores dos campos personalizados. |
criado_por | uuid | não | Quem criou. → usuarios |
criado_em | timestamp with time zone | sim | Quando foi criado. |
atualizado_em | timestamp with time zone | sim | Última alteração. |
arquivado_em | timestamp with time zone | não | Arquivado. |
Campo personalizado 🔒
Campo criado pela sua empresa para contatos, empresas ou negócios.
Tabela: campos_personalizados
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | uuid | sim | Identificador. |
organizacao_id | uuid | sim | Empresa dona do registro. → organizacoes |
entidade | text | sim | contato, empresa ou negocio. |
nome | text | sim | Nome para exibição. |
tipo | text | sim | texto, numero, data ou lista. |
opcoes | text[] | não | Opções, quando o tipo é lista. |
ordem | integer | sim | Ordem de exibição. |
criado_em | timestamp with time zone | sim | Quando foi criado. |
arquivado_em | timestamp with time zone | não | Arquivado. |
Funil 🔒
Um processo de vendas (ex.: Vendas, Renovação). A empresa pode ter vários.
Tabela: funis
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | uuid | sim | Identificador. |
organizacao_id | uuid | sim | Empresa dona do registro. → organizacoes |
nome | text | sim | Nome para exibição. |
ordem | integer | sim | Ordem entre os funis. |
campos_no_card | uuid[] | sim | Até 3 campos personalizados mostrados no card do negócio. |
criado_em | timestamp with time zone | sim | Quando foi criado. |
arquivado_em | timestamp with time zone | não | Arquivado. |
Etapa 🔒
Uma coluna do funil.
Tabela: etapas
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | uuid | sim | Identificador. |
organizacao_id | uuid | sim | Empresa dona do registro. → organizacoes |
funil_id | uuid | sim | Funil. → funis |
nome | text | sim | Nome para exibição. |
ordem | integer | sim | Posição no funil. |
tipo | text | sim | aberta, ganho ou perdido (as duas últimas encerram o negócio). |
arquivado_em | timestamp with time zone | não | Arquivada. |
Motivo de perda 🔒
Lista configurável de motivos para marcar um negócio como perdido.
Tabela: motivos_perda
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | uuid | sim | Identificador. |
organizacao_id | uuid | sim | Empresa dona do registro. → organizacoes |
nome | text | sim | Nome para exibição. |
ordem | integer | sim | Ordem na lista. |
arquivado_em | timestamp with time zone | não | Arquivado. |
Negócio 🔒
Uma oportunidade de venda, que anda pelas etapas de um funil.
Tabela: negocios
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | uuid | sim | Identificador. |
organizacao_id | uuid | sim | Empresa dona do registro. → organizacoes |
funil_id | uuid | sim | Funil. → funis |
etapa_id | uuid | sim | Etapa atual. → etapas |
titulo | text | sim | Título. |
contato_id | uuid | não | Contato principal. → contatos |
empresa_id | uuid | não | Empresa. → empresas |
valor | numeric(14, 2) | não | Valor em reais. |
previsao | date | não | Previsão de fechamento. |
responsavel_id | uuid | não | Usuário responsável. → usuarios |
posicao | double precision | sim | Ordem dentro da etapa. |
motivo_perda_id | uuid | não | Motivo, quando perdido. → motivos_perda |
motivo_perda_texto | text | não | Detalhe do motivo. |
encerrado_em | timestamp with time zone | não | Quando foi ganho ou perdido. |
origem | text | sim | De onde veio. |
criado_pela_ia | boolean | sim | Criado pela Prospecção Automática. |
conferido_em | timestamp with time zone | não | Quando alguém conferiu o negócio criado pela IA. |
campos | jsonb | sim | Valores dos campos personalizados. |
criado_por | uuid | não | Quem criou. → usuarios |
criado_em | timestamp with time zone | sim | Quando foi criado. |
atualizado_em | timestamp with time zone | sim | Última alteração. |
arquivado_em | timestamp with time zone | não | Arquivado. |
Tarefa 🔒
Algo a fazer: ligar, reunião, e-mail ou tarefa, com data e responsável.
Tabela: tarefas
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | uuid | sim | Identificador. |
organizacao_id | uuid | sim | Empresa dona do registro. → organizacoes |
tipo | text | sim | tarefa, ligar, reuniao ou email. |
titulo | text | sim | O que fazer. |
vence_em | timestamp with time zone | não | Quando vence. |
dia_inteiro | boolean | sim | Vale o dia todo (sem horário). |
responsavel_id | uuid | não | Quem faz. → usuarios |
contato_id | uuid | não | Contato relacionado. → contatos |
empresa_id | uuid | não | Empresa relacionada. → empresas |
negocio_id | uuid | não | Negócio relacionado. → negocios |
concluida_em | timestamp with time zone | não | Quando foi concluída. |
nota_conclusao | text | não | Anotação ao concluir. |
criado_por | uuid | não | Quem criou. → usuarios |
criado_em | timestamp with time zone | sim | Quando foi criado. |
atualizado_em | timestamp with time zone | sim | Última alteração. |
Anotação 🔒
Texto livre registrado num contato, empresa ou negócio.
Tabela: anotacoes
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | uuid | sim | Identificador. |
organizacao_id | uuid | sim | Empresa dona do registro. → organizacoes |
texto | text | sim | Conteúdo. |
contato_id | uuid | não | Contato. → contatos |
empresa_id | uuid | não | Empresa. → empresas |
negocio_id | uuid | não | Negócio. → negocios |
autor_id | uuid | não | Quem escreveu. → usuarios |
criado_em | timestamp with time zone | sim | Quando foi criado. |
editado_em | timestamp with time zone | não | Última edição. |
Evento da linha do tempo 🔒
Tudo o que acontece com um contato, empresa ou negócio. Só cresce.
Tabela: eventos
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | uuid | sim | Identificador. |
organizacao_id | uuid | sim | Empresa dona do registro. → organizacoes |
tipo | text | sim | Tipo do evento (ex.: negocio.etapa). |
contato_id | uuid | não | Contato. → contatos |
empresa_id | uuid | não | Empresa. → empresas |
negocio_id | uuid | não | Negócio. → negocios |
autor_id | uuid | não | Quem fez (vazio = sistema). → usuarios |
autor_tipo | text | sim | usuario, ia ou sistema. |
dados | jsonb | sim | Detalhes do evento. |
em | timestamp with time zone | sim | Quando. |
Conexão 🔒
Um serviço externo ligado pela empresa (ex.: a caixa de e-mail). Credenciais ficam cifradas e nunca são devolvidas.
Tabela: conexoes
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | uuid | sim | Identificador. |
organizacao_id | uuid | sim | Empresa dona do registro. → organizacoes |
conector | text | sim | Qual integração (ex.: email_proprio, gmail). |
conta | text | sim | Conta conectada, normalmente o e-mail. |
config | jsonb | sim | Configuração não secreta: servidores, portas, provedor. |
credencial_cifrada | text | sim | Senha ou token, cifrado (AES-256-GCM) e amarrado à empresa. Nunca exposto. |
estado | text | sim | conectado, atencao ou desconectado. |
verificacao | jsonb | não | Resultado da última verificação (login, envio, domínio). |
ultimo_teste_em | timestamp with time zone | não | Quando foi verificada pela última vez. |
ultimo_erro | text | não | Último problema encontrado, em português. |
criado_por | uuid | não | Quem conectou. → usuarios |
criado_em | timestamp with time zone | sim | Quando foi criado. |
atualizado_em | timestamp with time zone | sim | Última alteração. |
Registro de auditoria 🔒
Histórico de ações sensíveis (conectar, desconectar, trocar credencial…). Só cresce.
Tabela: auditoria
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | uuid | sim | Identificador. |
organizacao_id | uuid | sim | Empresa dona do registro. → organizacoes |
usuario_id | uuid | não | Quem fez. → usuarios |
acao | text | sim | O que foi feito. |
alvo | text | não | Em quê. |
detalhes | jsonb | não | Contexto, sem segredos. |
em | timestamp with time zone | sim | Quando. |