- Breve descrição: O BusCars é uma plataforma que agrega, normaliza e enriquece anúncios de veículos de múltiplos marketplaces em uma base centralizada. Seu principal valor é transformar dados fragmentados em inteligência de mercado e eficiência de busca para Vendedores e Clientes.
|
[cite_start]O sistema BusCars é uma plataforma robusta de **agregação e gerenciamento de veículos** concebida para modernizar a pesquisa e a compra no mercado automotivo brasileiro[cite: 39, 42]. [cite_start]Ele resolve a fragmentação de dados ao consolidar informações de diversas fontes, aprimorando a experiência do usuário por meio de uma interface intuitiva[cite: 79, 43]. [cite_start]O projeto atende à necessidade do *stakeholder* **Lucas Amaral Paes Leme Maestro**, um gestor do setor, que precisava de uma **gestão centralizada e eficiente**[cite: 45, 47]. [cite_start]O sistema entrega valor ao **Consolidar** informações de diferentes fontes, **Normalizar e Enriquecer** os dados com o valor da **Tabela FIPE** e análise de preço de mercado, e fornecer ferramentas de **inteligência de mercado**[cite: 82, 83, 48]. [cite_start]O BusCars é um sistema confiável, ágil e de fácil acesso que transforma a maneira como a pesquisa e a compra de veículos são realizadas[cite: 49].
|
|
- Links Úteis
- Sobre o Projeto
- Funcionalidades Principais
- Tecnologias Utilizadas
- Arquitetura
- Documentação de Casos de Uso
- Interfaces do Sistema
- Post Mortem (Lições Aprendidas)
- Instalação e Execução
- Autores
- Licença
- 🌐 Demo Online: Acesse a Aplicação Web
💻 Descrição: Link para a aplicação em ambiente de produção. Para ver o swagger clique aqui.
- 📖 Documentação Oficial: Leia o TCC-Doc-Projeto-BusCars.pdf
[cite_start]📚 Descrição: Acesso à documentação técnica completa do projeto[cite: 39].
- 📖 Repositório GitHub: Código Fonte da Aplicação BusCars
[cite_start]📚 Descrição: Repositório oficial contendo o código-fonte (
frontend,backend,app-scrappers)[cite: 560].
[cite_start]O sistema BusCars foi idealizado para modernizar a gestão interna do serviço de compra e venda de veículos e impulsionar o crescimento do negócio[cite: 49]. [cite_start]Ele existe para resolver a fragmentação de dados no mercado automotivo, onde a consulta manual de diversas plataformas exige tempo e é ineficiente[cite: 47]. [cite_start]O projeto atende à necessidade do stakeholder Lucas Amaral Paes Leme Maestro, um gestor do setor, que precisava de uma gestão centralizada[cite: 45, 47]. [cite_start]O sistema entrega valor ao Consolidar informações de diferentes fontes, Normalizar e Enriquecer os dados com o valor da Tabela FIPE e análise de preço de mercado, e fornecer ferramentas de inteligência de mercado[cite: 82, 83, 48]. [cite_start]O BusCars é um sistema confiável, ágil e de fácil acesso que transforma a maneira como a pesquisa e a compra de veículos são realizadas[cite: 49].
Liste as funcionalidades de forma clara e objetiva.
- [cite_start]🔎 Busca Inteligente (UC01): Permite ao Cliente e Vendedor buscar veículos utilizando filtros avançados em uma base unificada[cite: 81, 95, 96].
- [cite_start]📊 Análise de Preço (UC05): Enriquecimento dos anúncios com o valor de referência da Tabela FIPE e cálculo da posição percentual contra a média do mercado[cite: 82, 102, 137, 138].
- [cite_start]👁️ Visualização Unificada (UC03): Exibe anúncios de múltiplas fontes em uma única tela e formato padronizado, facilitando a comparação[cite: 79, 99, 100].
- [cite_start]🛠️ Curadoria de Conteúdo (UC07, UC06): Permite ao Administrador Validar Conteúdo [cite: 105] [cite_start]e Identificar Duplicatas [cite: 104] [cite_start]para manter a base de dados limpa e crível[cite: 88].
- [cite_start]⚙️ Monitoramento (UC08, UC09): Dashboard administrativo para Monitorar a Coleta de Dados [cite: 106] [cite_start]e Visualizar Métricas de Desempenho [cite: 107] do sistema.
[cite_start]A escolha da stack tecnológica se baseou na necessidade de equilibrar desempenho, confiabilidade e facilidade de manutenção[cite: 291].
- [cite_start]Linguagem: OCaml [cite: 293] [cite_start](Tipagem forte e estática para robustez e segurança [cite: 294]).
- [cite_start]Framework: Dream [cite: 293] [cite_start](Para construção de aplicações web e camada de aplicação [cite: 314, 313]).
- [cite_start]Banco de Dados: PostgreSQL [cite: 297] [cite_start](Para persistência estruturada, suporta dados semi-estruturados e indexação avançada [cite: 298, 317]).
- [cite_start]Cache/Filas: Redis [cite: 300] [cite_start](Para cache de alta frequência, sessões e coordenação de processos assíncronos [cite: 301, 319, 320]).
- [cite_start]Framework: Dream (Utilizado para renderização de HTML e gerenciamento da camada de apresentação [cite: 313]).
- [cite_start]Estilização: HTML e CSS[cite: 313].
- [cite_start]Containerização: Docker e Docker Compose [cite: 302] [cite_start](Para padronizar e orquestrar todos os serviços [cite: 303, 325]).
- [cite_start]Proxy Reverso: Nginx [cite: 305, 322] (Para roteamento interno e balanceamento de carga).
- [cite_start]Segurança/CDN: Cloudflare [cite: 306, 323] [cite_start](Camada de segurança, distribuição de conteúdo, resiliência e proteção contra DDoS [cite: 307, 324]).
[cite_start]O BusCars adota uma arquitetura baseada em camadas, concebida para garantir separação clara de responsabilidades e manutenibilidade[cite: 311]. [cite_start]O sistema é, essencialmente, um Backend Distributed System (Figura 24) que divide as responsabilidades entre um Core System e um Scrapping System[cite: 309].
- [cite_start]Backend (Núcleo): Camada de aplicação que processa a lógica de negócio, incluindo agregação, normalização, deduplicação e cálculo de indicadores[cite: 316].
- [cite_start]Persistência: O PostgreSQL é a camada de persistência central [cite: 317][cite_start], e o Redis gerencia o cache e as filas para processos assíncronos[cite: 319, 320].
- [cite_start]Infraestrutura (Edge): Nginx e Cloudflare atuam como a linha de frente para segurança e roteamento[cite: 322, 324].
Os modelos de projeto documentam a estrutura do sistema.
| Diagrama de Arquitetura | Detalhe da Arquitetura |
|---|---|
| Arquitetura Lógica (Macro) | Fluxo de Busca de Veículo |
| Modelo de Dados (Entidades) | Fluxo de Login |
| Infraestrutura (Implantação) | Fluxo de Validação de Conteúdo |
| Contrato | Detalhamento |
|---|---|
| Referência | US15(04,3) / UC04 (Buscar Oportunidade) |
| Operação | solicitarPainelAuditoriaEnriquecimento() |
| Pré-condições | 1. O ator deve estar autenticado e possuir o perfil de Administrador. 2. [cite_start]O Serviço de Enriquecimento deve ter executado o cálculo e persistido as métricas (FIPE/Desvio Padrão) no Banco de Dados[cite: 132]. |
| Pós-condições | 1. O painel de auditoria é exibido na interface do Administrador. 2. [cite_start]A interface apresenta a lista de modelos, o valor de referência FIPE e o Desvio Padrão calculado para cada um, permitindo a auditoria visual[cite: 132]. |
Definição: N3TA refere-se a Teste de Aceitação para a Necessidade 3 (Detalhes do Veículo). N3TI refere-se a Teste de Integração.
| Identificador | Necessidade | Caso de Teste | Ações Chave | Resultados Esperados |
|---|---|---|---|---|
| N3TA1 | Detalhes do Veículo | Acessar detalhes do veículo (Caminho Feliz) | [cite_start]Realizar busca, clicar em resultado, validar campos[cite: 465]. | [cite_start]Ficha técnica exibida com dados consolidados e normalizados[cite: 465]. |
| N3TA2 | Detalhes do Veículo | Exibição de Dados Enriquecidos | [cite_start]Acessar detalhes, localizar seção Análise de Preço, verificar formatação[cite: 467]. | [cite_start]Exibição do Valor FIPE e do Painel de Análise de Preço formatado, sem dados brutos[cite: 468]. |
| N3TI1 | Detalhes do Veículo | Detalhes ↔ Enriquecimento (FIPE) | [cite_start]Consulta por ID, API interna entre serviços e chamada HTTP FIPE[cite: 508]. | [cite_start]Ficha traz campos enriquecidos (valor FIPE) de forma consistente e resiliente[cite: 508]. |
| N3TI2 | Detalhes do Veículo | Resiliência: Falha na API Externa (FIPE) | [cite_start]Simulação de Timeout ou 500 na FIPE[cite: 510]. | [cite_start]O Serviço de Enriquecimento deve tratar a falha externa, retornando campos FIPE como vazios, permitindo que o Serviço de Detalhes prossiga e retorne ao frontend apenas os dados principais do veículo, sem interrupção[cite: 511]. |
- [cite_start]Tela de Login/Acesso (Figura 30): É o ponto de autenticação central do BusCars, sendo a pré-condição para acessar funcionalidades protegidas e dar início ao UC01 (Buscar carros)[cite: 366]. [cite_start]A tela exige a inserção de e-mail e senha, e links para recuperação e cadastro de novo usuário[cite: 369].
- [cite_start]Tela de Listagem de Resultados (Figura 32): O coração da experiência de busca[cite: 375]. [cite_start]Exibe os resultados da pesquisa em cards com informações-chave de forma unificada e padronizada, independentemente da fonte original[cite: 377]. [cite_start]Atende diretamente ao UC03 (Visualizar anúncios unificados)[cite: 379].
- [cite_start]Tela de Detalhes do Veículo (Figura 34): Fornece a página de detalhes completos e aprofundados[cite: 385]. [cite_start]O sistema enriquece o conteúdo com informações adicionais, como o valor de referência da Tabela FIPE, ajudando o comprador a ter uma visão completa e segura[cite: 387]. [cite_start]Realiza a funcionalidade UC02 (Acessar detalhes e informações)[cite: 388].
- [cite_start]Tela de Escopo do Dashboard (Figura 35): Serve como o painel de gestão dos anúncios e veículos atrelados diretamente à conta do Vendedor[cite: 393]. [cite_start]Exibe uma lista completa dos carros cadastrados e possui filtros de seleção que permitem ao Vendedor analisar e refinar seu próprio estoque[cite: 394, 396]. [cite_start]Relaciona-se à US02.1 e US03.1 aplicadas ao seu portfólio[cite: 396].
- [cite_start]Tela de Cadastro de Novo Veículo (Figura 36): É o ponto onde o Vendedor inicia o onboarding de um carro em seu inventário[cite: 398]. [cite_start]Coleta informações gerais (Marca, Modelo, Ano, Preço), utilizando listas canônicas para orientar a inserção de dados e garantir a normalização[cite: 399, 400]. [cite_start]Após a submissão, o sistema executa a validação de conteúdo (relacionada ao UC07)[cite: 402].
- [cite_start]Tela de Códigos de Acesso (Figura 37): Interface designada para que o Vendedor visualize e gerencie apenas as chaves de acesso atreladas diretamente à sua conta[cite: 404]. [cite_start]Permite o controle sobre códigos de convite que ele possa ter recebido para distribuição, apoiando o crescimento da plataforma[cite: 406, 408].
- [cite_start]Tela de Controle de Anúncios (Figura 38): Interface restrita que centraliza o poder de moderação e administração de todas as informações[cite: 413]. [cite_start]Relaciona-se diretamente aos casos de uso de Validar Conteúdo (UC07) e Identificar Duplicatas (UC06)[cite: 414]. [cite_start]Permite editar e aprovar anúncios pendentes e remover registros repetidos[cite: 416].
- [cite_start]Tela de Controle de Usuários (Figura 39): Interface essencial para a gestão e manutenção da base de usuários[cite: 419]. [cite_start]Permite ao Administrador desativar contas, modificar perfis e remover usuários [cite: 422][cite_start], sendo vital para a segurança e integridade dos dados[cite: 423].
- [cite_start]Tela de Controle de Acesso e Usuários (Figura 40): Ferramenta de alta criticidade para gerenciar as permissões e a entrada de novos atores[cite: 425]. [cite_start]Permite a promoção/rebaixamento de perfis e a geração e distribuição de novos códigos de acesso, assegurando um controle de qualidade na expansão da base[cite: 426, 428, 429].
[cite_start]O sucesso foi marcado pela entrega do núcleo da proposta de valor, validando a ideia de consolidar e enriquecer dados[cite: 540, 541]. [cite_start]Arquitetonicamente, a concepção em camadas e o uso do Framework Dream (OCaml) garantiram a separação de responsabilidades e a manutenibilidade[cite: 542]. [cite_start]O uso estratégico do PostgreSQL e Redis para cache e filas resultou em performance otimizada para buscas[cite: 543]. [cite_start]A infraestrutura via Docker Compose, Nginx e Cloudflare assegurou resiliência e controle sobre a escalabilidade[cite: 544].
[cite_start]O projeto enfrentou desafios na automação de Testes de Integração (TI) contra APIs externas (FIPE, Scrapers), resultando em um débito técnico[cite: 548]. [cite_start]Outra dificuldade significativa foi a complexidade e o tempo gasto na Normalização dos Dados, pois padronizar campos de fontes inconsistentes exigiu mais esforço do que o previsto[cite: 549]. [cite_start]Funcionalidades avançadas de escala, como alertas de oportunidades, ficaram com escopo reduzido[cite: 550].
[cite_start]O desenvolvimento evidenciou que é imperativo priorizar a automação de Testes de Resiliência (TI) em sistemas de agregação[cite: 553, 554]. [cite_start]Fica o aprendizado de que a fase de Transformação de Dados (Normalização) deve ser tratada como um módulo de software de missão crítica, recomendando-se investir em frameworks de ETL robustos desde o início[cite: 555, 556]. [cite_start]Por fim, é essencial definir e monitorar KPIs de qualidade de dados ativamente para manter a credibilidade da plataforma[cite: 557, 558].
[cite_start]O BusCars é executado usando Docker Compose para orquestrar os serviços (Frontend, Backend, Redis, PostgreSQL) e garantir a consistência do ambiente[cite: 325].
- [cite_start]Docker e Docker Compose[cite: 302].
- Git.
1. Clone o Repositório:
git clone [https://github.com/ICEI-PUC-Minas-PPLES-TI/plf-es-2025-2-tcci-0393100-dev-luis-vaz-e-lucas-lima](https://github.com/ICEI-PUC-Minas-PPLES-TI/plf-es-2025-2-tcci-0393100-dev-luis-vaz-e-lucas-lima)
cd plf-es-2025-2-tcci-0393100-dev-luis-vaz-e-lucas-lima2. Suba todos os serviços: Execute o comando na raiz do projeto:
Bash
docker-compose up --build -d 💡 O parâmetro --build garante que as imagens mais recentes do projeto sejam geradas, e -d executa em segundo plano.
3. Acesso: O Front-end estará acessível na porta configurada pelo Nginx/Docker.
👥 Autores O projeto foi elaborado por alunos do curso de Engenharia de Software da PUC Minas.
Lucas Araujo Borges de Lima - ![]()
Luis Gustavo Vaz - ![]()
📄 Licença Este projeto é distribuído sob a Licença MIT.