Comandos CLI e rotinas agendadas: o que roda enquanto você dorme
Descobri numa sexta que uma rotina estava parada havia dias. Ninguém viu, porque falha silenciosa não manda aviso.

Numa sexta à tarde, um cliente perguntou por que não tinha recebido a mensagem da campanha. Fui olhar. A rotina de processamento estava parada havia três dias. Ninguém percebeu, porque coisa que falha em silêncio não manda aviso. Os comandos CLI existem para rodar sozinhos, e essa autonomia tem um preço: alguém precisa vigiar a vigilância.
No começo a gente tratava esses comandos como assunto de infraestrutura, coisa que o pessoal técnico resolve. Errado. Metade deles produz efeito direto no que o cliente recebe e no que o painel mostra. Quando param, o número fica errado e o problema aparece disfarçado de outra coisa.
Vou listar o que existe, o que cada um faz e como montar um agendamento que avisa quando quebra. Para o lado dos eventos que chegam de fora, o complemento está em webhooks do CRM.
Os comandos CLI disponíveis
| Comando | O que faz | O que quebra quando ele para |
|---|---|---|
| Campanhas | Processa as campanhas do CRM | Cliente não recebe e o número de alcance mente |
| Delay do chatbot | Processa os atrasos programados do bot | Conversa trava no meio do fluxo automatizado |
| Health check | Checagem operacional do CRM e WhatsApp | Você perde o alarme e descobre a falha pelo cliente |
| HotFolder runner | Executa o processamento da pasta monitorada | Arquivo entra e fica parado esperando alguém |
| Alinhamento de schema | Checa e alinha a estrutura do banco | Recurso novo parece quebrado sem motivo aparente |
| Seed de fluxos | Carrega fluxos de WhatsApp e fluxos com agentes | Ambiente novo nasce vazio e alguém monta na mão |
| Sincronização de marketplace | Renova tokens, busca pedidos e detecta delta de estoque e preço | Pedido não entra e o estoque anunciado descola do real |
A sincronização de marketplace merece atenção extra
Esse comando aceita execução completa ou por parte: só tokens, só pedidos, só estoque, só preços ou só a fila. Aceita também filtro de empresa, limite e saída em JSON. Essa granularidade parece luxo até o dia em que a renovação de token falha e você precisa rodar apenas essa etapa sem mexer no resto.
- Modo completo para o agendamento normal do dia a dia.
- Modo tokens quando um canal derruba a autenticação e você precisa restabelecer rápido.
- Modo pedidos para recuperar o que ficou para trás depois de uma indisponibilidade.
- Modos estoque e preços para tratar o descolamento entre o anunciado e o real.
- Modo fila para drenar o processamento acumulado sem disparar tudo de novo.
- Filtro de empresa e limite para testar em ambiente com várias empresas sem afetar todas.
- Saída em JSON quando outro sistema precisa ler o resultado da execução.
O contexto de canais, pedidos e estoque centralizado está em marketplaces e WAHub.
Agendamento que avisa quando quebra
- Escreva o que cada rotina garanteUma frase por comando, dizendo o efeito visível quando ele funciona. Sem isso ninguém sabe o que perdeu quando ele para.
- Defina a janela de execuçãoRotina pesada em horário de pico atrapalha o uso normal. Rotina que precisa de dado fresco não pode rodar de madrugada.
- Use o health check como sentinelaEle existe para dizer se o conjunto está de pé. Ler o resultado dele todo dia custa um minuto.
- Grave a saída em algum lugar visívelExecução que não deixa registro é execução que ninguém consegue auditar depois do incidente.
- Combine quem olha e quandoNome de pessoa e horário. Rotina sem vigia é a mesma coisa que rotina sem agendamento.
Alinhamento de schema e o recurso que "não funciona"
Esse comando me poupou horas de investigação inútil. Vários recursos dependem de estruturas específicas no banco. Quando elas não estão lá, o sistema não explode: ele simplesmente deixa de aplicar aquela camada, e a tela continua mostrando a opção. O resultado é um recurso que parece quebrado sem motivo. Rodar a checagem de schema deveria ser o primeiro passo de qualquer diagnóstico depois de uma atualização.
Rotina parada estraga indicador
Essa conexão demorou pra ficar clara na minha cabeça. Se o processamento de campanha parou, o alcance no painel cai. Se a sincronização de pedidos falhou, o faturamento do dia parece menor. O gestor olha o número, estranha, monta hipótese comercial e vai atrás do time de vendas. O problema era uma rotina agendada. Antes de investigar queda, confira se tudo o que alimenta o número rodou. Esse reflexo faz parte da qualidade de dados.
- Todas as rotinas do dia rodaram até o fim?
- O health check está verde hoje, e alguém olhou?
- A fila de processamento está drenando ou acumulando?
- Existe registro da última execução de cada comando?
- Alguém é avisado quando uma execução falha, ou você descobre pelo cliente?
Seeds e ambientes novos
Os comandos de seed carregam fluxos de WhatsApp e fluxos com agentes, e existe também geração de SQL manual quando o caminho por comando não se aplica. Isso importa em implantação: ambiente novo pode nascer com os fluxos prontos em vez de alguém montar tudo na mão e esquecer metade. Separação por empresa faz parte do desenho, então vale conferir o resultado em cada uma antes de liberar.
Por onde eu começaria
Liste as rotinas agendadas do seu ambiente e, ao lado de cada uma, escreva o nome de quem descobre primeiro quando ela falha. Se em alguma linha a resposta for "o cliente", comece por essa. Depois, cruze com o acesso externo descrito em API REST do CRM, que é a outra metade do que roda sem alguém olhando.