Backend: Preiserkennung präziser (nicht mehr jede Zahl)
Nur noch Beträge, die nach Preis aussehen: direkt hinter einem Summen-Stichwort oder mit Währung (CHF/EUR/€/…) in der Nähe. Ohne solchen Hinweis kein Vorschlag. Datumsangaben (31.12.2027) werden per Lookaround nicht mehr als Betrag (31.12) missgelesen. Kandidatenliste enthaelt entsprechend nur plausible Preise. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -60,19 +60,29 @@ def test_preis_deutsches_format():
|
||||
assert guess_price_cents(text) == 129900
|
||||
|
||||
|
||||
def test_preis_ohne_stichwort_nimmt_groessten_betrag():
|
||||
text = "Position A 12,90\nPosition B 199,00\nDanke."
|
||||
def test_preis_ohne_waehrung_und_ohne_stichwort_ist_none():
|
||||
# Reine Zahlen ohne Waehrung/Summen-Stichwort werden NICHT als Preis geraten.
|
||||
assert guess_price_cents("Position A 12,90\nPosition B 199,00\nDanke.") is None
|
||||
|
||||
|
||||
def test_preis_mit_waehrung_ohne_stichwort_nimmt_groessten():
|
||||
text = "Kabel 12.90 CHF\nGeraet 199.00 CHF"
|
||||
assert guess_price_cents(text) == 19900
|
||||
|
||||
|
||||
def test_datum_wird_nicht_als_preis_gelesen():
|
||||
assert guess_price_cents("Garantie gültig bis 31.12.2027.") is None
|
||||
assert guess_price_candidates("Kaufdatum 05.06.2024, Garantie bis 31.12.2027") == []
|
||||
|
||||
|
||||
def test_preis_ohne_betrag_ist_none():
|
||||
assert guess_price_cents("Kein Preis hier.") is None
|
||||
assert guess_price_cents("") is None
|
||||
|
||||
|
||||
def test_preis_kandidaten_bester_zuerst_ohne_dubletten():
|
||||
text = "Artikel 49.00\nVersand 5.90\nGesamtbetrag: 54.90\nnochmal 49.00"
|
||||
text = "Artikel 49.00 CHF\nVersand 5.90 CHF\nGesamtbetrag: 54.90 CHF\nnochmal 49.00 CHF"
|
||||
kandidaten = guess_price_candidates(text)
|
||||
assert kandidaten[0] == 5490 # bester Tipp vorne
|
||||
assert kandidaten[0] == 5490 # bester Tipp (Summe) vorne
|
||||
assert set(kandidaten) == {5490, 4900, 590} # ohne Dubletten
|
||||
assert guess_price_candidates("") == []
|
||||
|
||||
Reference in New Issue
Block a user