O "Power BI para restaurantes". Uma plataforma de Business Intelligence (BI) customizável para donos de food service transformarem dados operacionais massivos em decisões estratégicas.
Restaurantes geram dados complexos e volumosos através de múltiplos canais (iFood, Rappi, próprio app, presencial), mas os donos não possuem a ferramenta adequada para unificar, explorar e extrair insights rápidos. A dificuldade em responder perguntas cruciais como "Qual produto vende mais no iFood na quinta à noite?" ou "Em quais regiões o tempo de entrega piorou?" impede a tomada de decisões ágil e informada.
Power BI para Restaurantes é uma plataforma construída para dar poder a donos de restaurantes, como Maria, através da visualização de dados. O objetivo é fornecer uma ferramenta:
- Customizável e Sem Código: Permitir a criação de dashboards personalizados através de uma interface intuitiva.
- Focada em Métrica de Food Service: Apresentar métricas relevantes para a operação (RFM, Logística, Vendas).
- Comparativa e Analítica: Facilita a comparação de períodos e a aplicação de filtros avançados.
- Colaborativa: Capacidade de salvar e gerenciar layouts.
| Categoria | Tecnologia | Versão Principal | Justificativa e Utilização |
|---|---|---|---|
| Frontend (UI) | Flutter / Dart | SDK 3.x+ | Desenvolveu a aplicação web, priorizando UX, layout flexível e renderização de gráficos. |
| Backend (API) | Node.js (Express) | Node 18+ | API leve responsável por receber o payload de consulta e executar a query SQL dinâmica. |
| Banco de Dados | PostgreSQL | 14+ | Robusto para data warehousing e otimizado com Materialized Views. |
| Otimização de Dados | Materialized Views (MVs) | SQL/Postgres | MVs pré-calculam e pré-agregam métricas complexas (RFM, Sumários), garantindo consultas rápidas. |
| Scripts | Python 3 | Utilizado para scripts de inicialização, criação de schema e geração de dados. |
- Otimização de Dados (MVs): O uso de Materialized Views (MVs) é a principal decisão arquitetural de performance. Por exemplo, a MV
mv_delivery_performanceusa oPERCENTILE_CONT(0.9)para fornecer métricas de entrega estáveis (P90), pré-calculadas e prontas para o consumo. - Consulta Dinâmica Estável: O backend Node.js é projetado para:
- Aplicar prefixos de tabela (
p.ouh.) para resolver ambiguidades emJOINs complexos. - Gerenciar a agregação (
SUM,AVG) e a cláusulaGROUP BYde forma condicional, desativando-os em MVs que já são pré-agregadas por natureza (como RFM), o que evita erros de lógica e duplicação de agregação.
- Aplicar prefixos de tabela (
- Persistência de Estado: O estado do dashboard (layout, visualização e filtros) é salvo localmente (
SharedPreferences), permitindo o gerenciamento nomeado de layouts pelo usuário final.
- Git
- Node.js (v18+ ou superior)
- Python 3 (Com os módulos
psycopg2,argparse, eosinstalados) - Flutter SDK (Canal Stable)
- PostgreSQL Database (URL de conexão ativa)
-
Clone o repositório:
git clone [https://github.com/Guilherme-A-Silva/Analytics-Customiz-vel.git](https://github.com/Guilherme-A-Silva/Analytics-Customiz-vel.git) cd Analytics-Customiz-vel -
Configuração do Ambiente (.env): Crie um arquivo
.envna raiz do projeto contendo a URL de conexão com seu banco de dados PostgreSQL:DATABASE_URL="postgresql://user:password@host:port/dbname"
Execute os scripts Python na ordem exata para criar o schema e popular as Materialized Views (MVs). O argumento --db-url é obrigatório para conectar o script ao banco de dados.
| Passo | Script | Ação | Comando de Execução |
|---|---|---|---|
| 1 | create_schema.py |
Cria as tabelas transacionais (brutas). | python create_schema.py --db-url="$DATABASE_URL" |
| 2 | generate_data.py |
Popula as tabelas com os 500.000 registros de vendas simuladas. | python generate_data.py --db-url="$DATABASE_URL" |
| 3 | create_mvs.py |
Cria e atualiza as Materialized Views otimizadas. | python create_mvs.py --db-url="$DATABASE_URL" |
Inicie as aplicações a partir dos seus respectivos diretórios:
| Aplicação | Pasta | Comando |
|---|---|---|
| Backend (API) | backend/ |
cd backend npm install (primeira vez) node server.js |
| Frontend (Flutter) | analise_ui/ |
cd analise_ui flutter pub get (primeira vez) flutter run -d chrome |
A plataforma estará acessível no navegador na porta indicada pelo comando flutter run (geralmente http://localhost:8080/).
- Gerenciamento de Layouts: Salvar, carregar e excluir layouts completos de dashboard nomeados.
- Gráficos Pré-Definidos: Catálogo com mais de 10 templates focados em métricas de food service.
- Recarga Otimizada: Recarregamento individual de cartões e recarga automática após operações críticas.
- Formatação de UX: Conversão de datas ISO para
dd/MM, formatação condicional de valores (R$ vs. Unidades) e eliminação de sobreposição de rótulos. - Manual de Usuário: Pop-up detalhado no menu lateral explicando a função de cada botão.
Desenvolvido por: [Guilherme Augusto/Kelder] Email: [guilhermekelder@gmail.com] LinkedIn