Um chatbot inteligente desenvolvido com OpenAI que consulta o banco de dados MongoDB do ParcelaTudo, fornecendo informações sobre placas de veículos, RENAVAM, documentos e débitos de forma educada e profissional.
- Integração com OpenAI: Utiliza GPT-4.1-mini para processamento de linguagem natural
- Bot Telegram: Interface conversacional via Telegram para fácil acesso
- Banco de Dados MongoDB: Conexão real com banco ParcelaTudo (modo somente leitura)
- Sistema de Roteamento Inteligente: Analisa consultas e direciona para coleções específicas
- Histórico de Conversas: Mantém contexto das conversas por usuário
- API REST: Interface HTTP completa para integração com outros sistemas
- Correção Ortográfica: Sistema de correção automática de consultas
- Consultas por Múltiplos Critérios: Placas, RENAVAM, UF, documentos e débitos
- Node.js (versão 16 ou superior)
- Chave da API OpenAI
- Token do Bot Telegram (obtenha em @BotFather)
- String de conexão MongoDB do ParcelaTudo
- OpenAI (^4.20.1): Integração com API OpenAI
- Express (^4.18.2): Framework web
- Mongoose (^8.0.3): ODM para MongoDB
- node-telegram-bot-api (^0.64.0): Bot Telegram
- dotenv (^16.3.1): Gerenciamento de variáveis de ambiente
- Helmet (^7.1.0): Middleware de segurança
- CORS (^2.8.5): Cross-Origin Resource Sharing
- Morgan (^1.10.0): Logger de requisições HTTP
- Nodemon (^3.0.1): Auto-reload em desenvolvimento
-
Clone o repositório:
git clone <seu-repositorio> cd ChatbotProject2
-
Instale as dependências:
npm install
-
Configure as variáveis de ambiente:
Crie um arquivo
.env
na raiz do projeto com suas configurações:# OpenAI Configuration OPENAI_API_KEY=sua_chave_da_api_openai_aqui # Telegram Configuration TELEGRAM_BOT_TOKEN=seu_token_do_bot_telegram_aqui # MongoDB Configuration DATABASE_URL=mongodb://usuario:senha@host:porta/database # Server Configuration PORT=3000 NODE_ENV=development
# Modo desenvolvimento (com auto-reload)
npm run dev
# Modo produção
npm start
O servidor estará disponível em http://localhost:3000
- Procure pelo seu bot no Telegram (nome que você definiu no @BotFather)
- Envie sua primeira mensagem com sua pergunta
- O bot responderá de forma educada e profissional
- Continue a conversa naturalmente
- Linguagem Natural: Digite suas perguntas normalmente
- Exemplos de Consultas:
- "Consulta placa ABC1234"
- "Buscar dados do RENAVAM 12345678901"
- "Placas do Paraná criadas recentemente"
- "Débitos da placa XYZ9876"
- "Documentos relacionados à placa DEF5678"
- "Últimas placas criadas em São Paulo"
curl -X POST http://localhost:3000/chat \
-H "Content-Type: application/json" \
-d '{
"message": "Consulta placa ABC1234",
"userId": "user123"
}'
Resposta:
{
"success": true,
"message": "📋 DADOS DA PLACA ABC1234:\n• UF: PR\n• Documento: 12345678901\n• Status: Ativo\n• Última atualização: 2024-01-15",
"databaseData": {
"placa": "ABC1234",
"uf": "PR",
"documento": "12345678901"
}
}
curl http://localhost:3000/
curl -X POST http://localhost:3000/connect-database
curl -X DELETE http://localhost:3000/chat/history/user123
curl http://localhost:3000/stats
curl http://localhost:3000/intents
curl -X POST http://localhost:3000/test-routing \
-H "Content-Type: application/json" \
-d '{
"query": "consulta placa ABC1234"
}'
ChatbotProject2/
├── src/
│ └── index.js # Servidor principal Express
├── services/
│ ├── openaiService.js # Serviço OpenAI com lógica do chatbot
│ ├── telegramService.js # Serviço do bot Telegram
│ ├── mongoService.js # Conexão e consultas MongoDB
│ ├── databaseRouter.js # Sistema de roteamento inteligente
│ ├── hybridDatabaseRouter.js # Roteador híbrido avançado
│ └── spellCorrectionService.js # Correção ortográfica
├── models/ # Modelos de dados (se aplicável)
├── package.json # Dependências e scripts
├── .env # Configurações (criar manualmente)
├── .gitignore # Arquivos ignorados pelo Git
└── README.md # Este arquivo
O sistema está totalmente implementado e conecta-se ao banco MongoDB do ParcelaTudo em modo somente leitura.
- Conexão MongoDB: Conecta automaticamente ao banco usando
DATABASE_URL
- Sistema de Roteamento: Analisa consultas e direciona para coleções específicas
- Consultas Especializadas:
- Consultas por placa de veículo
- Consultas por RENAVAM
- Filtros por UF/estado
- Consultas de débitos e multas
- Consultas por documentos
// Variável de ambiente necessária
DATABASE_URL=mongodb://usuario:senha@host:porta/database
// O sistema conecta automaticamente com permissões somente leitura
// Configurações de segurança incluídas:
// - readPreference: 'secondaryPreferred'
// - readConcern: { level: 'majority' }
// - maxPoolSize: 10
// - serverSelectionTimeoutMS: 5000
O chatbot utiliza um sistema avançado que inclui:
- Ser educado e profissional
- Sempre consultar o banco de dados ParcelaTudo
- Nunca inventar informações
- Apresentar dados reais encontrados no banco
- Formatar respostas de forma clara e organizada
- Análise de Intenção: Identifica o tipo de consulta automaticamente
- Mapeamento de Keywords: Reconhece termos relacionados a placas, RENAVAM, UF, etc.
- Direcionamento Inteligente: Encaminha consultas para coleções específicas
- Correção Ortográfica: Corrige automaticamente erros de digitação
placa_consulta
: Consultas por placa de veículorenavam_consulta
: Consultas por RENAVAMuf_consulta
: Filtros por estado/UFdebitos_consulta
: Consultas de débitos e multasdocumento_consulta
: Consultas por documentos
- Chaves de API são carregadas via variáveis de ambiente
- Middleware de segurança (Helmet) configurado
- Validação de entrada nas rotas
- Tratamento de erros adequado
- Conexão MongoDB em modo somente leitura
- Configurações de segurança para banco de dados
- Timeout e limites de conexão configurados
O serviço fornece estatísticas em tempo real:
- Número de conversas ativas
- Status da configuração da API OpenAI
- Status da conexão com MongoDB
- Informações do bot Telegram
- Parâmetros do modelo em uso
- Histórico de consultas por usuário
- Estatísticas de roteamento de consultas
- Autenticação/Autorização: Sistema de login para usuários
- Logs Detalhados: Sistema de logging avançado
- Testes Automatizados: Suite de testes completa
- Dashboard Web: Interface web para monitoramento
- Relatórios: Geração de relatórios de consultas
- Cache Inteligente: Sistema de cache para consultas frequentes
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature
) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature'
) - Push para a branch (
git push origin feature/AmazingFeature
) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE
para mais detalhes.
Se você encontrar algum problema ou tiver dúvidas:
- Verifique as dependências:
npm install
- Configure as variáveis de ambiente: Crie o arquivo
.env
com as configurações necessárias - Teste a conexão: Use o endpoint
/connect-database
para verificar a conexão MongoDB - Verifique os logs: O servidor mostra logs detalhados no console
- Teste o roteamento: Use
/test-routing
para verificar se as consultas estão sendo direcionadas corretamente - Verifique estatísticas: Use
/stats
para ver o status dos serviços
Desenvolvido com ❤️ para o ParcelaTudo