
desafioc2s
实现了一个完整的汽车查询系统,支持客户端-服务器通信、Web界面和虚拟代理交互。
Repository Info
About This Server
实现了一个完整的汽车查询系统,支持客户端-服务器通信、Web界面和虚拟代理交互。
Model Context Protocol (MCP) - This server can be integrated with AI applications to provide additional context and capabilities, enabling enhanced AI interactions and functionality.
Documentation
Sistema de Consulta de Automóveis
Este projeto implementa um sistema completo para consulta de automóveis, com comunicação cliente-servidor via protocolo MCP, interface web responsiva e um agente virtual para interação no terminal.
Estrutura do Projeto
projeto_automoveis/: Projeto Django principalautomoveis/: Aplicação Django para o modelo de automóveistemplates/: Templates HTML para a interface webviews.py: Controladores para as páginas e APIsmodels.py: Modelo de dados dos automóveis
servidor_mcp.py: Implementação do servidor MCP para comunicação via socketcliente_mcp.py: Cliente MCP para comunicação com o servidoragente_virtual.py: Agente virtual para interação no terminalexecutar_agente.sh: Script para executar o agente virtual dentro ou fora do Dockerteste_agente.py: Script para testar a comunicação com o servidor MCPpopulate_automoveis.py: Script para popular o banco de dados com dados fictíciosdocker-compose.yml: Configuração dos serviços Docker (web, banco de dados, servidor MCP)
Requisitos
- Python 3.9+
- Django 3.2
- PostgreSQL (para ambiente Docker)
- Faker (para geração de dados fictícios)
- unittest (para execução de testes unitários)
Instruções para Execução
Usando Docker (Recomendado)
- Construa e inicie os containers:
docker-compose up -d --build
- Aplique as migrações (se necessário):
docker-compose exec web python manage.py migrate
- Popule o banco de dados com dados fictícios:
docker-compose exec web python populate_automoveis.py
- Acesse a interface web:
http://localhost:8000
- Para usar o agente virtual, execute o script auxiliar:
./executar_agente.sh
Ou diretamente:
docker-compose exec web python agente_virtual.py
Sem Docker
- Instale as dependências:
pip install -r requirements.txt
- Configure as variáveis de ambiente:
export DATABASE_URL=sqlite:///db.sqlite3
export PYTHONPATH=/caminho/para/o/projeto
- Aplique as migrações:
python manage.py migrate
- Popule o banco de dados:
python populate_automoveis.py
- Em um terminal, inicie o servidor MCP:
python servidor_mcp.py
- Em outro terminal, inicie o servidor web Django:
python manage.py runserver
- Em um terceiro terminal, inicie o agente virtual ou use o script auxiliar:
./executar_agente.sh
Ou diretamente:
python agente_virtual.py
Executando os Testes Unitários
O projeto inclui testes unitários para todas as partes principais do sistema:
- Testes Django: Testes para o modelo Automovel e para as views (index, api_automoveis, busca_rapida)
- Testes MCP: Testes para o cliente MCP (comunicação com o servidor)
- Testes Agente Virtual: Testes para o agente virtual (mapeamento de marcas, combustíveis e interação com o usuário)
Para executar todos os testes de uma vez, use o script run_tests.sh:
# Em ambiente local
./run_tests.sh
# Ou dentro do container Docker
docker-compose exec web bash -c "./run_tests.sh"
Detalhes dos Testes
-
Testes Django (
automoveis/tests.py):- Testes para o modelo Automovel (criação, representação string, métodos display)
- Testes para as views (index, api_automoveis, busca_rapida)
- Testes para os filtros e ordenação da busca rápida
-
Testes MCP (
tests/test_mcp_components.py):- Testes para o cliente MCP (envio de consultas, tratamento de respostas)
- Utiliza mocks para simular a comunicação com o servidor
-
Testes Agente Virtual (
tests/test_agente_virtual.py):- Testes para mapeamento de marcas (ex: "volkswagen" -> "VW", "chevrolet" -> "GM")
- Testes para mapeamento de combustíveis (ex: "flex" -> "F")
- Testes para exibição de resultados e interação com o usuário
Funcionalidades Principais
1. Agente Virtual (Terminal)
- Interface conversacional para busca de automóveis via terminal
- Coleta interativa de filtros (marca, modelo, ano, combustível, etc.)
- Mapeamento automático de nomes de marcas completos para códigos do banco de dados
- Exibição formatada dos resultados com preços em formato monetário
- Opção para realizar múltiplas consultas em uma única sessão
- Detecção automática do ambiente (Docker ou local) para conexão com o servidor MCP
2. Interface Web
- Página inicial com estatísticas do sistema
- Formulário de busca rápida com os seguintes recursos:
- Filtro por marca (dropdown com todas as marcas disponíveis)
- Filtro por modelo (busca parcial por texto)
- Filtro por tipo de combustível
- Filtro por disponibilidade
- Ordenação por preço (crescente/decrescente)
- Ordenação por quilometragem (crescente/decrescente)
- Ordenação por ano (mais novo/mais antigo)
- Exibição de resultados em tempo real via AJAX
- Design responsivo com Bootstrap
- Elementos visuais destacados para preço e quilometragem
- Indicadores coloridos de disponibilidade (verde para disponível, vermelho para indisponível)
3. Servidor MCP
- Comunicação via sockets TCP
- Processamento de filtros em formato JSON
- Construção dinâmica de consultas ao banco de dados
- Serialização de resultados para JSON
- Compatibilidade com ambiente Docker (bind em 0.0.0.0)
Fluxo do Sistema
Fluxo do Agente Virtual
- O usuário interage com o Agente Virtual no terminal
- O Agente coleta os parâmetros de busca de forma conversacional
- O Agente envia os filtros para o Servidor MCP via socket
- O Servidor MCP consulta o banco de dados Django
- O Servidor retorna os resultados para o Agente
- O Agente exibe os resultados de forma amigável para o usuário
- O Agente pergunta se o usuário deseja realizar uma nova consulta
Fluxo da Interface Web
- O usuário acessa a página inicial do sistema
- Preenche o formulário de busca rápida com os filtros desejados
- Ao submeter o formulário, uma requisição AJAX é enviada ao servidor
- O servidor processa os filtros e retorna os resultados em formato JSON
- O JavaScript atualiza a interface com os resultados formatados
- O usuário pode refinar a busca ou ordenar os resultados conforme necessário
Modelagem de Dados
O sistema utiliza um modelo Automovel com os seguintes campos:
- Marca (com opções pré-definidas)
- Modelo
- Ano de fabricação e modelo
- Motorização
- Combustível (Gasolina, Álcool, Diesel, Flex, Elétrico, Híbrido)
- Cor
- Quilometragem
- Número de portas
- Transmissão (Automática, Manual, Semi-automática)
- Preço
- Descrição
- Disponibilidade
Quick Start
Clone the repository
git clone https://github.com/valmorjunior/desafioc2sInstall dependencies
cd desafioc2s
npm installFollow the documentation
Check the repository's README.md file for specific installation and usage instructions.
Repository Details
Recommended MCP Servers
Discord MCP
Enable AI assistants to seamlessly interact with Discord servers, channels, and messages.
Knit MCP
Connect AI agents to 200+ SaaS applications and automate workflows.
Apify MCP Server
Deploy and interact with Apify actors for web scraping and data extraction.
BrowserStack MCP
BrowserStack MCP Server for automated testing across multiple browsers.
Zapier MCP
A Zapier server that provides automation capabilities for various apps.