Rotina automática de saúde — testa leitura/escrita do banco e detecta sintomas dos bugs conhecidos. Roda quando quiser; nada destrutivo.
Lista fixa que aparece no dropdown do "Quem se destacou" no Bem-te-vi. Match com atividades dos usuários é case-insensitive e ignora acentos.
Busca uma pessoa e vê quem mudou o quê e quando. Foto/diff longos aparecem truncados — audit serve pra "quem zerou", não pra recuperar conteúdo.
Testa o disparador do email "Líder do dia". Vai pros líderes da org (envio pra toda a membresia foi revertido — estourava a cota do Resend).
Mesmo disparo do cron das 6:30. Atende só as organizações que ligaram o envio automático na aba Organização — as demais ficam no manual, pelo botão do Painel, e não são atingidas nem por este botão. Vai pro próprio aniversariante que tiver e-mail no cadastro, 1× por dia.
A foto de cada pessoa vive em base64 dentro de dir_people.
Medido na C3: as fotos são 89% de tudo que o app carrega — e por isso
pesam também no backup, no realtime e em cada leitura de ficha.
Copiar manda cada foto pro balde privado sem apagar nada:
depois disso ela existe nos dois lugares. Conferir lê tudo de volta e
compara byte a byte. Só depois da conferência passar é que o base64 sai da linha.
Cron que falha, falha calado. Em 11/08 o backup diário do Money passou uma semana sem gravar nada e ninguém percebeu — a única prova de vida era ir olhar uma tabela no SQL. Este painel é essa prova, num lugar que se olha. Verde = rodou dentro do prazo. Vermelho = está atrasado ou nunca rodou, e aí tem que agir.
O caminho, na ordem. Cada passo só existe porque pular ele já custou caro antes.
money_* da organização, não um "botão de
desfazer": a volta é por SQL, lançamento a lançamento, e quem escreve
o script sou eu. Me mande o arquivo e a lista.🔒 Uma organização nunca alcança a outra. Cada org tem sua pasta no balde; a cópia é montada filtrando por organização e, desde 12/08, se confere antes de ser gravada — linha de outra org é removida do arquivo e o dia vira problema com e-mail. Na volta, a trava mora no banco, não no script: restaurar a C3 não tem como encostar na Be Happy.
⚠️ Exclusão não é perda. Lançamento apagado no Money vai pra
money_transactions_archive com a linha inteira, e volta pela RPC
money_restore_archived() — sem precisar de backup. O balde é pro
caso em que nem o arquivo existe mais.
Roda sozinho às 4:00 BRT, um arquivo por tabela por dia no
balde privado dados-backups. Depois de escrever, lê de volta e
confere se o arquivo tem todas as linhas que o banco tinha naquele instante.
⚠️ Isto não substitui o PITR do Supabase, e o PITR não substitui isto. O PITR volta o banco inteiro a qualquer segundo dos últimos 7 dias — é a rede contra o script errado. Este backup é a cópia que existe fora do banco e sobrevive a um problema com a própria conta. O que nenhum dos dois cobre: os arquivos dos baldes (fotos das pessoas, arte do site).
🔒 O e-mail de domingo anexa só as tabelas de conteúdo (moldes, competências, textos, organizações). Cadastro, respostas e sessões de adolescente não viajam por e-mail — ficam no balde, e se baixam aqui, com link de 15 minutos.
Sorteia uma chave aqui no seu navegador — ela não passa por servidor nenhum, nem pela Berg, nem por site de terceiro. Serve pra qualquer segredo que você precise trocar nos painéis.
O roteiro completo da troca (onde colar, em que ordem, e como conferir sem
terminal) está em docs/ROTACAO-SUPER-ADMIN-KEY.md. O resumo:
cole o mesmo valor no secret do GitHub e na env var do
Netlify, na mesma sentada, longe de 03:10 e 06:30 BRT.
⚠️ Ela não fica guardada em lugar nenhum — nem aqui, nem no banco. Saiu desta tela sem ser colada nos dois painéis, virou lixo: gere outra. E não mande esse valor por conversa nenhuma, inclusive pra mim — foi assim que a anterior precisou ser trocada.
Resolve o problema crônico de acesso (Klaus, Rodrigo Cortati, próximos): emails do reset de senha não chegam em provedores antigos (UOL, Hotmail).
Diagnóstico: Reset-de-senha do Supabase manda email via SMTP nativo; UOL/Hotmail bloqueiam ou jogam em spam. Magic link via Resend funciona porque o admin dispara manualmente — mas faz Ronald virar "plantão de senha".
Solução proposta — Opção 2:
https://mfhingxknacxsdcovpdr.supabase.co/auth/v1/callback/entrar/ e nos fluxos Church/CorpEfeito: Klaus (klauskruger76@gmail.com) clica "Entrar com Google" → vincula à conta auth existente (k2arq@uol.com.br) sem perder histórico. Não depende mais de email pra autenticar.
Esforço: ~1h de config + ~2h de UI. Resolve a categoria toda — não só Klaus.
Cola pro Ronald se algum teste der vermelho.