Skip to content

Limpeza de Dados para Produção

Última atualização: 2026-04-06
Versão: 3.0


1. Visão Geral

O banco possui 73 tabelas categorizadas em:

  • PRESERVAR (24) — Estrutura, configuração, dados mestres criados por especialistas
  • LIMPAR (49) — Dados transacionais, logs, dados de teste

2. Tabelas a PRESERVAR

Estrutura e Configuração do Sistema

TabelaMotivo
papeisEstrutura base de papéis do sistema
planosPlanos de assinatura (configuração comercial)
series_escolaresLista fixa de séries escolares
cron_statusStatus operacional do CRON (resetar, não limpar)
configuracoes_plataformaConfigurações globais do sistema
feature_flagsConfiguração de feature flags
canary_groupsGrupos canary (configuração)
feature_flag_canaryVínculo feature flag ↔ canary group

Dados Mestres Criados por Especialistas

TabelaMotivo
olimpiadasCadastro de olimpíadas
olimpiada_edicoesEdições das olimpíadas
olimpiada_linksLinks das olimpíadas
olimpiada_series_participantesSéries que participam
fases_olimpiadaFases de cada olimpíada
niveis_competicaoNíveis de competição
niveis_competicao_seriesVínculo nível-série
atividades_cronogramaCronograma das olimpíadas
cursosCursos criados
cursos_videosVídeos dos cursos
tutoriaisTutoriais do sistema
banners_loginBanners configurados
headers_novidadesHeaders de novidades
template_hubsHubs de templates
templates_mensagemTemplates de mensagem

Total PRESERVAR: 24 tabelas (8 estrutura + 16 dados mestres — cron_status apenas resetado, não truncado)


3. Tabelas a LIMPAR

TabelaDescrição
escolasEscolas de teste
endereco_escolaEndereços de escolas
escola_assinaturasAssinaturas de teste
escola_faturasFaturas de teste
escola_olimpiadasAdesões às olimpíadas
escola_mural_configConfig do Mural Olímpico
escola_anotacoesAnotações de escolas
usuariosUsuários de teste
usuario_papeisVínculos usuário-papel
usuarios_escola_permissoesPermissões extras
usuarios_escola_sub_permissoesSub-permissões por papel
user_presencePresença online
turmasTurmas de teste
alunosAlunos de teste
aluno_turma_historicoHistórico de turmas
aluno_responsaveisVínculos aluno-responsável
responsaveisResponsáveis de teste
solicitacoes_vinculoSolicitações de vínculo
inscricoes_olimpiadaInscrições de teste
resultados_alunoResultados de teste
configuracoes_fase_nivelConfig de fase/nível por escola
mural_publicacoesPublicações do mural
mural_liberacoesLiberações de resultados
mural_dados_publicadosSnapshots de resultados do mural
mensagens_enviadasMensagens enviadas
template_personalizacoesPersonalizações de template por escola
eventos_manuais_escolaEventos manuais
tarefasTarefas da equipe
notificacoesNotificações
logs_transacoesLogs de auditoria
login_otpsOTPs expirados
portal_otpsOTPs do portal
portal_login_tentativasTentativas de login
portal_alert_cooldownCooldown de alertas portal
portal_rate_metricsMétricas de rate limit portal
usuario_progresso_videoProgresso em vídeos
video_comentariosComentários em vídeos
video_materiaisMateriais de vídeos
cadastro_tokensTokens de cadastro público
importacao_alunos_sessoesSessões de importação de alunos
importacao_resultados_sessoesSessões de importação de resultados
incidentes_resolucoesResoluções de incidentes
coordenador_coresCores de coordenadores
sms_logLog de mensagens WhatsApp enviadas
token_blacklistTokens JWT invalidados
senha_historicoHistórico de senhas
canary_group_escolasVínculos canary group ↔ escola
canary_group_usuariosVínculos canary group ↔ usuário
twilio_billing_log⚠️ Legado — candidata a DROP via migration (Twilio removido)

Total LIMPAR: 49 tabelas


4. Script SQL de Limpeza

sql
-- ===============================================
-- RESET DO BANCO PARA PRODUÇÃO
-- ⚠️ EXECUTE COM CUIDADO - IRREVERSÍVEL
-- ⚠️ Faça backup antes de executar.
-- Total: 49 tabelas truncadas
-- ===============================================

SET session_replication_role = replica;

