Docs LP Captacao AulaoGitHub ↗

Virada de aulão

Operação mais frequente do sistema: trocar o aulão ativo nas URLs públicas.

Conceito

Cada aulão é uma config identificada por um codigo (ex: 2606_A1, 2607_A1). Em public.landing_configs cada linha tem estado:

  • ativa (uma só por vez): é o que está servindo nas URLs públicas
  • standby: preparado com antecedência, só admin acessa via /preview/[codigo]
  • arquivada: já foi ativa, agora histórico

A "virada" é a transição standby → ativa de uma config, e automaticamente ativa → arquivada da config anterior.

O que acontece tecnicamente numa virada

  1. Endpoint /api/admin/virar/[codigo] é chamado
  2. UPDATE no banco: estado da antiga vai pra arquivada, nova vira ativa
  3. Arquivo src/config/active.ts é editado via GitHub API → aponta pra src/config/launches/[codigo].ts
  4. Arquivo src/config/runtime.ts é regerado com as configs operacionais (tag AC, link grupo WhatsApp, URLs de webhooks) lidas do banco
  5. Os 2 commits no GitHub disparam deploy automático no Vercel (~30-60s)
  6. URLs públicas passam a servir a versão nova

3 modos de virar

Modo 1: Manual (você dispara quando quiser)

https://aulao.brunolucarelli.com.br/api/admin/virar/[codigo]?token=arrematador-01

Substitua [codigo] pelo código do aulão futuro (ex: 2607_A1).

Acessa no navegador, recebe um JSON. Em ~60 segundos o Vercel completa o deploy e as URLs públicas refletem o novo aulão.

Modo 2: Agendado (Vercel Cron)

Edita o arquivo vercel.json na raiz do projeto:

{
  "crons": [
    {
      "path": "/api/admin/virar/2607_A1",
      "schedule": "55 21 03 6 *"
    }
  ]
}

A schedule segue cron syntax minuto hora dia mes dia-da-semana em UTC.

Brasília é UTC-3. Para virar às 18:55 BRT, use 55 21 em UTC.

Commit + push. O Vercel detecta o cron novo e agenda automaticamente.

Boa prática: agendar para 5 min antes do horário-alvo do aulão, pra dar margem ao deploy de ~30-60s.

Modo 3: Reverter (rollback)

Se algo deu errado após uma virada, basta chamar o endpoint apontando para a config antiga:

https://aulao.brunolucarelli.com.br/api/admin/virar/{codigo_antigo}?token=arrematador-01

A configuração arquivada volta a ser ativa em ~60s.

Checklist pré-virada

Antes de virar para um aulão novo, garanta que:

  • Linha em public.landing_configs com codigo do novo aulão existe e está em estado='standby' com TODAS as colunas preenchidas:
    • lancamento_id
    • etapa_lancamento_id
    • tag_activecampaign
    • link_grupo_whatsapp
    • url_webhook_unnichat
    • unnichat_series_id
    • url_webhook_make_etapa1
    • url_webhook_make_etapa2
  • Arquivo src/config/launches/[codigo].ts existe no código com o conteúdo da nova LP (headline, bullets, imagens, variantes)
  • Arquivo src/config/launches/index.ts lista o novo código no objeto configs
  • Acesse /preview/[codigo] no modo admin e confirme visualmente que tudo está correto (todas as variantes: lp1, lp2, lp3)
  • Lançamento e etapa de lançamento (public.lancamentos e public.etapas_lancamento) criados no banco central com os IDs referenciados

Checklist pós-virada

Após o deploy completar (~60s):

  • Acesse /cadastro e confirme o conteúdo novo
  • Confira o commit "virada automatica" no GitHub
  • Faça um cadastro de teste end-to-end (aba anônima)
  • Confirme que aparece no Supabase em captacoes e pesquisas
  • Confirme que o contato apareceu no ActiveCampaign com a tag nova
  • Confirme que o cenário Make.com da Etapa 1 e da Etapa 2 receberam
  • Confirme que o Unnichat enviou o WhatsApp
  • Confirme que o redirect no /concluir-cadastro vai para o grupo correto

Sincronização sem virar

Caso queira atualizar apenas alguma config operacional (ex: trocar URL de webhook, mudar tag AC) sem fazer uma virada de aulão:

  1. Edite a coluna desejada na linha do código atualmente ativa em landing_configs (via SQL Editor do Supabase)
  2. Chame o endpoint normal: /api/admin/virar/{codigo_atual}?token=...
  3. O endpoint detecta que o código já está ativo (modo sync), pula a parte de troca de estado e apenas regenera o runtime.ts com os novos valores

Logs e debugging

  • Logs do endpoint: Vercel Dashboard → Project → Functions → /api/admin/virar/[codigo] → ver execução recente
  • Commits gerados: https://github.com/felipe-lucarelli/lp-captacao-aulao/commits/main Procure mensagens "virada automatica:" ou "sync:"
  • Estado atual no banco:
    select codigo, estado, ativada_em, arquivada_em
      from public.landing_configs
     order by criada_em desc;