Backend: Kaufpreis aus Beleg-PDF schätzen
guess_price_cents zieht den Kaufpreis aus dem Belegtext: bevorzugt den Betrag nach einem Summen-Stichwort (Gesamtbetrag/Total/…), sonst den groessten Betrag. Versteht Tausendertrenner (1'299.00) und deutsches Format (1.299,00). Der Upload liefert den Vorschlag als suggested_price_cents mit. 5 neue Tests. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -31,7 +31,11 @@ from ..schemas import (
|
||||
ItemUpdate,
|
||||
)
|
||||
from ..services.items import generate_uid, item_to_out
|
||||
from ..services.warranty import extract_pdf_text, guess_warranty_until
|
||||
from ..services.warranty import (
|
||||
extract_pdf_text,
|
||||
guess_price_cents,
|
||||
guess_warranty_until,
|
||||
)
|
||||
|
||||
router = APIRouter(tags=["items"])
|
||||
|
||||
@@ -240,19 +244,20 @@ async def upload_item_document(
|
||||
db.commit()
|
||||
db.refresh(doc)
|
||||
|
||||
# Garantieende nur aus PDFs schätzen (Bilder haben keine Textebene).
|
||||
suggestion = None
|
||||
# Garantieende und Preis nur aus PDFs schätzen (Bilder haben keine Textebene).
|
||||
warranty = price = None
|
||||
if content_type == "application/pdf":
|
||||
suggestion = guess_warranty_until(
|
||||
extract_pdf_text(data), acquired_on=item.acquired_on
|
||||
)
|
||||
text = extract_pdf_text(data)
|
||||
warranty = guess_warranty_until(text, acquired_on=item.acquired_on)
|
||||
price = guess_price_cents(text)
|
||||
|
||||
return ItemDocumentUploadOut(
|
||||
id=doc.id,
|
||||
filename=doc.filename,
|
||||
content_type=doc.content_type,
|
||||
uploaded_at=doc.uploaded_at,
|
||||
suggested_warranty_until=suggestion,
|
||||
suggested_warranty_until=warranty,
|
||||
suggested_price_cents=price,
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user