# Dashboard AI: liczby, definicje i zakres danych

Data demonstracji: 12.10.2026. Dane w całości syntetyczne. Nie uruchamiano
modelu AI, Lookera ani Looker Studio. To materiał do odbioru aplikacji,
nie wynik testowania produktu Google.

## Pytania, korpus i systemy porównawcze

Sprawdzamy rozbieżności między definicjami miar i to, czy zgodna suma
wystarcza do wykrycia błędnego zakresu wierszy. Korpus: dziesięć zamówień,
trzy zwroty, oddziały WAW i KRK. Jedna pozycja ma rabat, jedna brak kosztu,
jedna potwierdzony koszt zerowy. Porównujemy jawne formuły obliczeniowe,
a w kontroli dostępu dwie listy identyfikatorów. Nie porównujemy modeli.

Miara sprzedaży podstawowej używa daty zamówienia w Europe/Warsaw
i statusu fulfilled z wyciągu. Zakres września jest domknięty z lewej
i otwarty z prawej. Pełne definicje, oczekiwania i wyłączenia są w protokole.

## Wynik

| Kontrola | Wynik |
| --- | --- |
| Netto i brutto, po rabatach, przed zwrotami | 3000,00 i 3690,00 PLN |
| Wrześniowe zwroty według daty zdarzenia | 2650,00 PLN po odjęciu R01 i R02 |
| Zwroty kohorty września znane do 12.10 włącznie | 2300,00 PLN po odjęciu R01 i R03 |
| Pełna marża kwotowa przed zwrotami | brak wyniku (null), ponieważ A04 nie ma kosztu |
| Częściowa marża | 1140,00 PLN, pięć zamówień, sprzedaż 2800,00 PLN |
| Brak kosztu zastąpiony zerem | 1340,00 PLN; błędna reguła dla naszej karty miary |
| Wszystkie statusy zamówień | 4000,00 PLN zamiast 3000,00 PLN |
| Miesiąc według UTC zamiast Warszawy | 3300,00 PLN zamiast 3000,00 PLN |
| Poprawny WAW | A01/A02/A07, 1600,00 PLN, 3 wiersze |
| Celowo wadliwy wybór | A01/A02/A04, 1600,00 PLN, 3 wiersze |
| Wynik kontroli wadliwego wyboru | suma i liczba wierszy przechodzą; zakres odrzucony: obcy A04, brak A07 |

## Środowisko i przebiegi

Pierwszy przebieg obliczeń: Python 3.14.7, macOS (Darwin), arm64,
wyłącznie biblioteka standardowa. Decimal, dwa miejsca dla kwot, HALF_UP
osobno na zamówieniu przy obliczeniu brutto. Osobny weryfikator używa
całkowitych groszy i arytmetyki całkowitej; nie importuje skryptu Decimal.
Nie pobieramy danych, nie instalujemy pakietów, nie używamy API ani GPU.

Protokół, CSV i oczekiwania zapisano przed pierwszym wywołaniem skryptu.
Pierwszy przebieg policz.py spełnił wszystkie oczekiwania; nie zmieniano
protokołu, kwot ani definicji po jego wyniku. Kontrolny rachunek w groszach
potwierdza te same kwoty oraz JSON, CSV, wiersze i sumy kontrolne.
Nie mierzono czasu, pamięci, opłat ani jakości AI.

## Pliki

- `dashboard-ai-protokol.md`: pytania, ustalone definicje i oczekiwania przed uruchomieniem.
- `dashboard-ai-zamowienia.csv`: dziesięć syntetycznych zamówień; pusta komórka kosztu oznacza brak, 0.00 potwierdzone zero.
- `dashboard-ai-zwroty.csv`: trzy zwroty w kwotach netto, dodatnie kwoty do odjęcia.
- `dashboard-ai-oczekiwania.json`: zamrożone wyniki oczekiwane, także kontrolowanej błędnej listy.
- `dashboard-ai-policz.py`: główny rachunek Decimal i zapis wyników.
- `dashboard-ai-wyniki.json`: kwoty, identyfikatory, środowisko i SHA-256 wejść.
- `dashboard-ai-wyniki.csv`: te same metryki; kolumna value_json zawiera literał JSON zachowujący null, liczby, napisy i listy.
- `dashboard-ai-wiersze-kontrolne.csv`: dziesięć zamówień, daty lokalne, wkład do sumy, częściowej marży i zakresu WAW.
- `dashboard-ai-weryfikuj.py`: oddzielny rachunek w groszach i kontrola opublikowanych plików.
- `dashboard-ai-karta-odbioru.md`: wypełniona definicja miary, formularz dla firmy, próby i ścieżka jawnego sprostowania.
- `dashboard-ai-LICENSE.txt`: CC BY 4.0 dla materiałów własnych.
- `dashboard-ai-manifest-sha256.txt`: sumy wszystkich pozostałych plików pakietu, bez samego manifestu i ZIP.

## Odtworzenie

Rozpakuj ZIP do pustego katalogu. Python 3.9 lub nowszy z systemową bazą
stref czasowych powinien wystarczyć; uruchomienie sprawdzono w 3.14.7.
Najpierw sprawdź pakiet i przelicz go niezależnym weryfikatorem:

```sh
python3 dashboard-ai-weryfikuj.py
```

Oczekiwany komunikat: zgodność Decimal i całkowitych groszy, JSON i CSV,
10 wierszy oraz wszystkich sum SHA-256. Następnie, opcjonalnie w kopii
katalogu, uruchom ponownie główne obliczenie:

```sh
python3 dashboard-ai-policz.py
```

Skrypt przelicza wszystkie oczekiwania i nadpisuje trzy pliki wyników.
Pole środowiska w JSON może zmienić się na innym komputerze; wtedy stary
manifest słusznie nie potwierdzi sumy nowego JSON. Nie trzeba zmieniać
manifestu, aby sprawdzić rachunki: robi to pierwsze polecenie bez nadpisywania.

## Ograniczenia i ponowne użycie

Scenariusz jest celowo skonstruowany. Pomyślna kontrola dodatnia i wykrycie
jednego błędu nie dowodzą kompletności kontroli produkcyjnych. Nie testowano
UI, zapytań Lookera, realnych uprawnień, eksportu ani dostępu przez sieć.
Różne poprawnie podpisane definicje sprzedaży mogą mieć odmienne wyniki.
Brak kosztu nie jest zerem; przykładowa marża jest kwotowa, przed zwrotami,
po samym koszcie towaru, bez kosztów operacyjnych. Stawka 0,23 jest
założeniem ćwiczenia, bez klasyfikowania transakcji podatkowych.

Statusy są stanem ustalonego wyciągu, bez historii zmian. Nie badamy
duplikacji po złączeniach, wielu walut, podziału zamówienia między oddziały,
rabatu po sprzedaży ani zaokrągleń na poziomie pozycji. Firma powinna dopisać
takie przypadki do swojej karty, jeśli występują w jej danych.

Własne dane, kod i dokumentacja: CC BY 4.0. Autor i warunki w LICENSE.
