Banco de Dados e Documentação

Sistema de Disparo — AtomixMKT

Schema: public

Supabase: https://goyttlxigbtdferzoaxc.supabase.co

Este documento descreve o schema e o uso das tabelas no sistema. As contagens por tabela são ilustrativas; para totais atuais consulte o Supabase Dashboard (Table Editor).

← Voltar ao Painel

Documentação do Sistema

O que é

O Sistema de Disparo é um painel de controle para automação de prospecção via WhatsApp. Permite gerenciar campanhas, empresas, contatos, templates de mensagens e acompanhar envios e respostas em tempo (quase) real.

Objetivo

Centralizar a operação de disparos da AtomixMKT: em poucos segundos, o operador vê a saúde do sistema, o que vai disparar, onde há risco e qual a próxima ação. Suporta múltiplos clientes (multi-tenant) com campanhas, templates e configurações por cliente.

Fluxos n8n (automação)

O n8n orquestra os disparos. Os fluxos principais que leem/escrevem no Supabase:

Weekly Manager — Cria campanhas periodicamente (ex.: semanal). Lê empresas, contatos, configurações; insere/atualiza registros em campanhas.
Daily Dispatch — Processa a fila de envios. Lê campanhas com proximo_envio na janela; envia via Evolution API; grava em historico_envios; atualiza campanhas (quantidade_envios, proximo_envio, respondeu). Regra de horário comercial: os envios devem ocorrer apenas em dias e horários comerciais; a lógica que define o próximo proximo_envio (após cada envio) e o agendamento inicial (no Weekly Manager) deve ficar no n8n — ex.: próximo horário útil 9h–18h, timezone Brasil.
Response Control — Recebe webhooks de resposta do WhatsApp. Atualiza campanhas.respondeu e pode disparar ações adicionais.

Conexões externas

Modos de operação

TESTE (Allowlist ON) — Apenas números em lista permitida recebem mensagens. Usado para validar fluxos antes de produção.

PRODUÇÃO — Disparos ativos para toda a base. O painel oferece botão "Pausar Disparos" (kill switch) para emergências.

Arquivos do sistema

Resumo das Tabelas

Contagens variam conforme uso; consulte o Supabase (Table Editor) para totais atuais.

clientes_atomix

Clientes da AtomixMKT (multi-tenant)

RLS: Off

empresas

Empresas prospectadas

RLS: Off

contatos

Contatos nas empresas (status_contato: Aguardando, etc.)

RLS: Off

telefones

Telefones dos contatos

RLS: Off

campanhas

Campanhas (proximo_envio, quantidade_envios, respondeu)

RLS: Off

historico_envios

Auditoria de envios WhatsApp (data_envio, hora_envio em UTC)

RLS: Off

mensagens

Templates por variação (A–E) e sequência (M1–M5)

RLS: Off

configuracoes

Parâmetros globais ou por cliente (Evolution, n8n)

RLS: Off

catta_pendencias

Pendências CATTA (resolvido: true/false)

RLS: Off

Detalhes das Tabelas

clientes_atomix

Clientes da AtomixMKT que usam o sistema de prospecção

Coluna Tipo Constraints Notas
id uuid PKdefault uuid_generate_v4()
nome_cliente varchar
razao_social varchar nullable
cnpj varchar nullableunique
segmento_atuacao varchar nullable
contato_principal varchar nullable
email_contato varchar nullable
telefone_contato varchar nullable
status_cliente varchar nullabledefault: 'Ativo' Ativo, Inativo, Suspenso
plano varchar nullable Básico, Pro, Enterprise, Personalizado
data_inicio date nullabledefault: CURRENT_DATE
data_fim date nullable
observacoes text nullable
instagram varchar nullable
nota_perfil integer nullable check: 1-10
site varchar nullable
investe_trafego_pago boolean nullabledefault: false
plataformas_trafego array nullable
created_at timestamp nullabledefault: now()
updated_at timestamp nullabledefault: now()

empresas

Empresas prospectadas pelos clientes da AtomixMKT

Coluna Tipo Constraints Notas
id uuid PKdefault uuid_generate_v4()
cliente_atomix_id uuid FK → clientes_atomix.id A qual cliente AtomixMKT pertence este lead
nome_empresa varchar
cnpj varchar nullable
segmento varchar nullable
porte varchar nullable
cidade varchar nullable
estado varchar nullable
endereco text nullable
site varchar nullable
origem_lead varchar nullable
prioridade varchar nullabledefault: 'Média'
status_empresa varchar nullabledefault: 'Ativa'
tem_catta boolean nullabledefault: false
campanha_status varchar nullable
campanha_contato_atual_id uuid nullableFK → contatos.id
campanha_tentativa integer nullabledefault: 0
created_at / updated_at timestamp nullabledefault: now()

contatos

Contatos nas empresas. Coluna de status pode ser status ou status_contato (Aguardando, Em Campanha, Respondeu, etc.).

