📊 Dashboard de Inteligência de Vendas - Delivery (Coco Bambu Style)
Este projeto simula um ecossistema de dados para uma operação de delivery de alto volume, como o Coco Bambu. O objetivo é transformar dados brutos de uma API pública em um Dashboard Executivo para suporte à tomada de decisão.
🖼️ Demonstração
resultado final: dados transformados em métricas de negócio. Aqui, podemos ver o faturamento consolidado e o ticket médio calculado após o cruzamento de três fontes diferentes de dados.
resultado final: os dados da api também são salvos em uma tabela caso necessário.Se for necessário armazenar em um banco de dados,essa tabela de visualização deve ser convertida para uma boa arquitetura MER.Pode-se notar que o a coluna data tem atributos multivaloradas,o que é um erro de F1(Os dados não estão em F1,Forma normal 1).Deixei o erro de propósito para fins educacionais,demonstrando a importância da normalização em arquiteturas MER (Modelo Entidade-Relacionamento) robustas.
Ponto 3 na prática,lógica responsável por tentar contato com a API algumas vezes para consumir esses dados antes de retornar erro ao usuário.
🧠 A Visão do Arquiteto
O projeto foi construído seguindo o princípio de Responsabilidade Única (SRP). Cada parte do código tem uma missão clara:
Extractor: O "garimpeiro" que busca os dados brutos.
Transformer: O "artesão" que limpa e cruza informações.
DatabaseManager: O "guardião" que garante a persistência no MySQL.
Pipeline: apenas coordena a execução entre as partes
App (Streamlit): A "vitrine" que traduz números em insights visuais.
🚧 Desafios Técnicos e Superações
Durante o desenvolvimento, identifiquei limitações na fonte de dados que poderiam comprometer a qualidade do dashboard. Abaixo, explico como contornei cada uma:
-
Adaptação de Domínio: não achei uma API que simula exatamente o contexto de restaurantes.a mais proxima que achei foi uma api que simula um e-comerce.então tive que usá-la.Então,Apliquei uma camada de abstração no Transformer para tratar os dados de forma que simulassem métricas reais de delivery (como Ticket Médio por pedido).
-
Problema do "Dashboard Vazio" (Limitação da API)
Limitação: Por padrão, a API retornava apenas 10 a 20 registros, o que tornava os gráficos irrelevantes para uma análise de negócio.
Solução: Implementei um parâmetro de limit=50 dinâmico na URL de extração.
Motivo: Isso forçou a API a entregar o volume máximo de dados disponível, permitindo uma visualização de tendências mais robusta.
- Dados Desconexos (Cruzamento de Informações)
Limitação: Os dados de vendas (Carts) vinham apenas com IDs, sem nomes de produtos ou preços.
Solução: Desenvolvi um método de Merge (JOIN) no Pandas que unifica Carts, Products e Users em uma única tabela mestre.