F03 Rechnungsextraktion fachlich korrekt und belegbar machen
Frühere Version vom 2026-07-16T18:39:13.335375+02:00 · zur aktuellen Fassung
Rechnungsextraktion fachlich korrekt und belegbar machen
Finding: F03 Priorität: P0 Status: OFFEN Stand: 2026-07-16
Problembeschreibung
- Deutsche Dezimalzahlen werden direkt zu float gecastet (PdftotextExtractor.php:71; TesseractInvoiceExtractor.php:70).
- firstLine entfernt vor Zeilentrennung Umbrüche (PdftotextExtractor.php:130).
- 0+0=0 gilt als konsistent; positiver Bruttobetrag ist nicht Pflicht.
- Reales PDF nennt 04.07.2026, State desselben SHA-256 speichert 14.07.2026.
- Tesseract erhält PDF ohne definierte Rasterpipeline.
Ziel
Buchungsfelder sind formatrobust, quellenbelegt und gegen das Original geprüft; Unsicherheit stoppt vor Lexware.
Aufgabe
- Decimal-Value-Object ohne Float bauen.
- Label-/Positionsparser samt Seite/Matcher/Confidence umsetzen.
- PDF seitenweise rasterisieren; Review-Quarantäne und Golden Masters einführen.
Scope
- In Scope: alle unter Code Blast genannten Komponenten, Daten, Verträge und Tests.
- Out of Scope: neue Features und produktive externe Mutation ohne separate Freigabe.
Harte Spezifikation
- MUST: Geld als Minor Units/Decimal-String.
- MUST: Brutto > 0, Währung/Rundung explizit.
- MUST: Nummer/Datum besitzen Textbeleg.
- MUST: Widerspruch/geringe Confidence führt REVIEW_REQUIRED.
Harte Quality Gateways
- Reales Fixture erwartet 2026-07-04, RF183233049809, 26.0504, 4.9496, 31.0000.
- Property-Tests für Komma/Punkt/vier Nachkommastellen.
- Mutiertes Datum/Summe verhindert Posting.
- Global: PHPStan Level 8 und PHPUnit liefern 0 Fehler; kein Ignore oder Baseline.
Code Blast
- Direkt: beide Extractors, Fallback, ExtractedInvoiceData, Amount, Extract Use Case.
- State erhält Feldbelege/Confidence; Betrieb erhält Reviewfälle.
Code-Impact-Analyse
- Verhindert falsche Buchungsdaten.
- Bestand wird revalidiert, nie automatisch neu gepostet.
Risikoanalyse
| Risiko | Eintritt | Schaden | |---|---|---| | Falscher Betrag/Datum | hoch | kritisch | | False negative | mittel | mittel |
Strategie zur Risikonullierung
- Prevent: typisierte Parser.
- Detect: Golden Masters/Kreuzsummen.
- Contain: Review.
- Recover: Original plus versionierte Korrektur.
Abschlussnachweis
Erledigt erst, wenn alle MUST-Spezifikationen implementiert, alle Gateways mit unveränderlicher Evidenz grün und Restrisiken technisch ausgeschlossen oder ausdrücklich fachlich akzeptiert sind.