#115 — Einkaufsliste — Barcode-Scan nutzt Open Food Facts wie der Vorratsschrank #118

Closed
opened 2026-08-18 13:14:15 +02:00 by lena · 0 comments
lena commented 2026-08-18 13:14:15 +02:00 (Migrated from git.butzei.de)

Story: Einkaufsliste — Barcode-Scan nutzt Open Food Facts wie der Vorratsschrank

As a Nutzer der Einkaufsliste,
I want to dass ein unbekannter Barcode automatisch einen Produktnamen vorschlägt (wie im
Vorratsschrank), statt ihn komplett manuell eintippen zu müssen,
so that das Scannen für beide Listentypen gleich zuverlässig funktioniert.

Background

Entdeckt beim manuellen Testen von #113 (Kamera-Scan für die Einkaufsliste): ein bekanntermaßen
bei Open Food Facts gelistetes Produkt (8715035150300, Kikkoman Tamari) wurde beim Scannen in
der Einkaufsliste nicht erkannt — kein Bug in #113 selbst, sondern eine seit #90 offen gelassene
Lücke. ScanShoppingProductBarcodeCommandHandler prüft nur, ob der Barcode bereits einem Produkt
auf der eigenen Liste zugeordnet ist; anders als ScanPantryProductBarcodeCommandHandler (#94)
fragt er nie die externe Open-Food-Facts-Datenbank ab. Der ursprüngliche #90-Kommentar hatte das
bereits so benannt: "this story doesn't look barcodes up in an external database; that's #94's
Open Food Facts lookup, shared here once it exists via the same field"
— das Nachziehen wurde nie
umgesetzt.

AC

  • IOpenFoodFactsClient aus CqsTodo/Features/Pantry/OpenFoodFactsClient.cs in eine
    gemeinsame Stelle extrahiert (CqsTodo/OpenFoodFacts/), nutzbar von Pantry und Shopping.
  • ScanShoppingProductBarcodeCommand fragt bei unbekanntem Barcode ohne FallbackName Open
    Food Facts ab und liefert einen SuggestedName zurück (analog
    ScanPantryProductBarcodeResultDto).
  • ShoppingBarcodeScanDialog befüllt das Namensfeld mit dem Vorschlag vor, bleibt aber
    editierbar/leerbar, bevor der Nutzer bestätigt (identisch zu PantryBarcodeScanner).
  • Kein Vertrauensbonus für die externe Quelle — der vorgeschlagene Name durchläuft dieselbe
    ShoppingProductName-Validierung wie jeder manuell eingegebene Name.

Out of scope

  • Änderungen an der SSRF-Härtung/Barcode-Format-Validierung des Clients selbst (unverändert
    übernommen aus #94).
  • Verifikation der Kamera-Erkennung selbst — das ist #113s/#96s Aufgabe, nicht diese hier.
# Story: Einkaufsliste — Barcode-Scan nutzt Open Food Facts wie der Vorratsschrank **As a** Nutzer der Einkaufsliste, **I want to** dass ein unbekannter Barcode automatisch einen Produktnamen vorschlägt (wie im Vorratsschrank), statt ihn komplett manuell eintippen zu müssen, **so that** das Scannen für beide Listentypen gleich zuverlässig funktioniert. ## Background Entdeckt beim manuellen Testen von `#113` (Kamera-Scan für die Einkaufsliste): ein bekanntermaßen bei Open Food Facts gelistetes Produkt (`8715035150300`, Kikkoman Tamari) wurde beim Scannen in der Einkaufsliste nicht erkannt — kein Bug in `#113` selbst, sondern eine seit `#90` offen gelassene Lücke. `ScanShoppingProductBarcodeCommandHandler` prüft nur, ob der Barcode bereits einem Produkt auf der eigenen Liste zugeordnet ist; anders als `ScanPantryProductBarcodeCommandHandler` (`#94`) fragt er nie die externe Open-Food-Facts-Datenbank ab. Der ursprüngliche `#90`-Kommentar hatte das bereits so benannt: *"this story doesn't look barcodes up in an external database; that's `#94`'s Open Food Facts lookup, shared here once it exists via the same field"* — das Nachziehen wurde nie umgesetzt. ## AC - [x] `IOpenFoodFactsClient` aus `CqsTodo/Features/Pantry/OpenFoodFactsClient.cs` in eine gemeinsame Stelle extrahiert (`CqsTodo/OpenFoodFacts/`), nutzbar von Pantry und Shopping. - [x] `ScanShoppingProductBarcodeCommand` fragt bei unbekanntem Barcode ohne `FallbackName` Open Food Facts ab und liefert einen `SuggestedName` zurück (analog `ScanPantryProductBarcodeResultDto`). - [x] `ShoppingBarcodeScanDialog` befüllt das Namensfeld mit dem Vorschlag vor, bleibt aber editierbar/leerbar, bevor der Nutzer bestätigt (identisch zu `PantryBarcodeScanner`). - [x] Kein Vertrauensbonus für die externe Quelle — der vorgeschlagene Name durchläuft dieselbe `ShoppingProductName`-Validierung wie jeder manuell eingegebene Name. ## Out of scope - Änderungen an der SSRF-Härtung/Barcode-Format-Validierung des Clients selbst (unverändert übernommen aus `#94`). - Verifikation der Kamera-Erkennung selbst — das ist `#113s`/`#96s` Aufgabe, nicht diese hier.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
robert/todo#118
No description provided.