iOS: Kassenzettel scannen -> Lebensmittel erkennen & einlagern
Neuer Flow (Kachel im Listen-Tab): Foto aufnehmen/waehlen, Artikelbereich per Rechteck markieren, on-device OCR (Vision, deutsch; Bild bleibt auf dem Geraet), Zeilen an /products/match schicken. Pruefen-Liste je Zeile: Artikel-Picker (Auto-Treffer ueber Schwellwert + eigene Lebensmittel-Suche), Menge (aus Zeile geparst, korrigierbar), Lagerort-Dropdown + QR-Scan. Einlagern per checkInBatch, unbekannte Zeilen werden uebersprungen; keine Neuanlage. Backend: MatchCandidate traegt package_size/base_unit mit, damit die App die Einheit ohne Extra-Abruf kennt. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -166,6 +166,8 @@ struct ScanTabView: View {
|
||||
}
|
||||
|
||||
struct ListsTabView: View {
|
||||
@State private var kassenzettelAn = false
|
||||
|
||||
var body: some View {
|
||||
NavigationStack {
|
||||
VStack(spacing: 16) {
|
||||
@@ -213,10 +215,18 @@ struct ListsTabView: View {
|
||||
ActionTile(title: "Verlauf", subtitle: "Wer hat wann was ein- und ausgelagert",
|
||||
systemImage: "clock.arrow.circlepath")
|
||||
}
|
||||
Button {
|
||||
kassenzettelAn = true
|
||||
} label: {
|
||||
ActionTile(title: "Kassenzettel", subtitle: "Bon fotografieren und Lebensmittel einlagern",
|
||||
systemImage: "doc.text.viewfinder")
|
||||
}
|
||||
.buttonStyle(.plain)
|
||||
Spacer()
|
||||
}
|
||||
.padding()
|
||||
.navigationTitle("Listen")
|
||||
.fullScreenCover(isPresented: $kassenzettelAn) { KassenzettelView() }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user