Skip to content

SoGabiMano/ChatbotProject2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Chatbot ParcelaTudo 🤖

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.

🚀 Características

  • 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

📋 Pré-requisitos

  • 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

📦 Dependências

Principais:

  • 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

Segurança e Middleware:

  • 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

Desenvolvimento:

  • Nodemon (^3.0.1): Auto-reload em desenvolvimento

🛠️ Instalação

  1. Clone o repositório:

    git clone <seu-repositorio>
    cd ChatbotProject2
  2. Instale as dependências:

    npm install
  3. 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
    
    

🚀 Como Usar

Iniciar o Servidor

# Modo desenvolvimento (com auto-reload)
npm run dev

# Modo produção
npm start

O servidor estará disponível em http://localhost:3000

Usar o Bot no Telegram

  1. Procure pelo seu bot no Telegram (nome que você definiu no @BotFather)
  2. Envie sua primeira mensagem com sua pergunta
  3. O bot responderá de forma educada e profissional
  4. Continue a conversa naturalmente

Como Interagir

  • 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"

API Endpoints

1. POST /chat - Enviar mensagem para o chatbot

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"
  }
}

2. GET / - Status do servidor

curl http://localhost:3000/

3. POST /connect-database - Testar conexão com banco

curl -X POST http://localhost:3000/connect-database

4. DELETE /chat/history/:userId - Limpar histórico

curl -X DELETE http://localhost:3000/chat/history/user123

5. GET /stats - Estatísticas do serviço

curl http://localhost:3000/stats

6. GET /intents - Listar intenções disponíveis

curl http://localhost:3000/intents

7. POST /test-routing - Testar roteamento de consulta

curl -X POST http://localhost:3000/test-routing \
  -H "Content-Type: application/json" \
  -d '{
    "query": "consulta placa ABC1234"
  }'

🏗️ Estrutura do Projeto

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

🔧 Configuração do Banco de Dados

O sistema está totalmente implementado e conecta-se ao banco MongoDB do ParcelaTudo em modo somente leitura.

Funcionalidades Implementadas:

  1. Conexão MongoDB: Conecta automaticamente ao banco usando DATABASE_URL
  2. Sistema de Roteamento: Analisa consultas e direciona para coleções específicas
  3. Consultas Especializadas:
    • Consultas por placa de veículo
    • Consultas por RENAVAM
    • Filtros por UF/estado
    • Consultas de débitos e multas
    • Consultas por documentos

Configuração da Conexão:

// 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

🎯 Sistema de Inteligência

O chatbot utiliza um sistema avançado que inclui:

Prompt Especializado:

  • 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

Sistema de Roteamento:

  • 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

Tipos de Consulta Suportados:

  • placa_consulta: Consultas por placa de veículo
  • renavam_consulta: Consultas por RENAVAM
  • uf_consulta: Filtros por estado/UF
  • debitos_consulta: Consultas de débitos e multas
  • documento_consulta: Consultas por documentos

🔒 Segurança

  • 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

📊 Monitoramento

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

🚧 Funcionalidades Futuras

  1. Autenticação/Autorização: Sistema de login para usuários
  2. Logs Detalhados: Sistema de logging avançado
  3. Testes Automatizados: Suite de testes completa
  4. Dashboard Web: Interface web para monitoramento
  5. Relatórios: Geração de relatórios de consultas
  6. Cache Inteligente: Sistema de cache para consultas frequentes

🤝 Contribuição

  1. Faça um fork do projeto
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

📝 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

🆘 Suporte

Se você encontrar algum problema ou tiver dúvidas:

  1. Verifique as dependências: npm install
  2. Configure as variáveis de ambiente: Crie o arquivo .env com as configurações necessárias
  3. Teste a conexão: Use o endpoint /connect-database para verificar a conexão MongoDB
  4. Verifique os logs: O servidor mostra logs detalhados no console
  5. Teste o roteamento: Use /test-routing para verificar se as consultas estão sendo direcionadas corretamente
  6. Verifique estatísticas: Use /stats para ver o status dos serviços

Desenvolvido com ❤️ para o ParcelaTudo

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published