Guia de Diagnóstico Geral¶
Módulo 1 — Fotos de Pedidos¶
| Sintoma | Causa provável e ação |
|---|---|
| Workflow não dispara ao receber NF | Verificar se o workflow está ATIVO. Checar se o sistema que envia o XML está usando a URL correta do webhook |
| Nenhuma foto encontrada (erro no nó 7) | O cProd da NF não bate com referencia na tabela. Verificar os primeiros 10 chars do cProd vs campo referencia no banco |
| E-mail não chega ao cliente | refresh_token do RD Station pode ter expirado. Verificar e atualizar o nó 10 |
| Link do cliente retorna expirado | Token vencido. Usar o Workflow de Revalidação de Token (WF2) |
| WhatsApp não é enviado — fone 1 | Verificar instância Evolution API. Aguardar os 5 min antes de diagnosticar. Checar se o fone 1 da NF está preenchido |
| WhatsApp não é enviado — fone 1 e fone 2 | Ambos os telefones retornaram exists = false. Verificar se o CNPJ está sendo formatado com máscara na consulta ao Sisplan |
| Consulta ao Sisplan falha | Verificar credencial Bearer no nó HTTP Request. Checar se cliente_cnpj está chegando com a máscara XX.XXX.XXX/XXXX-XX |
| Telefone 2 retorna vazio | Cliente não tem telefone2 cadastrado no Sisplan. Fluxo encerra sem envio de WhatsApp |
Módulo 2 — Drive Inteligente¶
| Sintoma | Causa provável e ação |
|---|---|
| Bot não responde | Verificar se o Fluxo Principal está ATIVO. Checar webhook do Telegram Trigger |
| Bot responde mas não acha arquivos | Linha/tipo/coleção não bate com o banco. Verificar se o arquivo foi ingerido pelo Coletor ou pela Indexação |
| Agente IA não responde | Verificar saldo/limite do OpenRouter. Checar conexão Redis (Upstash) |
| Memória do chat parece perdida | Verificar expiração das chaves Redis. Confirmar que chatId está sendo passado como String |
| Coletor não registra arquivo | Nome do arquivo inválido (< 3 partes separadas por _). Ver planilha de LOG no Google Sheets |
Módulo 3 — Manutenção¶
| Sintoma | Causa provável e ação |
|---|---|
| Indexação termina mas banco não foi atualizado | Todos os arquivos já existem (apenas UPDATE foi feito). Ver log de existentes no Sheets |
| Muitos nomes inválidos no log da Indexação | Arquivos no B2 sem nomenclatura padrão. Verificar a estrutura de nomes no bucket |
| Erro ao conectar ao Backblaze | Verificar credencial S3 account - BackBlaze - Drive Inteligente. Checar validade das chaves B2 |
| Relatório de Auditoria chega vazio | Nenhum material sem referência encontrado — todos estão corretamente catalogados |
Módulo 4 — Monitor Global de Erros¶
| Sintoma | Causa provável e ação |
|---|---|
| Erro ocorreu mas e-mail não chegou | Verificar se o Monitor está ATIVO. Checar se o workflow de origem está vinculado no campo Error Workflow |
| E-mail chegou mas sem link de execução | Campo execution.url vazio — verificar versão da instância n8n |
Registro não aparece em logs_automacao |
Verificar credencial Postgres - Drive Inteligente. Confirmar que a tabela existe no schema public |
| Monitor disparou mas o erro era esperado | Avaliar se o workflow de origem deveria tratar o caso com um nó de erro próprio antes de propagar para o monitor global |
| Dashboard Metabase não carrega dados | Verificar conexão do Metabase com o PostgreSQL em Admin → Databases. Confirmar que o EasyPanel e o banco estão no ar |
| Gráfico desatualizado no Metabase | Metabase cacheia resultados — forçar atualização clicando em "Refresh" na pergunta ou ajustar intervalo de cache nas configurações |
Site Institucional — Worker rd-leads¶
| Sintoma | Causa provável e ação |
|---|---|
| Formulário não envia (sem erro visível) | Abrir DevTools (F12) → Console → tentar enviar → verificar erros em vermelho |
Console mostra TurnstileError |
VITE_TURNSTILE_SITE_KEY não configurada no Pages ou valor incorreto. Verificar variável no Cloudflare Pages → reimplantar |
| Nenhuma requisição aparece no Network | Frontend não está chamando a API. Verificar URL da API no código do frontend |
Worker retorna 403 Forbidden origin |
ALLOWED_ORIGIN desatualizado no Worker. Atualizar o secret → aguardar ~1 min |
Worker retorna 403 captcha inválido |
TURNSTILE_SECRET errado ou token expirado. Verificar secret no Worker e chave no painel Turnstile |
Worker retorna 502 Erro no RD |
Token OAuth inválido ou Refresh Token expirado. Verificar secrets RD_CLIENT_ID, RD_CLIENT_SECRET, RD_REFRESH_TOKEN no Worker |
| Lead aparece no RD Marketing sem negociação no CRM | Automação desativada. Verificar se [CRM] Site Institucional - Quero Revender e [CRM] Site Institucional - Já sou Cliente estão ativas no RD Marketing |
| Deploy não atualizou o site | Push não foi para a branch main ou o deploy falhou. Verificar Cloudflare → Pages → veggi-style-catalogue → Implantações → log do build |
| Erro de lockfile no build | Conflito entre bun.lockb e package-lock.json. Remover bun.lockb do repositório e fazer novo push |
Módulo 5 — Loja VTEX¶
Validador de e-mail (checkout)¶
| Sintoma | Causa provável e ação |
|---|---|
| Cliente legítimo barrado no checkout | Ver logs em Cloudflare → Workers → veggi-validador-email → Observability. Se urgente, apagar o bloco // VEGGI — validacao de e-mail do checkout6-custom.js |
| Nenhuma validação acontece no checkout | Bloco apagado do checkout6-custom.js ou erro de JS antes dele. DevTools (F12) → Console |
| Console mostra erro de CORS | Domínio da loja fora de ORIGENS_PERMITIDAS. Atualizar wrangler.jsonc → wrangler deploy |
| Domínio bloqueado continua passando | Cache de 7 dias. wrangler kv key delete --binding=CACHE "dom:<dominio>" --remote |
Erro CHK0328 / 429 ao testar |
Normal: minimumPurchaseDowntimeSeconds = 120. Aguardar 2 min entre tentativas |
Erro ORD062 / 401 ao pagar |
Teste feito logado como admin (nat@veggi.com.br). Usar conta de cliente comum |
Scripts de análise VTEX¶
| Sintoma | Causa provável e ação |
|---|---|
| Script retorna 401 / 403 | VTEX_APP_KEY ou VTEX_APP_TOKEN inválidos no .env de vtex-analise. Regerar em VTEX Admin → Configurações da conta → Chaves de aplicação |
monta-planilha.py dá erro de permissão |
Planilha card-testing-2024-2026.xlsx aberta no Excel. Fechar e rodar de novo |
| Planilha saiu com meses faltando | Algum infra-*.csv foi apagado da pasta. Rodar extrai-infra.py para o período faltante |
extrai-infra.py demora demais |
Normal — duas chamadas de API por pedido. Quebrar em períodos menores |
| Pedido negado aparece como "Cancelado" na VTEX | Comportamento do OMS. O motivo real da recusa só vem da API de Pagamentos — é o que o extrai-infra.py cruza |
Higienização da base RD¶
| Sintoma | Causa provável e ação |
|---|---|
detecta-bots.py gera mais linhas do que a exportação |
Exportação antiga ficou em entrada\. Apagar e rodar de novo |
| Colunas de engajamento ausentes no resultado | Exportação da RD sem "última conversão", "último e-mail aberto" e "último clique". Reexportar marcando essas colunas |
Domínio legítimo caiu em suspeitos.csv |
Acrescentar em DESCARTAVEIS/exceções no topo do detecta-bots.py — descartaveis.txt é sobrescrito a cada atualização da lista pública |
Módulos 6 a 8 — Mídia paga¶
Dashboard de anúncios¶
| Sintoma | Causa provável e ação |
|---|---|
| Abre mas sem dados | O robô não rodou. Disparar /update?key=... |
| Erro 403 ao abrir | Acesso por veggi-meta.pages.dev ou preview. Usar o domínio oficial — é o _middleware.js funcionando |
| Botão "Atualizar agora" dá erro | Falta o UPDATE_KEY no Pages — cofre diferente do Worker. Rodar definir-chave-dashboard.bat |
| Aba Diário vazia, resto OK | Esperado: a série diária tem bloco try isolado |
| Aba B2C com gasto e sem pedidos | Anúncio criado à mão nasce sem UTM. Confirmar com /vtex-diagnostico?key=... |
Robô updater¶
| Sintoma | Causa provável e ação |
|---|---|
| Uma conta sumiu da dashboard | Teto de sub-requisições estourado — conferir se os dois crons continuam separados |
| CRM real zerado | RD_CRM_TOKEN expirado, ou o campo "Campanha Meta" parou de ser preenchido nas LPs |
| Pedidos da VTEX não chegam | Rodar /vtex-teste?key=... — aponta onde está o erro sem revelar segredo |
| Google Ads sem dados | O script na conta do Google parou. Ver o histórico em Scripts |
Consultor MCP¶
| Sintoma | Causa provável e ação |
|---|---|
| Conector retorna 404 | MCP_TOKEN errado ou ausente na URL |
| Ferramenta nova não aparece | Conector não atualizado ou chat antigo. Atualizar e abrir chat novo |
| Erro ao criar anúncio | Token sem escopos pages_*, ou Página/Instagram não atribuídos ao System User |
listar_segmentacoes_rd vazio |
OAuth do RD Marketing expirado. Rodar conectar-rd-marketing.bat |
Enriquecedor¶
| Sintoma | Causa provável e ação |
|---|---|
| CNPJ salvo e nada aconteceu | Conferir se foi no campo da negociação, não da empresa. Depois abrir /ultimo-aviso |
| Anotação de erro na negociação | Abrir /falhas?key=... — guarda as 50 últimas por 90 dias, com o motivo exato que o RD devolveu |
| Calcula mas não grava | Trava de escrita desligada. Abrir / para ver; /ligar?key=... para religar |
| Duplicada antiga não detectada | Catálogo incompleto. Ver /catalogo — é montado em 4 pedaços entre 9h e 12h UTC |
| Mesmo cliente cadastrado 2x no mesmo dia | A trava do RD é por contato: com e-mail ou telefone escrito diferente ele não vê duplicata. Quem avisa é o robô, com "EMPRESA DUPLICADA (CADASTRADA HOJE)" — e ele não renomeia nada |
| Webhook parou | Conferir webhook no RD e o SEGREDO_WEBHOOK. O cron de 15 min cobre enquanto isso |
Onde ver logs no n8n¶
- Executions: workflow → aba
Executions→ clicar em qualquer execução para inspecionar nó a nó - Nó vermelho: erro — clicar para ver a mensagem completa
- Nó verde: sucesso — clicar para ver o output
- Google Sheets: logs de erros de nomenclatura e duplicatas (Coletor e Indexação)
- Tabela
logs_automacao: histórico de todos os erros capturados pelo Monitor Global