Xata
Start fresh or branch an existing Postgres in seconds, and scale to zero when it is idle.
AI translation
Painel BI de varejo (Dunnhumby): HTML + ECharts, dados pré-agregados do DuckDB do projeto de RAG, validado por reconciliação e Playwright
Translation pending
DataGitHub @caiosantosho2-dotcomOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Abrir o painel: https://caiosantosho2-dotcom.github.io/retail-bi-dashboard/
Painel de BI em uma página web, tema escuro, com 3 abas (Visão Geral, Categorias e Cestas & Marcas) e uma página de
metodologia, com filtros globais e clique que filtra, como no Power BI. O painel é consumidor de um lakehouse: ele lê
JSONs com contrato e não faz a conta dos números. Os modelos vieram do projeto "Assistente Comercial + Análise de Clientes"
(projeto de RAG) e foram conferidos. O escopo desta versão está em docs/spec_painel_v4.md.
| Aba | Para quem | O que mostra |
|---|---|---|
| Visão Geral | diretoria e gerência | 6 KPIs com a variação contra o ano anterior nas lojas comparáveis (like-for-like), o faturamento ao longo do período selecionado com o ano anterior tracejado, o faturamento por segmento, quem o CRM deve acionar com capacidade para N clientes (dois objetivos, comparados com a regra simples no teste), onde agir no mix (dispersão de participação × crescimento, com 4 quadrantes e 3 departamentos para defender primeiro) e os departamentos com o traço do ano anterior |
| Categorias | comercial e category management | "Todos os departamentos" ou a ficha de um: faturamento, variação, clientes e quem compra por segmento, o faturamento ao longo do período, o que se compra junto (pares de subcategorias em frases: "Quem compra A também leva B em X% das vezes"), o perfil contra os outros departamentos, as 10 maiores subcategorias e o dinheiro em risco |
| Cestas & Marcas | comercial e category management | quantas subcategorias fazem 80% do faturamento, a rede de cestas das 80 maiores subcategorias (clicar num nó mostra com o que ele vai junto), os pares que cada segmento compra junto bem mais que a média, e a marca própria e a concentração de fornecedores por departamento |
| Metodologia e validação (link no rodapé) | quem quer ver o rigor | a curva ROC do modelo de risco de pausa contra a regra simples, a matriz de confusão, o CLV por segmento com o backtest e o teste de desconto entre segmentos |
O gráfico de tempo mostra só o período selecionado: um ponto por dia em 4 semanas e um por semana em 13, 26 semanas e na base inteira. Em 4, 13 e 26 semanas, a linha é das lojas comparáveis do período, com o ano anterior tracejado. Por isso a soma da linha dá menos que o KPI de faturamento, que conta todas as lojas. Na base inteira, a linha é de todas as lojas e não há ano anterior.
Os filtros de período (4, 13 e 26 semanas ou a base inteira), segmento e departamento valem em todas as abas onde fazem sentido; quando um não se aplica, a aba diz por quê. A seleção funciona igual em todo gráfico que filtra: clicar filtra, clicar de novo desfaz, Ctrl + clique soma, e Esc ou um clique no fundo vazio limpa.
Onde agir no mix nomeia no gráfico só os 3 destaques e o departamento selecionado; os outros pontos têm tooltip. O bloco não mostra gráfico quando o recorte é só "Em pausa": o segmento é definido por ter parado de comprar, então o crescimento cai por construção. Com "Em pausa" junto de outros segmentos, o bloco mostra um aviso. A Visão Geral é a única aba que rola a página em 1440×900.
| Categorias | Cestas & Marcas |
|---|---|
| Metodologia e validação | Celular |
|---|---|
CSV da Dunnhumby → lakehouse (bronze → silver → gold) → JSON com contrato → este painel
O lakehouse é um projeto separado, em Delta Lake, ainda não publicado (o link entra aqui quando ele for). É lá que moram a limpeza, as métricas, os modelos e a conferência. Este repositório cuida só de levar os dados para o site e de mostrá-los.
Nenhum número é escrito à mão nem calculado no navegador além de somas do que soma (faturamento, desconto).
contracts/, grão declarado e hash no manifest.json.
scripts/importar_lakehouse.py valida tudo antes de copiar e, se algo falhar, não toca
em site/data/ (tests/test_importar_lakehouse.py).manifest.json.tests/gestos.js).tests/cache_cenarios.js).docs/validacao/.O site é estático e roda sozinho com os JSONs já importados em site/data/, sem banco nem lakehouse:
python -m http.server 8000 --directory site
e abra http://localhost:8000 (não por file://: o fetch dos JSONs falha nele). A publicação no GitHub Pages é
feita pelo workflow .github/workflows/pages.yml a cada mudança em site/ na main. O
workflow roda scripts/versionar_site.py, que põe JS e CSS numa pasta com o hash do conteúdo,
para quem tem cache antigo não misturar versões. Localmente, esse passo não é necessário.
Exige o projeto do lakehouse. O site publicado não precisa dele.
No lakehouse, rode o pipeline, que vai da bronze à exportação e à conferência:
python -m src.pipeline
Neste repositório, copie config.example.yaml para config.yaml (fora do git) e preencha lakehouse_export.
Crie o ambiente: python -m venv venv e venv\Scripts\pip install -r requirements.txt.
Importe:
venv\Scripts\python scripts\importar_lakehouse.py
O importador confere a versão do contrato (5.1), valida cada JSON e confere bytes e sha256 contra o manifest. Só depois troca
site/data/ e mostra um resumo: arquivos copiados e removidos, bytes da abertura, base e commit do lakehouse. Ele avisa se a
exportação veio de um estado sem commit. Importar não prova que a conta está certa: isso quem confere é o pipeline.
causal_data): existem na base, mas ficam para uma fase futura.Base pública Dunnhumby, The Complete Journey: 2.500 domicílios, 2 anos de compras. O painel mostra só agregados e não usa demografia.
Painel v4 pronto na branch v4-lakehouse, ainda não publicado: o site no ar continua sendo o redesenho v3, com 4 abas e o
pipeline antigo (guardado na tag v3-rag). O que mudou e por quê está em
docs/mudancas/resumo_v4.md, e a validação em
docs/validacao/painel_v4.md.
v4.1, na branch v4-1-decisao, validada no navegador e ainda não publicada: os dois blocos de decisão na Visão Geral. O que mudou está em
docs/mudancas/resumo_v4_1.md, e a validação em
docs/validacao/v4_1_painel.md.
Fase futura, fora do escopo atual: os dados de encarte e ponta de gôndola (causal_data).