Poprawka parsowania cen z paragonu JSON (grosze → złote)
2026-07-21T23:24:13+02:00
plan-first
degraded
Summary: Poprawka parsowania cen z paragonu JSON (grosze → złote)
Objective
Naprawić import paragonu z pliku JSON (eParagon / JPK_KASA_PARAGON), gdzie kwoty były 100× za duże (np. 3,69 odczytane jako 369 zł), bo format trzyma wartości w groszach, a model dostawał surowy JSON bez informacji o jednostce.
What Was Built
Area
Result
Prompt parsera
W ReceiptParser::prompt() dodano regułę: dla wejścia JSON wszystkie pola kwotowe (price, total, brutto, cena, wart, fiscalTotal, totalWithPacks, vatSale, amount) to liczby całkowite w groszach → podziel przez 100
Zakres reguły
Warunkowa, wyłącznie dla JSON; ścieżka obraz/PDF czyta kwoty jak dotąd
Files Modified
app/Libraries/ReceiptParser.php — reguła „grosze → złote" w prompcie dla wejścia JSON.
Resolved risks: błędne kwoty z JSON (grosze traktowane jak złote) — obsłużone regułą promptu
Deferred risks: natywny parser eParagon w PHP (0 tokenów, 100% determinizm, ale traci display/kategorie z AI) — YAGNI, podnieść jeśli reguła promptu zawiedzie
Raw outputs: .paul/codebase/impact_map.md, .paul/codebase/quality_risks.md, .paul/codebase/tooling_status.md
Deviations
Brak. Wykonano dokładnie 1 zaplanowany task.
Key Decisions / Patterns
Wybrano poprawkę promptową (najkrótszy diff, zero zmian w pipeline, bez regresji obraz/PDF) zamiast natywnego parsera JSON. Reguła „/100" jest deterministyczna dla modelu rozumującego.
Follow-up
UAT runtime: ✅ potwierdzony przez użytkownika (2026-07-21) — import JSON daje poprawne kwoty.
Jeśli reguła promptu okaże się zawodna dla innych paragonów JSON → osobny plan: natywny parser eParagon w PHP.