Este projeto é um assistente inteligente via WhatsApp para entregadores gerenciarem suas operações diárias (ganhos, gastos, km, pacotes) usando IA (Gemini e Groq).
- whatsapp-bot (Node.js): Gerencia a conexão com o WhatsApp usando a biblioteca Baileys.
- backend (Python/FastAPI): Processa as mensagens, usa IA para extrair dados e salva no Supabase.
- Supabase: Banco de dados PostgreSQL na nuvem.
- Node.js 18+
- Python 3.11+
- Conta no Supabase
- API Key do Google Gemini
- API Key do Groq
- Crie um novo projeto no Supabase.
- Vá em SQL Editor e execute o conteúdo do arquivo
database/init.sql.
cd backend
python -m venv venv
source venv/bin/activate # No Windows: venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env- Preencha o
.envcom suas chaves do Supabase, Gemini e Groq.
cd whatsapp-bot
npm install
cp .env.example .env- Ajuste o
BACKEND_URLse necessário.
-
Iniciar o Backend:
cd backend uvicorn app.main:app --reload --port 8000 -
Iniciar o Bot:
cd whatsapp-bot npm startEscaneie o QR Code que aparecerá no terminal.
Ao receber uma imagem ou PDF de rotas nos grupos configurados, o bot solicita ao backend a leitura da planilha. O anexo é ignorado quando o nome, a legenda ou o texto reconhecido contiver NS, NOSHOW ou NO SHOW.
Somente são elegíveis rotas ROTA MISTA, PASSEIO ou CARRO PASSEIO. A escolha prioriza, nesta ordem, Urca, Tabajara(s), Copacabana/Copa, Ipanema e Botafogo; dentro da mesma prioridade, usa menor litragem e depois menor quantidade de pacotes.
No servidor, os processos são gerenciados pelo systemd. Use os comandos abaixo para controlar o sistema:
# Ver status de tudo
sudo systemctl status meibot-backend
sudo systemctl status meibot-bot
# Ver logs em tempo real
journalctl -u meibot-backend -f
journalctl -u meibot-bot -f# Reiniciar o sistema completo
sudo systemctl restart meibot-backend meibot-bot
# Parar o sistema
sudo systemctl stop meibot-backend meibot-bot
# Iniciar o sistema
sudo systemctl start meibot-backend meibot-botOs relatórios fechados são gerados por timers systemd versionados em deploy/systemd/.
# Ver próximos disparos
systemctl list-timers 'meibot-report-*'
# Ver logs dos jobs
journalctl -u meibot-report-weekly -n 80 --no-pager
journalctl -u meibot-report-monthly -n 80 --no-pagerRegras de período:
- Semanal: fecha segunda a sábado e roda no domingo às 00:10.
- Mensal: fecha o mês anterior e roda no dia 1 às 00:20.
- Backfill manual:
cd backend && python cron_reports.py mensal 2026-05-01 2026-05-31 --no-notify.
Se o bot desconectar ou você precisar trocar o WhatsApp vinculado, siga este procedimento:
-
Pare o serviço do bot:
sudo systemctl stop meibot-bot
-
Limpe a sessão antiga:
cd ~/MeiBot/whatsapp-bot rm -rf auth_info_baileys
-
Gere o novo QR Code manualmente:
npm start
Escaneie o código que aparecerá no terminal. Após confirmar a conexão no celular, aperte
Ctrl+Cno terminal. -
Volte o serviço para o modo automático:
sudo systemctl start meibot-bot
Mande no WhatsApp:
- Iniciar: "iniciar operação"
- Corrida: "fiz uma corrida de 20 reais no ifood 5km"
- Rota/Pacotes: "fiz um rota pelo correios com 120 pacotes, ganhei 240 reais e rodei 20km"
- Gasto: "abasteci 50 reais"
- Print: Envie um print da tela de ganhos do seu App.
- Pergunta: "quanto ganhei hoje?" ou "qual app tá melhor esse mês?"
- Correções: "Corrigir horário de início da operação dos Correios de hoje, o horário correto é 15:20" ou "Corrigir nome do porteiro da Rua Senador Vergueiro, 85. O nome correto é Joyce Cerqueira"
- Encerrar: "encerrar operação" (Você receberá um resumo detalhado).
Para rodar em produção no seu servidor:
- Use o
systemdpara manter os serviços rodando (veja oREADME_SERVER.mdpara exemplos). - Use o
cloudflaredpara expor o backend se precisar de acesso externo.