Files
finansePRO/.paul/plans/20260721-2324-import-json-grosze-ceny/SUMMARY.md
T
2026-07-22 00:27:20 +02:00

61 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
plan_id: 20260721-2324-import-json-grosze-ceny
title: Poprawka parsowania cen z paragonu JSON (grosze → złote)
completed: 2026-07-21T23:24:13+02:00
storage: plan-first
quality_radar: 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.
## Acceptance Criteria Results
| Criterion | Status | Evidence |
|-----------|--------|----------|
| AC-1: ceny z JSON w złotych | Pass | Reguła wdrożona; `php -l` czysty. UAT runtime realnego importu potwierdzony przez użytkownika (2026-07-21) — kwoty poprawne |
| AC-2: obraz/PDF bez regresji | Pass | Reguła warunkowa tylko dla JSON; gałęzie `input_image`/`input_file` i `normalize()` nietknięte |
## Verification Results
| Check | Result | Notes |
|-------|--------|-------|
| `php -l app/Libraries/ReceiptParser.php` | Pass | No syntax errors detected |
| UAT import JSON | Pass | Potwierdzony przez użytkownika 2026-07-21 — kwoty poprawne |
## Quality Radar Results
**Status:** degraded (brak pełnego indeksu codebase-memory-mcp; jscpd/ast-grep wyłączone polityką w `config.md`)
- New risks: brak
- 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.