Schema do Banco de Dados
PostgreSQL 17 via Supabase. Todas as tabelas (exceto nucleos, planos e tabelas nacionais) possuem nucleo_id para multi-tenancy. RLS ativo em todas as tabelas; o NestJS usa service_role key que bypassa RLS.
Enums
| Enum | Valores |
|---|
cargo | MEMBRO, LIDER_PROJETO, PORTA_VOZ, COORDENADOR, ADMINISTRADOR, SUPER_ADMIN |
status_usuario | PENDENTE, ATIVO, INATIVO, SUSPENSO, REJEITADO |
status_projeto | PLANEJAMENTO, EM_ANDAMENTO, CONCLUIDO, CANCELADO |
dificuldade | FACIL, MEDIA, DIFICIL |
status_tarefa | PENDENTE, EM_ANDAMENTO, AGUARDANDO_VALIDACAO, APROVADA, REJEITADA |
tipo_evento | PRESENCIAL, ONLINE, HIBRIDO |
status_evento | AGENDADO, EM_ANDAMENTO, ENCERRADO, CANCELADO |
status_checkin | PRESENTE, AUSENTE, JUSTIFICADO |
tipo_transacao | CREDITO, DEBITO |
origem_transacao | EVENTO, TAREFA, LOJA, PLANO, MANUAL, REFERRAL, ESTORNO |
categoria_loja | CAMISETA, ADESIVO, CANECA, BONE, OUTRO |
status_pedido | AGUARDANDO_PAGAMENTO, PENDENTE, SEPARADO, ENTREGUE, CANCELADO |
tipo_lancamento | RECEITA, DESPESA |
categoria_financeiro | EVENTO, MATERIAL, DOACAO, MENSALIDADE, OUTRO |
tipo_escolha | UNICA, MULTIPLA |
visibilidade | PUBLICA, PRIVADA |
status_pagamento | PENDENTE, CONFIRMADO, ATRASADO, CANCELADO, ESTORNADO |
metodo_pagamento | PIX, CARTAO_CREDITO, CARTAO_DEBITO, BOLETO |
Core
nucleos
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador do nucleo/tenant |
nome | text | Nome do nucleo (ex: MBL-ES) |
slug | text UNIQUE | Slug unico para URL |
descricao | text | Descricao do nucleo |
logo_url | text | URL do logo |
asaas_api_key | text | API key do Asaas (criptografada) |
asaas_wallet_id | text | Wallet ID do Asaas |
ativo | boolean | Nucleo ativo (default true) |
criado_em | timestamptz | Data de criacao |
atualizado_em | timestamptz | Data da ultima atualizacao |
usuarios
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Mesmo UUID do auth.users |
nucleo_id | uuid FK | FK para nucleos (nullable para Super Admin nacional) |
nome | text | Nome completo |
email | text UNIQUE | Email do usuario |
telefone | text | Telefone |
cpf | text | CPF |
endereco | text | Endereco completo |
foto_url | text | URL da foto de perfil |
cargo | cargo | Enum de cargo |
status | status_usuario | Status do usuario |
plano_id | uuid FK | FK para planos |
saldo_capixacoins | integer | Cache do saldo (atualizado por trigger) |
referral_code | text UNIQUE | Codigo de indicacao (gerado por trigger) |
referido_por | uuid FK | FK para usuarios (quem indicou) |
asaas_customer_id | text | ID do cliente no Asaas |
data_nascimento | date | Data de nascimento |
bio | text | Biografia |
criado_em | timestamptz | Data de criacao |
atualizado_em | timestamptz | Data da ultima atualizacao (trigger) |
planos
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador do plano |
nome | text | Nome (Free, Apoiador, Militante, Onca) |
slug | text UNIQUE | Slug unico |
preco | numeric | Preco mensal em R$ |
beneficios | jsonb | Array de beneficios do plano |
ativo | boolean | Plano ativo |
criado_em | timestamptz | Data de criacao |
assinaturas
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador da assinatura |
nucleo_id | uuid FK | FK para nucleos |
usuario_id | uuid FK | FK para usuarios |
plano_id | uuid FK | FK para planos |
pagamento_id | uuid FK | FK para pagamentos |
asaas_subscription_id | text | ID da assinatura no Asaas |
status | status_pagamento | Status da assinatura |
inicio | timestamptz | Data de inicio |
fim | timestamptz | Data de fim (nullable) |
criado_em | timestamptz | Data de criacao |
Projetos
projetos
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador do projeto |
nucleo_id | uuid FK | FK para nucleos |
nome | text | Nome do projeto |
descricao | text | Descricao do projeto |
status | status_projeto | Status do projeto |
data_inicio | date | Data de inicio |
data_fim | date | Data prevista de fim |
criado_por | uuid FK | FK para usuarios (criador) |
criado_em | timestamptz | Data de criacao |
atualizado_em | timestamptz | Data da ultima atualizacao |
projeto_membros
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
projeto_id | uuid FK | FK para projetos |
usuario_id | uuid FK | FK para usuarios |
papel | text | Papel no projeto (lider, membro) |
criado_em | timestamptz | Data de entrada |
tarefas
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador da tarefa |
nucleo_id | uuid FK | FK para nucleos |
projeto_id | uuid FK (nullable) | FK para projetos (null = tarefa avulsa) |
titulo | text | Titulo da tarefa |
descricao | text | Descricao detalhada |
status | status_tarefa | Status atual |
dificuldade | dificuldade (nullable) | Dificuldade (default MEDIA, opcional) |
recompensa_cc | integer | Recompensa em Capixacoins |
responsavel_id | uuid FK (nullable) | FK para usuarios (quem esta executando) |
criado_por | uuid FK | FK para usuarios (criador) |
data_limite | timestamptz | Prazo da tarefa |
criado_em | timestamptz | Data de criacao |
atualizado_em | timestamptz | Data da ultima atualizacao |
tarefa_candidaturas
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
tarefa_id | uuid FK | FK para tarefas |
usuario_id | uuid FK | FK para usuarios (candidato) |
mensagem | text | Mensagem do candidato |
criado_em | timestamptz | Data da candidatura |
projeto_comentarios
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
projeto_id | uuid FK | FK para projetos |
usuario_id | uuid FK | FK para usuarios (autor) |
conteudo | text | Texto do comentario |
criado_em | timestamptz | Data do comentario |
Eventos
eventos
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador do evento |
nucleo_id | uuid FK | FK para nucleos |
titulo | text | Titulo do evento |
descricao | text | Descricao |
tipo | tipo_evento | PRESENCIAL, ONLINE, HIBRIDO |
status | status_evento | Status do evento |
data_inicio | timestamptz | Data e hora de inicio |
data_fim | timestamptz | Data e hora de fim |
local | text | Local do evento |
link | text | Link para evento online |
recompensa_cc | integer | Capixacoins por presenca |
foto_url | text | Imagem do evento |
criado_por | uuid FK | FK para usuarios (criador) |
criado_em | timestamptz | Data de criacao |
atualizado_em | timestamptz | Data da ultima atualizacao |
evento_presencas
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
evento_id | uuid FK | FK para eventos |
usuario_id | uuid FK | FK para usuarios |
status | status_checkin | PRESENTE, AUSENTE, JUSTIFICADO |
checkin_em | timestamptz | Data/hora do check-in |
criado_em | timestamptz | Data de criacao |
Economia
transacoes_moeda
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador da transacao |
nucleo_id | uuid FK | FK para nucleos |
usuario_id | uuid FK | FK para usuarios |
tipo | tipo_transacao | CREDITO ou DEBITO |
origem | origem_transacao | Origem da transacao |
quantidade | integer | Quantidade de Capixacoins |
descricao | text | Descricao da transacao |
referencia_id | uuid | ID do registro de origem (tarefa, evento, etc) |
criado_em | timestamptz | Data da transacao |
Trigger: trg_atualizar_saldo recalcula usuarios.saldo_capixacoins a cada INSERT.
financeiro_lancamentos
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador do lancamento |
nucleo_id | uuid FK | FK para nucleos |
tipo | tipo_lancamento | RECEITA ou DESPESA |
categoria | categoria_financeiro | Categoria do lancamento |
descricao | text | Descricao |
valor | numeric | Valor em R$ |
data | date | Data do lancamento |
projeto_id | uuid FK (nullable) | FK para projetos (opcional) |
criado_por | uuid FK | FK para usuarios |
criado_em | timestamptz | Data de criacao |
Loja
produtos_loja
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador do produto |
nucleo_id | uuid FK | FK para nucleos |
nome | text | Nome do produto |
descricao | text | Descricao do produto |
categoria | categoria_loja | Categoria do produto |
preco_moedas | integer | Preco em Capixacoins |
preco_real | numeric | Preco em R$ |
preco_promocional_moedas | integer | Preco promocional em CC |
preco_promocional_real | numeric | Preco promocional em R$ |
data_inicio_promo | timestamptz | Inicio do periodo promocional |
data_fim_promo | timestamptz | Fim do periodo promocional |
is_destaque | boolean | Produto em destaque na vitrine |
total_vendas | integer | Contador de vendas |
estoque | integer | Quantidade em estoque |
imagem_url | text | Imagem principal |
ativo | boolean | Produto ativo |
criado_em | timestamptz | Data de criacao |
atualizado_em | timestamptz | Data da ultima atualizacao |
produto_imagens
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
produto_id | uuid FK | FK para produtos_loja |
url | text | URL da imagem |
ordem | integer | Ordem de exibicao |
criado_em | timestamptz | Data de criacao |
pedidos_loja
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador do pedido |
nucleo_id | uuid FK | FK para nucleos |
usuario_id | uuid FK | FK para usuarios |
produto_id | uuid FK | FK para produtos_loja |
quantidade | integer | Quantidade |
pagamento_id | uuid FK | FK para pagamentos |
status | status_pedido | Status do pedido |
metodo | text | Metodo de pagamento usado (CC ou R$) |
criado_em | timestamptz | Data do pedido |
atualizado_em | timestamptz | Data da ultima atualizacao |
pagamentos
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador do pagamento |
nucleo_id | uuid FK | FK para nucleos |
usuario_id | uuid FK | FK para usuarios |
asaas_payment_id | text | ID do pagamento no Asaas |
valor | numeric | Valor em R$ |
status | status_pagamento | Status do pagamento |
metodo | metodo_pagamento | Metodo de pagamento |
descricao | text | Descricao do pagamento |
pix_qrcode | text | QR code PIX (base64) |
pix_copia_cola | text | Codigo PIX copia-e-cola |
boleto_url | text | URL do boleto |
criado_em | timestamptz | Data de criacao |
atualizado_em | timestamptz | Data da ultima atualizacao |
cupons
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
nucleo_id | uuid FK | FK para nucleos |
codigo | text UNIQUE | Codigo do cupom |
desconto_percentual | numeric | Desconto em % |
desconto_fixo | numeric | Desconto fixo em R$ |
validade | timestamptz | Data de validade |
usos_maximos | integer | Limite de usos |
usos_atuais | integer | Usos realizados |
ativo | boolean | Cupom ativo |
criado_em | timestamptz | Data de criacao |
doacoes
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
nucleo_id | uuid FK | FK para nucleos |
usuario_id | uuid FK | FK para usuarios (doador) |
valor | numeric | Valor da doacao em R$ |
pagamento_id | uuid FK | FK para pagamentos |
mensagem | text | Mensagem do doador |
criado_em | timestamptz | Data da doacao |
Conquistas
conquistas
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador da conquista |
nucleo_id | uuid FK | FK para nucleos |
nome | text | Nome da conquista |
descricao | text | Descricao |
icone | text | Emoji ou icone |
codigo | text | Codigo unico (ex: ENGAJADO) |
regra_tipo | text | Tipo de regra (EVENTOS, TAREFAS, REFERRALS, PLANO, CADASTRO) |
regra_quantidade | integer | Quantidade necessaria para desbloquear |
regra_campo_extra | text | Campo extra para regras especificas (ex: slug do plano) |
recompensa_cc | integer | Capixacoins ao desbloquear |
progresso_visivel | boolean | Se mostra barra de progresso ao usuario |
ativo | boolean | Conquista ativa |
criado_em | timestamptz | Data de criacao |
usuario_conquistas
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
usuario_id | uuid FK | FK para usuarios |
conquista_id | uuid FK | FK para conquistas |
desbloqueada_em | timestamptz | Data do desbloqueio |
Comunicacao
comunicados
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
nucleo_id | uuid FK | FK para nucleos |
autor_id | uuid FK | FK para usuarios (autor) |
titulo | text | Titulo do comunicado |
conteudo | text | Corpo do comunicado |
foto_url | text | Foto anexada |
video_url | text | Video anexado |
criado_em | timestamptz | Data de criacao |
notificacoes
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
usuario_id | uuid FK | FK para usuarios |
titulo | text | Titulo da notificacao |
mensagem | text | Corpo da notificacao |
lida | boolean | Se foi lida (default false) |
link | text | Link de redirecionamento |
criado_em | timestamptz | Data de criacao |
push_subscriptions
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
usuario_id | uuid FK | FK para usuarios |
endpoint | text | Endpoint Web Push |
p256dh | text | Chave p256dh |
auth | text | Chave auth |
criado_em | timestamptz | Data de criacao |
email_logs
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
nucleo_id | uuid FK | FK para nucleos |
usuario_id | uuid FK | FK para usuarios (remetente) |
destinatario | text | Email destinatario |
assunto | text | Assunto do email |
tipo | text | Tipo do email (manual, automatico) |
status | text | Status de envio |
erro | text | Mensagem de erro (se houve) |
manual | boolean | Se foi enviado manualmente |
origem | text | Origem do envio |
enviado_em | timestamptz | Data/hora do envio |
criado_em | timestamptz | Data de criacao |
enquetes
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
nucleo_id | uuid FK | FK para nucleos |
titulo | text | Pergunta/titulo da enquete |
descricao | text | Descricao |
foto_url | text | Foto anexada |
tipo_escolha | tipo_escolha | UNICA ou MULTIPLA |
visibilidade | visibilidade | PUBLICA ou PRIVADA |
data_fim | timestamptz | Data limite para votar |
criado_por | uuid FK | FK para usuarios (autor) |
criado_em | timestamptz | Data de criacao |
enquete_opcoes
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
enquete_id | uuid FK | FK para enquetes |
texto | text | Texto da opcao |
votos | integer | Contador de votos (cache) |
enquete_votos
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
enquete_id | uuid FK | FK para enquetes |
opcao_id | uuid FK | FK para enquete_opcoes |
usuario_id | uuid FK | FK para usuarios |
criado_em | timestamptz | Data do voto |
Feed
feed_atividades
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
nucleo_id | uuid FK | FK para nucleos |
usuario_id | uuid FK | FK para usuarios |
tipo | text | Tipo da atividade (conquista, tarefa, evento, etc) |
titulo | text | Titulo da atividade |
descricao | text | Descricao |
metadata | jsonb | Dados extras (referencia_id, etc) |
criado_em | timestamptz | Data da atividade |
feed_likes
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
atividade_id | uuid FK | FK para feed_atividades |
usuario_id | uuid FK | FK para usuarios |
criado_em | timestamptz | Data do like |
Competencias
competencias_macro
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
nucleo_id | uuid FK | FK para nucleos |
nome | text | Nome da macro-competencia |
descricao | text | Descricao |
criado_em | timestamptz | Data de criacao |
competencias_micro
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
macro_id | uuid FK | FK para competencias_macro |
nome | text | Nome da micro-competencia |
descricao | text | Descricao |
criado_em | timestamptz | Data de criacao |
usuario_competencias
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
usuario_id | uuid FK | FK para usuarios |
micro_id | uuid FK | FK para competencias_micro |
nivel | integer | Nivel de proficiencia (1-5) |
criado_em | timestamptz | Data de criacao |
atualizado_em | timestamptz | Data da ultima atualizacao |
Porta-Vozes
porta_vozes
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
nucleo_id | uuid FK | FK para nucleos |
usuario_id | uuid FK | FK para usuarios |
bio | text | Biografia publica |
temas | text[] | Array de temas de atuacao |
ativo | boolean | Porta-voz ativo |
criado_em | timestamptz | Data de criacao |
porta_voz_redes
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
porta_voz_id | uuid FK | FK para porta_vozes |
rede | text | Nome da rede social |
url | text | URL do perfil |
seguidores | integer | Numero de seguidores |
criado_em | timestamptz | Data de criacao |
porta_voz_postagens
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
porta_voz_id | uuid FK | FK para porta_vozes |
rede | text | Rede social |
url | text | URL da postagem |
conteudo | text | Conteudo da postagem |
engajamento | jsonb | Metricas (likes, shares, comments) |
data_postagem | timestamptz | Data da postagem |
criado_em | timestamptz | Data de criacao |
Nacional
config_nacional
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
asaas_api_key | text | API key Asaas nacional (separada dos nucleos) |
asaas_wallet_id | text | Wallet ID Asaas nacional |
config | jsonb | Configuracoes gerais nacionais |
criado_em | timestamptz | Data de criacao |
atualizado_em | timestamptz | Data da ultima atualizacao |
produtos_nacional
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
nome | text | Nome do produto nacional |
descricao | text | Descricao |
preco | numeric | Preco em R$ |
estoque | integer | Quantidade em estoque |
imagem_url | text | Imagem principal |
ativo | boolean | Produto ativo |
criado_em | timestamptz | Data de criacao |
atualizado_em | timestamptz | Data da ultima atualizacao |
produto_nacional_imagens
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
produto_id | uuid FK | FK para produtos_nacional |
url | text | URL da imagem |
ordem | integer | Ordem de exibicao |
criado_em | timestamptz | Data de criacao |
pedidos_nacional
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
usuario_id | uuid FK | FK para usuarios (comprador) |
produto_id | uuid FK | FK para produtos_nacional |
quantidade | integer | Quantidade |
valor_total | numeric | Valor total em R$ |
status | status_pedido | Status do pedido |
asaas_payment_id | text | ID do pagamento no Asaas |
criado_em | timestamptz | Data do pedido |
atualizado_em | timestamptz | Data da ultima atualizacao |
comunicados_nacional
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
autor_id | uuid FK | FK para usuarios (Super Admin) |
titulo | text | Titulo do comunicado |
conteudo | text | Corpo do comunicado |
foto_url | text | Foto anexada |
criado_em | timestamptz | Data de criacao |
enquetes_nacional
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
titulo | text | Pergunta da enquete |
descricao | text | Descricao |
tipo_escolha | tipo_escolha | UNICA ou MULTIPLA |
data_fim | timestamptz | Data limite para votar |
criado_por | uuid FK | FK para usuarios (Super Admin) |
criado_em | timestamptz | Data de criacao |
enquete_nacional_opcoes
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
enquete_id | uuid FK | FK para enquetes_nacional |
texto | text | Texto da opcao |
votos | integer | Contador de votos (cache) |
enquete_nacional_votos
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
enquete_id | uuid FK | FK para enquetes_nacional |
opcao_id | uuid FK | FK para enquete_nacional_opcoes |
usuario_id | uuid FK | FK para usuarios |
criado_em | timestamptz | Data do voto |
IA
ia_conversas
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
nucleo_id | uuid FK | FK para nucleos (multi-tenant) |
usuario_id | uuid FK | FK para usuarios (dono) |
titulo | text | Titulo (gerado da primeira mensagem) |
mensagens | jsonb | Array de mensagens (role, content, tipo, timestamp) |
compartilhada | boolean | Se foi compartilhada para coordenadores (default false) |
compartilhada_em | timestamptz | Data/hora do compartilhamento |
criado_em | timestamptz | Data de criacao |
atualizado_em | timestamptz | Data da ultima atualizacao (trigger) |
Materiais
materiais
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
nucleo_id | uuid FK | FK para nucleos |
titulo | text | Titulo do material |
descricao | text | Descricao |
tipo | text | Tipo do arquivo (pdf, imagem, video, etc) |
url | text | URL do arquivo (Supabase Storage) |
criado_por | uuid FK | FK para usuarios |
criado_em | timestamptz | Data de criacao |
Bug Reports
bug_reports
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
nucleo_id | uuid FK | FK para nucleos |
usuario_id | uuid FK | FK para usuarios (reportou) |
titulo | text | Titulo do bug |
descricao | text | Descricao detalhada |
screenshot_url | text | URL do screenshot |
status | text | Status (aberto, em_andamento, resolvido) |
prioridade | text | Prioridade (baixa, media, alta, critica) |
criado_em | timestamptz | Data de criacao |
atualizado_em | timestamptz | Data da ultima atualizacao |
Metricas
metricas_globais
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
tipo | text | Tipo da metrica |
valor | jsonb | Valor da metrica (estrutura variavel) |
periodo | text | Periodo de referencia |
criado_em | timestamptz | Data de coleta |
Auditoria
audit_log
| Coluna | Tipo | Descricao |
|---|
id | uuid PK | Identificador |
nucleo_id | uuid FK | FK para nucleos |
usuario_id | uuid FK | FK para usuarios |
acao | text | Acao realizada (CREATE, UPDATE, DELETE) |
tabela | text | Tabela afetada |
registro_id | uuid | ID do registro afetado |
dados_antes | jsonb | Snapshot antes da alteracao |
dados_depois | jsonb | Snapshot depois da alteracao |
ip | text | IP do usuario |
criado_em | timestamptz | Data da acao |
Triggers
- trg_atualizar_saldo: Ao inserir em
transacoes_moeda, recalcula usuarios.saldo_capixacoins via SUM do ledger - trg_usuarios_updated: Atualiza
atualizado_em ao modificar usuario - trg_gerar_referral: Gera codigo referral unico (
MBL-ES-XXXX) ao inserir usuario - trg_ia_conversas_updated: Atualiza
atualizado_em ao modificar conversa IA
Indexes Principais
idx_usuarios_nucleo_id em usuarios(nucleo_id)idx_usuarios_email em usuarios(email)idx_usuarios_referral_code em usuarios(referral_code)idx_transacoes_usuario em transacoes_moeda(usuario_id)idx_transacoes_nucleo em transacoes_moeda(nucleo_id)idx_tarefas_projeto em tarefas(projeto_id)idx_tarefas_nucleo em tarefas(nucleo_id)idx_eventos_nucleo em eventos(nucleo_id)idx_feed_nucleo em feed_atividades(nucleo_id)idx_audit_nucleo em audit_log(nucleo_id)idx_notificacoes_usuario em notificacoes(usuario_id)idx_pedidos_usuario em pedidos_loja(usuario_id)
Row Level Security (RLS)
Todas as tabelas tem RLS habilitado. Politicas base filtram por nucleo_id do usuario logado. O service_role key (usada pelo NestJS) bypassa RLS. Tabelas nacionais nao possuem nucleo_id e sao acessiveis apenas por SUPER_ADMIN.
Migrations
00001_initial_schema.sql — Schema completo (20+ tabelas, enums, RLS, triggers)00002_asaas_integration.sql — Tabela pagamentos, enums de pagamento, campos split payment00003_competencias.sql — Tabelas de competencias (macro, micro, usuario)00004_porta_vozes.sql — Porta-vozes, redes sociais, postagens00005_nacional.sql — Tabelas nacionais (config, produtos, comunicados, enquetes)00006_conquistas_v2.sql — Campos regra_tipo, regra_quantidade, progresso_visivel em conquistas00007_ia_compartilhada.sql — Campos compartilhada, compartilhada_em em ia_conversas