Backend: Beleg-Analyse um Kaufdatum + Shop; Analyse-Endpoint
- guess_acquired_on (Kaufdatum) und guess_shop (bekannter Shop erkannt -> id; sonst Kandidatenname zum Anlegen) ergaenzt. - Upload liefert zusaetzlich suggested_acquired_on / shop_id / shop_name. - Neuer POST /items/analyze-document: analysiert einen Beleg OHNE zu speichern (zum Vorbefuellen beim Anlegen). Gemeinsamer Helfer _doc_suggestions. - 6 neue Tests; Suite 150 gruen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -3,8 +3,10 @@
|
||||
from datetime import date
|
||||
|
||||
from app.services.warranty import (
|
||||
guess_acquired_on,
|
||||
guess_price_candidates,
|
||||
guess_price_cents,
|
||||
guess_shop,
|
||||
guess_warranty_until,
|
||||
)
|
||||
|
||||
@@ -86,3 +88,25 @@ def test_preis_kandidaten_bester_zuerst_ohne_dubletten():
|
||||
assert kandidaten[0] == 5490 # bester Tipp (Summe) vorne
|
||||
assert set(kandidaten) == {5490, 4900, 590} # ohne Dubletten
|
||||
assert guess_price_candidates("") == []
|
||||
|
||||
|
||||
# ---- Kaufdatum & Shop ----
|
||||
|
||||
def test_kaufdatum_aus_beleg():
|
||||
assert guess_acquired_on("Rechnungsdatum: 05.06.2024") == date(2024, 6, 5)
|
||||
assert guess_acquired_on("nichts hier") is None
|
||||
|
||||
|
||||
def test_shop_erkennt_bekannten_namen():
|
||||
shops = [(1, "Digitec"), (2, "Galaxus")]
|
||||
assert guess_shop("Rechnung von Digitec AG, Zürich", shops) == (1, "Digitec")
|
||||
|
||||
|
||||
def test_shop_schlaegt_neuen_namen_vor():
|
||||
sid, name = guess_shop("ACME Electronics GmbH\nRechnung\nDatum 01.01.2024", [(1, "Galaxus")])
|
||||
assert sid is None
|
||||
assert name == "ACME Electronics GmbH"
|
||||
|
||||
|
||||
def test_shop_ohne_text_leer():
|
||||
assert guess_shop("", [(1, "Digitec")]) == (None, None)
|
||||
|
||||
Reference in New Issue
Block a user