Dane raportowe
Dane raportowe
Wszystkie dane raportowe są statycznymi plikami JSON w katalogu public/data/. Vite serwuje je bezpośrednio — brak backendu, brak API.
Konwencja nazewnictwa plików
public/data/T{tableId}/T{tableId}L{listId}{locationId}.json
Przykład: T1L12830.json → tabela T1, lista L1, lokalizacja 2830
Listy (list_id)
| Wyświetlana nazwa | list_id | Przykładowy plik |
|---|---|---|
| Rafał Lubak | L1 | T1L12830.json |
| Rafał Wieczorek | L2 | T1L22830.json |
| Andrzej Chmielewski | L3 | T1L32830.json |
W selektorze UI wyświetlany jest format: Rafał Lubak (L1). Kod mapuje nazwę → list_id przy budowaniu ścieżki do pliku.
Sekcje raportu (table_id)
| table_id | Sekcja | Format danych |
|---|---|---|
| T1 | Informacje o wolumenie miesięcznym | ReportRow[] |
| T2 | Kluczowe wskaźniki miesięczne (KPI) | KpiRow[] |
| T5 | Sprzedaż od początku roku (YTD) | ReportRow[] |
Każda sekcja w DOM posiada atrybut data-table-id="T1" — przydatne przy automatyzacji lub scrapingu.
Format JSON — T1 i T5 (ReportRow[])
[
{
"id": "2026",
"label": "2026",
"cells": [
{ "value": "88 045" },
{ "value": "79 546" },
{ "value": "X", "highlight": true },
{ "value": "196 424", "highlightBg": true }
]
}
]
Pola CellValue
| Pole | Typ | Opis |
|---|---|---|
value |
string |
Wyświetlana wartość komórki |
highlight |
boolean? |
Tekst w kolorze amber (text-amber-500) |
highlightBg |
boolean? |
Tło amber (bg-amber-500/15) + highlight |
Format JSON — T2 (KpiRow[])
[
{
"id": "avg-sales",
"label": "Średnia sprzedaż",
"cells": ["1 234", "1 100", "980", "..."]
}
]
Kolejność komórek odpowiada kolejności kolumn miesięcznych (od najnowszego).
Wskaźniki T2 (kolejność A–K)
| ID wiersza | Etykieta | Typ wartości |
|---|---|---|
avg-sales |
Średnia sprzedaż | zł |
customers-count |
Ilość klientów | liczba |
other-sales-qty |
Sprzedaż pozostałe | liczba |
customers-yoy |
Klienci vs rok poprzedni % | % |
sales-pizza-total |
Pizza | zł |
pizzas-yoy |
Pizze vs rok poprzedni % | % |
drinks-sales |
Napoje | zł |
drinks-pct |
Sprzedaż napoje % | % |
addons-sales |
Sprzedaż dodatków | zł |
starters-sales |
Startery | zł |
avg-bill |
Średni rachunek | zł |
Wiersze pieniężne (zł) mają automatycznie doklejony sufiks zł w UI.
Mapowanie ID komórek — T1
Wiersze (lata)
| Etykieta w JSON | ID w UI |
|---|---|
2026 |
TY |
2025 |
LY |
2024 |
AY |
2026 vs 2025 |
VS1 |
2025 vs 2024 |
VS2 |
Kolumny miesięczne — aliasy specjalne (TY)
| Miesiąc | ID |
|---|---|
TY + 02 (luty) |
TYLM |
TY + 03 (marzec) |
TYTM |
TY + 04 (kwiecień) |
TYNM |
Pozostałe kolumny: {yearAlias}{monthId} → np. LY03
Przykładowe ID komórek T1
| Komórka | ID |
|---|---|
| TY, luty | TYLM |
| TY, marzec | TYTM |
| LY, styczeń | LY01 |
| VS1, czerwiec | VS106 |
Mapowanie ID komórek — T2
Kolumny mają techniczne ID miesięczne:
| Miesiąc | ID kolumny |
|---|---|
| Mar 2026 | TM (bieżący miesiąc) |
| Lut 2026 | M1 |
| Sty 2026 | M2 |
| Gru 2025 | M3 |
| Lis 2025 | M4 |
| Paź 2025 | M5 |
| Wrz 2025 | M6 |
| Sie 2025 | M7 |
| Lip 2025 | M8 |
| Cze 2025 | M9 |
| Maj 2025 | M10 |
| Kwi 2025 | M11 |
| Mar 2025 | MR |
Wiersze mają ID literowe Excel: A, B, ..., K.
Format ID komórki T2: {litera}-{miesiacId} → np. A-TM, B-M1, K-MR
Dodanie nowych danych
- Utwórz plik JSON w odpowiednim katalogu (
public/data/T1/,T2/,T5/) - Nazwij plik zgodnie z konwencją:
T1L{listId}{locationId}.json - Jeśli dodajesz nową listę — zarejestruj ją w selektorze w
src/App.tsx - Zapisz plik — Vite wykryje zmianę i automatycznie przeładuje stronę (bez restartu kontenera)
No comments to display
No comments to display