Coluna Tipo Constraints Notas
id uuid PKdefault uuid_generate_v4()
cliente_atomix_id uuid FK → clientes_atomix.id
empresa_id uuid nullableFK → empresas.id
nome_completo varchar
cargo varchar nullable
nivel_decisao varchar nullable Decisor, Influenciador, Usuário
email_principal varchar nullable
status varchar nullabledefault: 'Aguardando' Aguardando, Em Campanha, Respondeu, Agendado, Cliente, Inativo
linkedin varchar nullable
cpf char(11) nullable check: 11 dígitos
participacao_percentual numeric nullable check: 0-100
apto_campanha boolean nullabledefault: true
tem_catta boolean nullabledefault: false

telefones

Telefones dos contatos (múltiplos por contato)

Coluna Tipo Constraints Notas
id uuid PKdefault uuid_generate_v4()
cliente_atomix_id uuid FK → clientes_atomix.id
contato_id uuid FK → contatos.id
telefone varchar
tipo varchar nullable
principal boolean nullabledefault: false
whatsapp boolean nullabledefault: true
status_telefone varchar nullabledefault: 'Ativo'

campanhas

Campanhas de prospecção. proximo_envio define quando o Daily Dispatch envia; updated_at usado para “respostas hoje”.

Coluna Tipo Constraints Notas
id uuid PKdefault uuid_generate_v4()
cliente_atomix_id uuid FK → clientes_atomix.id
contato_id uuid FK → contatos.id
telefone_id uuid nullableFK → telefones.id
variacao_mensagem char nullable A–E (variação da mensagem)
status_campanha varchar nullabledefault: 'Ativa' Ativa, etc.
proximo_envio timestamp nullable
quantidade_envios integer nullabledefault: 0
respondeu boolean nullabledefault: false
agendou boolean nullabledefault: false
fechou_venda boolean nullabledefault: false
valor_venda numeric nullable
updated_at timestamptz nullabledefault: now() Usado para filtrar “respostas hoje” no painel

mensagens

Templates por variação (A–E) e sequência (M1–M5). cliente_atomix_id NULL = global.

Coluna Tipo Constraints Notas
id uuid PKdefault uuid_generate_v4()
cliente_atomix_id uuid nullableFK → clientes_atomix.id NULL = mensagem compartilhada para todos
nome_mensagem varchar
variacao char nullable A–E
numero_sequencia integer nullable 1–5 (M1–M5)
texto text
ativa boolean nullabledefault: true
compartilhada boolean nullabledefault: false TRUE = template AtomixMKT

configuracoes

Configurações do sistema - global ou por cliente

Coluna Tipo Constraints Notas
id uuid PKdefault uuid_generate_v4()
cliente_atomix_id uuid nullableFK → clientes_atomix.id NULL = configuração global
parametro varchar
valor text
tipo varchar nullable
descricao text nullable
categoria varchar nullable

segmentos

Segmentos para sequências de mensagens (ex.: B2B, E-commerce). Usado em Modelos ao criar/duplicar. Cadastro em Configurações.

Coluna Tipo Constraints Notas
id uuid PKdefault gen_random_uuid()
nome varchar(255) UNIQUE Nome do segmento (ex.: B2B)
ativo boolean default: true
created_at timestamptz default: now()

historico_envios

Auditoria de envios WhatsApp. data_envio e hora_envio gravados em UTC pelo n8n; o painel converte para horário local.

Coluna Tipo Constraints Notas
id uuid PKdefault uuid_generate_v4()
cliente_atomix_id uuid nullableFK → clientes_atomix.id Escopo do envio (filtro no painel)
campanha_id uuid FK → campanhas.id
data_envio date nullabledefault: CURRENT_DATE Geralmente em UTC no servidor
hora_envio time nullabledefault: CURRENT_TIME Geralmente em UTC no servidor
numero_sequencia integer nullable
texto_enviado text nullable
status_envio varchar nullabledefault: 'Pendente' Ex.: Enviado, Erro (texto livre; painel classifica n8n/BD)
id_evolution varchar nullable

catta_pendencias

Pendências do sistema CATTA

Coluna Tipo Constraints Notas
id uuid PKdefault gen_random_uuid()
cliente_atomix_id uuid FK → clientes_atomix.id
empresa_id uuid FK → empresas.id
tipo text
severidade text default: 'WARN'
mensagem text
payload jsonb nullable
resolvido boolean default: false

Relacionamentos (Foreign Keys)

clientes_atomix (tabela central)
empresas.cliente_atomix_id
contatos.cliente_atomix_id
telefones.cliente_atomix_id
campanhas.cliente_atomix_id
historico_envios.cliente_atomix_id
mensagens.cliente_atomix_id
configuracoes.cliente_atomix_id
empresas
contatos.empresa_id
empresas.campanha_contato_atual_id → contatos.id
contatos
telefones.contato_id
campanhas.contato_id
telefones
campanhas.telefone_id
campanhas
historico_envios.campanha_id