From 8557bfe230be1a43f31fe242dba142c170433660 Mon Sep 17 00:00:00 2001 From: Tobi G Date: Fri, 4 Sep 2026 17:09:12 +0200 Subject: [PATCH] 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. --- .tmp-patch.mjs | 49 ++++++++++++++ AGENTS.md | 59 ++++++++++++++++ .../audi_dashboard/frontend/app/bundle.json | 2 +- .../audi_dashboard/frontend/app/bundle.zip | Bin 323037 -> 323041 bytes .../audi_dashboard/manifest.json | 2 +- .../audi_dashboard/shell_beleg_parser.py | 34 +++++++++- tests/belegparser/test_shell_beleg_parser.py | 63 ++++++++++++++++++ 7 files changed, 204 insertions(+), 5 deletions(-) create mode 100644 .tmp-patch.mjs diff --git a/.tmp-patch.mjs b/.tmp-patch.mjs new file mode 100644 index 0000000..67596a9 --- /dev/null +++ b/.tmp-patch.mjs @@ -0,0 +1,49 @@ +import { readFileSync, writeFileSync } from "node:fs" +const p = "custom_components/audi_dashboard/shell_beleg_parser.py" +let s = readFileSync(p, "utf8") +const alt = [ + "def _marke(zeilen):", + ' """Markenname aus dem Belegkopf ("SHELL STATION" -> "Shell"). None, wenn', + ' keine bekannte Marke draufsteht - dann bleibt es beim Betreibernamen."""', + ' kopf = "\n".join(zeilen[:8])', + " for marke in _MARKEN:", + ' if re.search(r"\b" + re.escape(marke) + r"\b", kopf, re.IGNORECASE):', + " return marke", + " return None", +].join("\n") +const neu = [ + "def _betragszeile(zeile):", + ' """Eine Summenzeile ("GESAMT 78,78 EUR")? Sie darf im Kopf nicht nach', + " Marken durchsucht werden.", + "", + ' Grund: "Total" ist beides - eine Kopfmarke und ein Summenwort. Auf einem', + " Beleg mit knappem Kopf, der den Betrag schon in den ersten acht Zeilen", + ' druckt, wuerde daraus faelschlich die Marke "Total" (am 04.09.2026 an', + " einem echten Beleg mit vorangestellter Summenzeile nachgestellt und", + " reproduziert). Verlangt werden beide Kennzeichen zugleich - Summenwort", + " UND echte Geldangabe -, damit eine Anschrift mit Hausnummer oder eine", + ' Postleitzahl ("SHELL TANKSTELLE, 6450 SÖLDEN") nicht mitfaellt."""', + ' kompakt = re.sub(r"\s+", "", zeile).upper()', + " if not any(wort in kompakt for wort in _GESAMT_WOERTER):", + " return False", + " return bool(re.search(_GELD, zeile))", + "", + "", + "def _marke(zeilen):", + ' """Markenname aus dem Belegkopf ("SHELL STATION" -> "Shell"). None, wenn', + " keine bekannte Marke draufsteht - dann bleibt es beim Betreibernamen.", + "", + " Acht Zeilen, weil die Marke in den bekannten Belegen in Zeile 0 steht und", + " im oesterreichischen Format in Zeile 1 (am 04.09.2026 ueber alle zwoelf", + ' abgelegten Belege gemessen) - das Fenster ist der Puffer, nicht die",', + ' Erwartung."""', + " kopf = [z for z in zeilen[:8] if not _betragszeile(z)]", + ' text = "\n".join(kopf)', + " for marke in _MARKEN:", + ' if re.search(r"\b" + re.escape(marke) + r"\b", text, re.IGNORECASE):', + " return marke", + " return None", +].join("\n") +if (s.split(alt).length - 1 !== 1) throw new Error("Anker nicht eindeutig") +writeFileSync(p, s.replace(alt, neu)) +console.log("ok") diff --git a/AGENTS.md b/AGENTS.md index 3e64517..c2e1b2b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -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. diff --git a/custom_components/audi_dashboard/frontend/app/bundle.json b/custom_components/audi_dashboard/frontend/app/bundle.json index 2222338..a313652 100644 --- a/custom_components/audi_dashboard/frontend/app/bundle.json +++ b/custom_components/audi_dashboard/frontend/app/bundle.json @@ -1 +1 @@ -{"version":"2026.9.4.21","sha256":"3601a55ee4120c8508dd8f5018dcfbe806f10d87fd706763a0bbd97377d217d1","bytes":323037,"gebaut":"2026-09-04T14:55:41Z"} \ No newline at end of file +{"version":"2026.9.4.22","sha256":"66406934fb50aa810ff782ce877bc82d25ec8d338979d5ae9e28e5dc5c2ea521","bytes":323041,"gebaut":"2026-09-04T15:08:22Z"} \ No newline at end of file diff --git a/custom_components/audi_dashboard/frontend/app/bundle.zip b/custom_components/audi_dashboard/frontend/app/bundle.zip index c3430deda10f3b489aa6a88297a1b7381b797f83..567de5c05f4989418829de89fbc17862050e90a0 100644 GIT binary patch delta 51486 zcmV()K;OUJ+Y{m26R=Mm0t$(fQ61F+3W>8Q9-UbN3W>AFcicPz3W>9&v?V+#3W+3L zue_tA#@+z{B^m|*7ytkOVRLh3baO9hZe(S6EkbNYS#maYQnT~$`N)4+F3Xn6^0h8% z4Gn?-$s$Cu0D_V%ajpFia~@}%dFgdNVV{@%H1#L@OC};R6G)JhELU~y-Mw2~Z4r5o zjEszk%#4iOecnG^oO$`Bi?O$muV(})uvO^$xbxL1j4v8bT>+OLhT&X2`>L(d4X~}P zjI5_{C=R?qZb`Iz@YsJdcMo)3(DI%)I6WYnfIT7rycoK@UD+Dn-0T@xy;o{L+z2V& z-`I?;kBH7ws!)A&y;!PekFKwlAFJib+q+eKu+c!UdIZI|BSX=CajpS?kmjcVUXYAt zXol8YRSL2$L2 zSKcLAi;VLdgD4S3R75J_*Dg-s~vll7a-uPd<26~`w=mBkl$Gfy@QUyE~P3jY&^aAJ=P{V&LC>sXiS%qtIh)o{-$U8=y zy&zmX5~Fq*dXHH7-1kK2U54TUk#@;nUEI(MZqVK4HAUf{TcpcXP3-_L)J z#5Pkg2@-PQ7=^jXX;2I=@u!afhcw^-l5(w_=JHBGmVc%IEZhYUh}O}BT%@5o3Dlse zNSq+9nST31yGTZJCbTW|sveC7S;E7h`v&1sd*!{UlwhxFCm6+mmtqf#S(A^~tI9P= zb@Dm)Vu{Jxk41;YZM%?9#vt51DV2ZFgxBlCetQ;DdEn#B7)(qV9C$<&5&>2^3oF+Q zxb}}r$;;6Ogs-f--=nWTMd~Zy_X6}`So|no5rkhM1>k+uFhCDNhAQkjf256y-Z!v2J}G( zx$)`Q8Qx)dofEN-;tE#jbKLHGn*^ZgtVW?!8>1O5U`q&iFM{xpR0!r`dj{cE4->HL z#YiSr_j2_Lt%!wmVrihB`^JC4Wf0EDn{zOQ;M0RA@4xl7w)hv-bTl16?!f`6%6&>) zjnw?57Fr(dzUNZY`-Rkqy@?lEVt-)}PkVm+4)iZ{W!EW!;&~YKc0oz_(Jt*uP&E5& zm#UMhY6D?t@x6eS#g_6E zp>tH^(-~goC^vB$pTTIa#d)V^pr&n^xd~^H#H{Q6;#R;W5Fp=f0Mb4%3ax}&cmibK zmolTJe#R5=X44zq*}R|6rU_e(#MOLrC1(&EKk~d{4mei!8pO7OU_8V8?3+dG#c>Y( zrh$-dWW=ZhZR&MZ0%m`ukGCMHx_jFIf)E=;R|QCXJt3}SuMG>W_9JFo&qh1&?w}nS zAQ<@oMjE7u7}UGS4ap+lOTJ}j}0Z54NNvv(4#Ky{)YB3i?3A%MDh96kiaw8m2IbL_o zw_MjRsDD8lR&{^*ImT7KfOGqt#9N8%ewcE1PQ1~=XW*?g8zaqD^ZS1<`zR7OToF$t z|1y87*r$$Le{yzHJGiNvH;w)3&Ol@P)^Z`K$Z4f|26@61)LhUWf9f;Io2OU)bo!V6 zp8o9Y+Fn+_-WiNGRmUab+{*ViI*-l)Rz;#p zE@eKpRTY1COk!i^9?2`To;mvnHKEEl_(cVcxLz5Gdoe)-k=@9;;t|^h|t;~+H7Z_C6-r7 zOWS{MamgWXVI@jV?Hg# z#WqMf;cHWT2L??Vr(oyrVPJBB&SyMzh` zUfkKh@-M6HOKtWw&ZGb*?_jz85pXl(cXoeGO}Efh@hzo?)%H-ENrgXFwU2mMy#45U zw*0sxsz>hw^Q2-i|1(<5doCm17l=o5-@&9J+?1qz>kc>yI$+72_N2nu4!V2+_Lx|e zJgR!C2Hal{F2~d}WJi)KbH2r1yzlB8=my1O@%clrNNPcx^3K(}G)^4zENvBa_RJ(@4|mqavw`*M#68;mj@enCU_oiNVvLnAjxx6HMb|o z$$}ffp;rM8%&I9G??Aq5vgA6;XoJqe5AkKqFSdXU#<+$341HD|T+S08C4Op=m_~v@ zmxRM<7WWU>oJ(RxNJ#5h=c5qA9h_<(+Y|sPFFV4DfYE|b4+J*oSYZWMG%BZBY z+7_;>0t3UiGcK%iEZ|MD{}8IbJh+y6T^`b3y)QW=4M;6zG7m~VIAS8*a215Y>9GzvZwXR-k5kygDdMhlDSXdk#;{N9S69vmIKJD{4&O3rh1 z;8@mhMyTQ7cEdy~<*&t0H@aq%G<*?w`c;i&&*z|x4my@GY{IiO}$Vf71z z^>yFFta~$g$WwMo!R~*8R8#{E0`(_*=lz#ia}4|kq|NCW_XLfKijUKtpK)=;H#MNj z@53Gn#=_t?$!~k8wrSUmmf;$D$u;w8 zDxAqOSoP!uMuIGQ^>HarnNA*LzprN+aNtoeHla;*Eqt_v6+h)!v`RJyAooc><;p(N@ z5A~-9=vHwAvpYL~miSc5)6rlwPusBugR&`pDVZWo=aO+XwQftPms6Rt1uRugIBW-a zi$%kV<{5xNTz(^&OUA+RpRLfLS}4-*fwEZr2IKfR;@yAWHdF;#Q8=0m!_mC0o~vT? zvX#2b>W*cKk<4q%phgphNz|3$=4W2p7^-XMX>xtlm0Sfjh9epr_22*Hf2xIoNH{9o zoZ!BSf%T$GP~YHHq24FW%E`(ob7Xd?>NX<+X&Al@SMJ(~U_oxyS>_o0}G|A>+ z5g~Kz4+*~nlG7;Jux)nNlgg_nY`l{ezOIUa&53{fJO4Xi=>ulHTd7vrT^ea{KZP>Z z36>nqomW$XnQ;T1wQ01Af>+Z!3O>4{;9+t{L7+#u(WM4tDOa{s-Vc+Ht5qHs_hIe6i<=wQ&i@~f2x}@pEWzQ>7X2sCdS7$?L#U94h*?K}Qx~28xFC~G z0QYS;Ha?cQ5v$L~K4YS#Gjo85I-u6yMlxhZl;Vt$82O#KKaUXvcN|HShdE zD52&Gc$6pT_f8xYsL4D2X*vmCMG@|3RR4cm4_yIKJ|83$>Hdl%xO@-Fl6g>OeF1GM z|L6a|7j=f*4qkMC&S3bFrJwH+_*=ytx$9+{o!4i;I`?DfC+;g3uQJcELLgsNm2Pbm zwF*aES+Nn-$=Z^hHA!xTD0kw84l0R@s2!hO*~^RnP~z0oJyp0A!d(&`6(Xw&<2Zkt zkcSF!(^=%417DBZcyOhu^bJKt+NX^CPq0K5kWw?e2`LvZA|Tf|oJ>A3ZHOmJF_2ET z)A3RprutAA-MrI1%oJl)ZRJjAl|M5R5b422SSM# z^3W39560PyURzrDam0+R)346fisQhki^kpvW83Fun+bVG8;~jw(u=@#>(B zjO^Mjg%Rn{i2X2&=3T!h%`YjIJ<=$seI$q>!v1P~JZp``=<^W7qidB<87`+ewjs3? zhv#S+PZ;{yY)(Xvcb*`z8-ah$9*;27v_Eaf#`qkUD)9Y;NfwIA4P<$MSwawbp9Gi% zzh=qwQ#hGpaSRsar9`QsaxAZrTsU6fENbH+wg_|)DxxgmRwtc7<=A0#!d#BxIR_!T z@r4lN-#m?lP+?8!#Vm9Lu@cqkz$*Gv7LrRiNEe@Z?K7BbbDZ#0KZSp~csZMA0K5X> z@^luElWEZeEA%6O&b&}is2lrh8K#p`hUsJ_!%wV1`!mo^LLZ4+u=ASvbZSD7R6>uD7vPg4)vMk!L^1)y6g5uWY&CTUw z4|D>2H-~1^Uax(*#O{Bzukn@{O`Cy6H_nh@4!OTqnxNxzWX_NZ%b+T1@$`&u!t!GP zXHZ_?rN~`Gb*W$xK9;MHvWeQ3?3HCCI3zB{FXSi^Hpo8O=(203ag1OmX2{d{ltp`1 z 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 delta 51549 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⪻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 diff --git a/custom_components/audi_dashboard/manifest.json b/custom_components/audi_dashboard/manifest.json index 2532266..28b91cb 100644 --- a/custom_components/audi_dashboard/manifest.json +++ b/custom_components/audi_dashboard/manifest.json @@ -1,7 +1,7 @@ { "domain": "audi_dashboard", "name": "Audi Dashboard", - "version": "2026.9.4.21", + "version": "2026.9.4.22", "documentation": "https://gitea.nothaft.cloud/paul/audi-app/src/branch/main/README.md", "issue_tracker": "https://gitea.nothaft.cloud/paul/audi-app/issues", "codeowners": [ diff --git a/custom_components/audi_dashboard/shell_beleg_parser.py b/custom_components/audi_dashboard/shell_beleg_parser.py index 4ae46f9..2070b0a 100644 --- a/custom_components/audi_dashboard/shell_beleg_parser.py +++ b/custom_components/audi_dashboard/shell_beleg_parser.py @@ -113,12 +113,40 @@ _MARKEN = ( _STRASSE_WOERTER = r"(?:stra(?:ss|ß)e|str\.|gasse|weg|platz|allee|ring|damm|chaussee)" +def _betragszeile(zeile): + """Eine Summenzeile ("GESAMT 78,78 EUR")? Sie darf im Kopf nicht nach + Marken durchsucht werden. + + Grund: "Total" ist beides - eine Kopfmarke und ein Summenwort. Auf einem + Beleg mit knappem Kopf, der den Betrag schon in den ersten acht Zeilen + druckt, wuerde daraus faelschlich die Marke "Total" (am 04.09.2026 an einem + echten Beleg mit vorangestellter Summenzeile nachgestellt und + reproduziert). Verlangt werden beide Kennzeichen ZUGLEICH - Summenwort UND + echte Geldangabe -, damit eine Anschrift mit Hausnummer oder eine + Postleitzahl ("SHELL TANKSTELLE, 6450 SÖLDEN") nicht mitfaellt.""" + kompakt = re.sub(r"\s+", "", zeile).upper() + if not any(wort in kompakt for wort in _GESAMT_WOERTER): + return False + return bool(re.search(_GELD, zeile)) + + def _marke(zeilen): """Markenname aus dem Belegkopf ("SHELL STATION" -> "Shell"). None, wenn - keine bekannte Marke draufsteht - dann bleibt es beim Betreibernamen.""" - kopf = "\n".join(zeilen[:8]) + keine bekannte Marke draufsteht - dann bleibt es beim Betreibernamen. + + Acht Zeilen, weil die Marke in allen zwoelf abgelegten Belegen in Zeile 0 + steht, im oesterreichischen Format in Zeile 1 (am 04.09.2026 gemessen). + Das Fenster ist der Puffer, nicht die Erwartung. + + KEINE GARANTIE, UND DAS IST ABSICHT: Belege sind nicht genormt. Steht die + Marke woanders, heisst sie anders oder fuehrt die Station gar keine (freie + Tankstellen), gibt es hier None - und der Beleg wird trotzdem vollstaendig + eingelesen, nur eben ohne Marke. Ein falscher Name waere schlimmer als + keiner.""" + kopf = [z for z in zeilen[:8] if not _betragszeile(z)] + text = "\n".join(kopf) for marke in _MARKEN: - if re.search(r"\b" + re.escape(marke) + r"\b", kopf, re.IGNORECASE): + if re.search(r"\b" + re.escape(marke) + r"\b", text, re.IGNORECASE): return marke return None diff --git a/tests/belegparser/test_shell_beleg_parser.py b/tests/belegparser/test_shell_beleg_parser.py index 2e6795c..1749ece 100644 --- a/tests/belegparser/test_shell_beleg_parser.py +++ b/tests/belegparser/test_shell_beleg_parser.py @@ -165,5 +165,68 @@ class BelegOhneRabatt(unittest.TestCase): self.assertAlmostEqual(d["liters"], 42.15, delta=0.001) + +class MarkenerkennungGrenzen(unittest.TestCase): + """Was die Markenerkennung leistet - und was ausdrücklich nicht. + + Belege sind nicht genormt. Diese Suite hält fest, wo die Erkennung greift, + wo sie aufgibt, und dass ein Aufgeben den Beleg nicht beschädigt. + """ + + @classmethod + def setUpClass(cls): + cls.zeilen = p._text_aus_pdf(os.path.join(_BELEGE, "e-receipt.pdf")).splitlines() + + def test_marke_steht_ganz_oben(self): + # Gemessen am 04.09.2026: in allen elf Belegen in Zeile 0. Das Fenster + # von acht Zeilen ist der Puffer, nicht die Erwartung - der + # österreichische Beleg (nur in der Instanz) hat sie in Zeile 1. + for datei in sorted(f for f in os.listdir(_BELEGE) if f.endswith(".pdf")): + with self.subTest(datei=datei): + zeilen = p._text_aus_pdf(os.path.join(_BELEGE, datei)).splitlines() + self.assertEqual(p._marke(zeilen[:1]), "Shell") + + def test_ausserhalb_des_fensters_wird_nicht_gefunden(self): + # Ehrlich dokumentiert statt stillschweigend angenommen: steht die + # Marke erst ab Zeile 8, findet sie niemand. + verschoben = [""] * 8 + self.zeilen + self.assertIsNone(p._marke(verschoben)) + + def test_unbekannte_marke_beschaedigt_den_beleg_nicht(self): + # Freie Tankstellen und Marken, die nicht in _MARKEN stehen: der Beleg + # wird vollständig eingelesen, nur eben ohne Marke. Ein falscher Name + # wäre schlimmer als keiner. + for ersatz in ("OIL! Tankstelle", "Hoyer Tankstelle", "Freie Tankstelle Mueller"): + with self.subTest(kopf=ersatz): + d = p._parsen("\n".join([ersatz] + self.zeilen[1:])) + self.assertIsNone(d["station_brand"]) + # Ohne Marke tritt der Betreibername an ihre Stelle. + self.assertEqual(d["station_name"], "A. Zrenner GmbH, Pascalstr. 8, Ingolstadt") + self.assertAlmostEqual(d["liters"], 42.15, delta=0.001) + self.assertAlmostEqual(d["fuel_total_eur"], 78.78, delta=0.001) + + def test_summenzeile_im_kopf_ist_keine_marke(self): + # "Total" ist beides - Kopfmarke und Summenwort. Ein Beleg mit knappem + # Kopf, der den Betrag schon oben druckt, lieferte vorher fälschlich + # die Marke "Total" (nachgestellt am 04.09.2026). + for summe in ("TOTAL: 78,78 EUR", "GESAMT 78,78 EUR", "Summe 78,78 EUR"): + with self.subTest(zeile=summe): + self.assertEqual(p._marke([summe] + self.zeilen), "Shell") + + def test_echte_marke_total_bleibt_erkennbar(self): + # Die Gegenprobe zum Test darüber: verworfen wird nur, wo Summenwort + # UND Geldangabe zusammenkommen - eine Kopfzeile ohne Betrag nicht. + self.assertEqual(p._marke(["TOTAL TANKSTELLE", "Musterweg 1", "80331 München"]), "Total") + # Und eine Postleitzahl in der Kopfzeile faellt nicht mit heraus. + self.assertEqual( + p._marke(["AUTO B. FRISCHMANN GMBH", "SHELL TANKSTELLE, 6450 SÖLDEN"]), "Shell" + ) + + def test_wortgrenze_schuetzt_vor_teiltreffern(self): + # "Star" darf nicht in "Starnberg" treffen, "Eni" nicht in "Enisstr.". + self.assertIsNone(p._marke(["Tankstelle Mueller", "Seestr. 3", "82319 Starnberg"])) + self.assertIsNone(p._marke(["Freie Tankstelle", "Enisweg 4", "12345 Musterort"])) + + if __name__ == "__main__": unittest.main(verbosity=2)