update
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
---
|
||||
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.
|
||||
Reference in New Issue
Block a user