-- ETAPA 1: Cache, Logs e Segurança
TRUNCATE TABLE logs_transacoes CASCADE;
TRUNCATE TABLE login_otps CASCADE;
TRUNCATE TABLE portal_otps CASCADE;
TRUNCATE TABLE portal_login_tentativas CASCADE;
TRUNCATE TABLE portal_alert_cooldown CASCADE;
TRUNCATE TABLE portal_rate_metrics CASCADE;
TRUNCATE TABLE user_presence CASCADE;
TRUNCATE TABLE cadastro_tokens CASCADE;
TRUNCATE TABLE token_blacklist CASCADE;
TRUNCATE TABLE senha_historico CASCADE;
TRUNCATE TABLE sms_log CASCADE;
TRUNCATE TABLE incidentes_resolucoes CASCADE;
TRUNCATE TABLE twilio_billing_log CASCADE;

-- ETAPA 2: Notificações e Tarefas
TRUNCATE TABLE notificacoes CASCADE;
TRUNCATE TABLE tarefas CASCADE;

-- ETAPA 3: Interações com Vídeos
TRUNCATE TABLE video_comentarios CASCADE;
TRUNCATE TABLE video_materiais CASCADE;
TRUNCATE TABLE usuario_progresso_video CASCADE;

-- ETAPA 4: Mural e Comunicação
TRUNCATE TABLE mural_publicacoes CASCADE;
TRUNCATE TABLE mural_liberacoes CASCADE;
TRUNCATE TABLE mural_dados_publicados CASCADE;
TRUNCATE TABLE mensagens_enviadas CASCADE;
TRUNCATE TABLE template_personalizacoes CASCADE;

-- ETAPA 5: Resultados e Inscrições
TRUNCATE TABLE resultados_aluno CASCADE;
TRUNCATE TABLE inscricoes_olimpiada CASCADE;
TRUNCATE TABLE configuracoes_fase_nivel CASCADE;
TRUNCATE TABLE importacao_resultados_sessoes CASCADE;

-- ETAPA 6: Alunos e Responsáveis
TRUNCATE TABLE aluno_responsaveis CASCADE;
TRUNCATE TABLE aluno_turma_historico CASCADE;
TRUNCATE TABLE alunos CASCADE;
TRUNCATE TABLE responsaveis CASCADE;
TRUNCATE TABLE solicitacoes_vinculo CASCADE;
TRUNCATE TABLE turmas CASCADE;

-- ETAPA 7: Eventos e Importações
TRUNCATE TABLE eventos_manuais_escola CASCADE;
TRUNCATE TABLE importacao_alunos_sessoes CASCADE;
TRUNCATE TABLE coordenador_cores CASCADE;

-- ETAPA 8: Financeiro e Config Escola
TRUNCATE TABLE escola_olimpiadas CASCADE;
TRUNCATE TABLE escola_mural_config CASCADE;
TRUNCATE TABLE escola_faturas CASCADE;
TRUNCATE TABLE escola_assinaturas CASCADE;
TRUNCATE TABLE escola_anotacoes CASCADE;
TRUNCATE TABLE endereco_escola CASCADE;

-- ETAPA 9: Canary (dados transacionais, preserva config)
TRUNCATE TABLE canary_group_escolas CASCADE;
TRUNCATE TABLE canary_group_usuarios CASCADE;

-- ETAPA 10: Usuários e Permissões
TRUNCATE TABLE usuarios_escola_sub_permissoes CASCADE;
TRUNCATE TABLE usuarios_escola_permissoes CASCADE;
TRUNCATE TABLE usuario_papeis CASCADE;
TRUNCATE TABLE usuarios CASCADE;

-- ETAPA 11: Escolas
TRUNCATE TABLE escolas CASCADE;

SET session_replication_role = DEFAULT;

5. Reset do CRON Status

sql
UPDATE cron_status SET 
  ultima_execucao = NULL,
  ultima_execucao_sucesso = NULL,
  ultimo_erro = NULL,
  ultimo_erro_em = NULL,
  status = 'operacional',
  tentativas_consecutivas = 0,
  sms_critico_enviado_em = NULL,
  proximo_retry = NULL;

6. Query de Verificação Pós-Limpeza

