Markenerkennung: Grenzen gemessen, Summenzeile im Kopf ist keine Marke
Auf die Frage, ob Belege einheitlich gestaltet sind: nein. Die Erkennung haengt an drei Annahmen - Marke in den ersten acht Zeilen, Marke in der festen Liste, Marke ueberhaupt vorhanden. Alle drei sind jetzt gemessen und in Tests festgehalten. Dabei ein echter Defekt gefunden: "Total" ist Kopfmarke UND Summenwort. Ein Beleg mit Betrag in den ersten acht Zeilen lieferte faelschlich die Marke "Total" (an einem echten Beleg reproduziert). _betragszeile() filtert Summenzeilen jetzt aus dem Kopf - verlangt werden beide Kennzeichen zugleich, Summenwort und Geldangabe, damit "SHELL TANKSTELLE, 6450 SOELDEN" nicht mitfaellt. Gegenprobe: ein echter "TOTAL TANKSTELLE"-Kopf ergibt weiter Total. Der Ausfall beschaedigt nichts: mit unbekannter Marke im Kopf bleiben Liter, Betrag, Rabatt und Anschrift unveraendert richtig, nur die Marke fehlt. Parser-Suite 17 Tests (von 11), alle zwoelf abgelegten Belege liefern weiter Shell, audi_ha_test auf 2026.9.4.22 ohne Traceback.
This commit is contained in:
@@ -10855,3 +10855,62 @@ dieselben Eingaben laufen lassen, nicht nachgebaut.
|
||||
OTA-Buendel (2026.9.4.21) und brauchen keinen Xcode-Lauf. Der offene Punkt aus
|
||||
Abschnitt CM bleibt: dass die `packageClassList`-Registrierung auf dem Geraet
|
||||
greift, zeigt erst der naechste Xcode-Lauf.
|
||||
|
||||
## CO. "Gibt es eine Garantie, dass alle Tankstellen ihre Belege gleich gestalten?" - Nein. Was gemessen wurde (2026.9.4.22)
|
||||
|
||||
Die Frage des Eigentuemers zur Markenerkennung. Die ehrliche Antwort ist nein,
|
||||
und sie ist gemessen statt behauptet.
|
||||
|
||||
### Wovon die Erkennung abhaengt
|
||||
|
||||
Drei Annahmen, jede eine mit Bruchstelle:
|
||||
|
||||
1. **Die Marke steht in den ersten acht Zeilen.** Gemessen ueber alle zwoelf
|
||||
abgelegten Belege: elfmal Zeile 0, beim oesterreichischen Format Zeile 1.
|
||||
Das Fenster ist der Puffer, nicht die Erwartung - ab Zeile 8 findet sie
|
||||
niemand mehr (nachgestellt, liefert `None`).
|
||||
2. **Die Marke steht in `_MARKEN`.** Eine feste Liste von 26 Namen, von Hand
|
||||
gepflegt. Was nicht drinsteht, wird nicht erkannt.
|
||||
3. **Sie steht ueberhaupt drauf.** Freie Tankstellen fuehren keine.
|
||||
|
||||
### Der Ausfall beschaedigt nichts - nachgestellt
|
||||
|
||||
Kopfzeile eines echten Belegs durch `OIL! Tankstelle`, `Hoyer Tankstelle`,
|
||||
`Freie Tankstelle Mueller` ersetzt:
|
||||
|
||||
* `station_brand` wird `None`,
|
||||
* `station_name` faellt auf den Betreibernamen zurueck,
|
||||
* Liter, Betrag, Rabatt, Anschrift bleiben **unveraendert richtig**.
|
||||
|
||||
In der Anzeige heisst das `Pascalstr., Ingolstadt` statt
|
||||
`Shell, Pascalstr., Ingolstadt` - die Marke fehlt, sonst nichts. Genau so soll
|
||||
es sein: **ein falscher Name waere schlimmer als keiner.**
|
||||
|
||||
### Ein echter Defekt, dabei gefunden
|
||||
|
||||
`"Total"` ist **beides**: eine Kopfmarke und ein Summenwort. Ein Beleg, der den
|
||||
Betrag schon in den ersten acht Zeilen druckt, lieferte faelschlich die Marke
|
||||
`Total` - an einem echten Beleg mit vorangestellter Summenzeile reproduziert.
|
||||
Der Kommentar an `_GELD` warnt seit jeher vor genau diesem Wort; das Fenster
|
||||
allein war die einzige Absicherung.
|
||||
|
||||
Jetzt filtert `_betragszeile()` Summenzeilen aus dem Kopf, bevor gesucht wird.
|
||||
Verlangt werden **beide** Kennzeichen zugleich - Summenwort UND echte
|
||||
Geldangabe -, damit eine Kopfzeile wie `SHELL TANKSTELLE, 6450 SÖLDEN` nicht
|
||||
mitfaellt. Gegenprobe geprueft: ein echter `TOTAL TANKSTELLE`-Kopf ergibt
|
||||
weiterhin `Total`.
|
||||
|
||||
### Was daraus NICHT folgt
|
||||
|
||||
Die Erkennung ist **an genau einer Marke belegt**: alle zwoelf abgelegten
|
||||
Belege sind Shell. Ueber die anderen 25 Eintraege der Liste sagt das nichts -
|
||||
sie sind plausibel, aber ungeprueft. Ein Beleg einer anderen Kette waere der
|
||||
erste echte Test.
|
||||
|
||||
### Verifiziert
|
||||
|
||||
Parser-Suite jetzt **17 Tests** (von 11): die neue Klasse
|
||||
`MarkenerkennungGrenzen` haelt fest, wo die Erkennung greift, wo sie aufgibt,
|
||||
und dass ein Aufgeben den Beleg nicht beschaedigt. Alle zwoelf Belege liefern
|
||||
weiterhin `Shell`. `audi_ha_test` auf 2026.9.4.22, 0 Tracebacks, das Nachtragen
|
||||
lief erwartungsgemaess **nicht** erneut.
|
||||
|
||||
Reference in New Issue
Block a user