- Item: price_cents + currency (Kaufpreis rappen-/centgenau). Migration ergaenzt. - Neue Tabelle item_documents (mehrere Belege je Stueck, PDF oder Bild); Blob wird verzoegert geladen, damit Item-Listen leicht bleiben. - Endpunkte: Upload (POST), Ansehen/Download (GET), Loeschen (DELETE) je Stueck. Dateiname beim Download gehaertet (keine Header-Injektion). - services/warranty.py: schaetzt aus PDF-Text lokal ein Garantieende (Zeitraum + Kaufdatum, oder Datum nahe Garantie-Stichwort); pypdf ergaenzt. Der Upload liefert den Vorschlag zurueck. 10 neue Tests, Suite 136 gruen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
"""Lokale Garantieende-Schätzung aus Belegtext (ohne echtes PDF)."""
|
|
|
|
from datetime import date
|
|
|
|
from app.services.warranty import guess_warranty_until
|
|
|
|
|
|
def test_zeitraum_plus_kaufdatum_vom_stueck():
|
|
# Beleg nennt nur den Zeitraum; das Kaufdatum kommt vom Einzelstück.
|
|
text = "Vielen Dank für Ihren Einkauf. 24 Monate Garantie auf dieses Gerät."
|
|
assert guess_warranty_until(text, acquired_on=date(2024, 3, 31)) == date(2026, 3, 31)
|
|
|
|
|
|
def test_jahre_werden_verstanden():
|
|
text = "2 Jahre Gewährleistung"
|
|
assert guess_warranty_until(text, acquired_on=date(2023, 1, 15)) == date(2025, 1, 15)
|
|
|
|
|
|
def test_zeitraum_plus_rechnungsdatum_aus_dem_beleg():
|
|
text = "Rechnungsdatum: 05.06.2024\nGarantie: 12 Monate"
|
|
assert guess_warranty_until(text) == date(2025, 6, 5)
|
|
|
|
|
|
def test_warranty_keyword_before_period_english():
|
|
text = "Warranty period is 36 months from purchase."
|
|
assert guess_warranty_until(text, acquired_on=date(2022, 2, 1)) == date(2025, 2, 1)
|
|
|
|
|
|
def test_explizites_datum_neben_stichwort():
|
|
text = "Garantie gültig bis 31.12.2027."
|
|
assert guess_warranty_until(text) == date(2027, 12, 31)
|
|
|
|
|
|
def test_ohne_hinweise_kein_vorschlag():
|
|
assert guess_warranty_until("Nur ein Kassenbon ohne alles.") is None
|
|
|
|
|
|
def test_leerer_text_ist_none():
|
|
assert guess_warranty_until("", acquired_on=date(2024, 1, 1)) is None
|