sql
-- Tabelas transacionais devem estar vazias
SELECT 'escolas' as tabela, COUNT(*) as registros FROM escolas
UNION ALL SELECT 'usuarios', COUNT(*) FROM usuarios
UNION ALL SELECT 'alunos', COUNT(*) FROM alunos
UNION ALL SELECT 'turmas', COUNT(*) FROM turmas
UNION ALL SELECT 'responsaveis', COUNT(*) FROM responsaveis
UNION ALL SELECT 'inscricoes_olimpiada', COUNT(*) FROM inscricoes_olimpiada
UNION ALL SELECT 'resultados_aluno', COUNT(*) FROM resultados_aluno
UNION ALL SELECT 'escola_assinaturas', COUNT(*) FROM escola_assinaturas
UNION ALL SELECT 'escola_faturas', COUNT(*) FROM escola_faturas
UNION ALL SELECT 'logs_transacoes', COUNT(*) FROM logs_transacoes
UNION ALL SELECT 'notificacoes', COUNT(*) FROM notificacoes
UNION ALL SELECT 'mural_publicacoes', COUNT(*) FROM mural_publicacoes
UNION ALL SELECT 'mural_dados_publicados', COUNT(*) FROM mural_dados_publicados
UNION ALL SELECT 'cadastro_tokens', COUNT(*) FROM cadastro_tokens
UNION ALL SELECT 'importacao_alunos_sessoes', COUNT(*) FROM importacao_alunos_sessoes
UNION ALL SELECT 'importacao_resultados_sessoes', COUNT(*) FROM importacao_resultados_sessoes
UNION ALL SELECT 'sms_log', COUNT(*) FROM sms_log
UNION ALL SELECT 'token_blacklist', COUNT(*) FROM token_blacklist
UNION ALL SELECT 'portal_rate_metrics', COUNT(*) FROM portal_rate_metrics
ORDER BY tabela;

-- Dados mestres devem estar intactos
SELECT 'olimpiadas' as tabela, COUNT(*) as registros FROM olimpiadas
UNION ALL SELECT 'cursos', COUNT(*) FROM cursos
UNION ALL SELECT 'planos', COUNT(*) FROM planos
UNION ALL SELECT 'papeis', COUNT(*) FROM papeis
UNION ALL SELECT 'series_escolares', COUNT(*) FROM series_escolares
UNION ALL SELECT 'configuracoes_plataforma', COUNT(*) FROM configuracoes_plataforma
UNION ALL SELECT 'feature_flags', COUNT(*) FROM feature_flags
UNION ALL SELECT 'canary_groups', COUNT(*) FROM canary_groups
ORDER BY tabela;

7. Passos Após a Limpeza

Criar Primeiro Administrador

sql
-- 1. Inserir usuário
INSERT INTO usuarios (id, codigo, tipo_codigo, nome_completo, email, telefone, escola_id, ativo)
VALUES (
  gen_random_uuid(),
  '00000000000',           -- ⚠️ CPF real
  'cpf',
  'Administrador OLP',     -- ⚠️ Nome real
  'admin@olp.digital',     -- ⚠️ Email real
  '11999999999',           -- ⚠️ Telefone real (para OTP)
  NULL, true
);

-- 2. Obter ID
SELECT id FROM usuarios WHERE codigo = '00000000000';

-- 3. Vincular papel (substituir UUID)
INSERT INTO usuario_papeis (usuario_id, papel_id, escola_id, criado_em)
SELECT 'UUID_AQUI', id, NULL, now()
FROM papeis WHERE nome = 'administrador';

(Opcional) Criar Especialista

sql
INSERT INTO usuarios (id, codigo, tipo_codigo, nome_completo, email, telefone, escola_id, ativo)
VALUES (gen_random_uuid(), '11111111111', 'cpf', 'Especialista OLP', 'esp@olp.digital', '11999999998', NULL, true);

INSERT INTO usuario_papeis (usuario_id, papel_id, escola_id, criado_em)
SELECT (SELECT id FROM usuarios WHERE codigo = '11111111111'), id, NULL, now()
FROM papeis WHERE nome = 'especialista';

8. Storage Buckets

BucketAção
banners-loginMANTER
curso-thumbnailsMANTER
tutoriais-thumbnailsMANTER
mural-imagensLIMPAR (Dashboard → Storage → selecionar tudo → Delete)

9. Checklist de Execução

  • [ ] Fazer backup completo (Dashboard → Settings → Backups)
  • [ ] Executar Script SQL de Limpeza (11 etapas)
  • [ ] Executar Reset do CRON Status
  • [ ] Executar Query de Verificação Pós-Limpeza
  • [ ] Confirmar dados mestres intactos
  • [ ] Criar primeiro administrador
  • [ ] Limpar bucket mural-imagens
  • [ ] Testar login com novo administrador
  • [ ] Verificar acesso ao painel administrativo
  • [ ] Criar primeira escola real de produção