#113 — Kamera-basiertes Barcode-Scannen auch für die Einkaufsliste (gemeinsame Komponente) #116
Labels
No labels
priority/could
priority/must
priority/should
priority/wont
status/blocked
status/claimed
status/done-migrated
type/bug
type/feature
type/infra
type/tech-debt
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
robert/todo#116
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Story: Kamera-basiertes Barcode-Scannen auch für die Einkaufsliste (gemeinsame Komponente)
As a Nutzer der Einkaufsliste,
I want to Barcodes per Handy-Kamera scannen können, so wie es im Vorratsschrank (
#94) bereits funktioniert,statt die Nummer eintippen zu müssen,
so that ich beim Einkaufen/Auffüllen genauso schnell scannen kann wie im Vorratsschrank, ohne ein separates
Scanner-Gerät zu brauchen.
Depends on: keine (
#90und#94sind beide bereits geliefert).Hintergrund: Aktuell ist die Kamera-Anbindung uneinheitlich zwischen den beiden Listentypen:
PantryBarcodeScanner.tsx(#94) scannt bereits live über die Geräte-Kamera via@zxing/browser(
BrowserMultiFormatReader+getUserMedia-Videostream), mit Fallback auf ein Textfeld, falls Kamera/Permission/Secure-Context fehlen.
ShoppingBarcodeScanDialog.tsx(#90) ist bewusst rein textbasiert geblieben — die Design-Entscheidung in90_shopping_list_upgrades_design.mds "Scope-Entscheidungen" begründet das damit, dass physischeBarcode-Scanner (Hardware) eine Tastatur emulieren und daher ohne Kamera-Code funktionieren. Dieselbe Notiz
hält aber ausdrücklich fest, dass Kamera-Scan mit
#94"für beide Listentypen nutzbar" werden sollte(gemeinsames Barcode-Feld) — das wurde nach Auslieferung von
#94nie nachgezogen.Diese Story schließt die Lücke, indem die bestehende Kamera-Logik aus
#94wiederverwendet statt neu gebaut wird.Acceptance criteria:
PantryBarcodeScanner.tsx(Video-Element, zxing-Decode-Loop,Permission-/Kamera-Fehler-Fallback) wird in eine gemeinsame Komponente/einen Hook extrahiert, die/der von
beiden Dialogen genutzt wird — ohne Verhaltensänderung für den bestehenden Vorratsschrank-Scan.
ShoppingBarcodeScanDialogbekommt dieselbe Live-Kamera-Ansicht wie der Vorratsschrank; ein erfolgreicherScan löst denselben Ablauf aus wie heute das Eintippen + Enter (bestehender
ScanShoppingProductBarcodeCommand-Flow bleibt unverändert, inkl. Kategorie-Nachfrage aus#104).der Dialog wie im Vorratsschrank sauber auf das bestehende Textfeld zurück — kein Dead End.
funktioniert unverändert weiter.
Out of scope for this story:
Scan-Zuverlässigkeit) — das ist reine Verifizierung bereits gebauter Funktionalität und gehört in
#96sgebündelte Mobile-/Touch-Verifizierungsrunde, nicht in diese Bau-Story.
#96wird um diesen Punkt (Vorratsschrankund Einkaufsliste) ergänzt.