Commit Graph

18 Commits

Author SHA1 Message Date
035c444dfb Aktuelle Einkaufsliste serverseitig merken (Fix iOS/PWA ohne Session)
Made-with: Cursor
2026-04-23 19:27:35 +02:00
f9993b4c73 Kassabon-Korrekturen speichern und Listen-Scroll stabilisieren.
Receipt-Scan: Artikelzeilen gehen mit Daten speichern in raw_meta; ein Formular fuer Kopf und Zeilen; OCR per separatem Form ohne Verschachtelung; apply-items Route akzeptiert POST und PATCH.

Einkaufsliste: Scrollposition nach Erledigt-Toggle wiederherstellen und overflow-anchor am Zwei-Spalten-Grid abschalten.
Made-with: Cursor
2026-04-04 15:33:32 +02:00
b9e8b495b7 Verbessere mobile Eintragserfassung mit Fokus-Ruecksprung.
Nach dem Speichern bleibt der Fokus im Feld Neuer Eintrag und die mobile Ansicht nutzt weniger vertikalen Platz, damit auf iPhone mehr Listeneintraege sichtbar sind.

Made-with: Cursor
2026-04-01 15:15:26 +02:00
bec9b466fc Update OCR-Positionsauswahl nach Uebernahme konsistent.
Bereits uebernommene Positionen bleiben in der OCR-Liste abgewaehlt und manuell demarkierte Zeilen werden pro Bon gespeichert, damit die Auswahl auch nach erneutem OCR erhalten bleibt.

Made-with: Cursor
2026-04-01 12:54:28 +02:00
092e3b2a61 feat: Kassabon-OCR, Receipt-Scan-UX und optionale Geschaeftssuche
- OCR: Debug-Meta fuer Geschaeftserkennung, Bildvorverarbeitung (Deskew/Kontrast)
- Reprocess: leere Geschaeft/Datum/Summe aus OCR; Uebernahme-Meta bleibt erhalten
- Artikelvorschlaege erst unter dem Datum; Hinweise zu Uebernahme und Listen-Treffern
- Optional: Spar-Suche (StoreSearchController, Service), Routen und .env.example

Made-with: Cursor
2026-03-31 22:45:07 +02:00
0c90213539 Kassazettel-Upload mit OCR-Auswertung und Produktvorschlaege einfuehren.
Es gibt jetzt einen eigenen Kassazettel-Bereich mit Foto-Upload, OCR-Extraktion (Tesseract) und editierbaren Vorschlagsfeldern fuer Geschaeft, Datum und Summe. Zusaetzlich zeigt das schnelle Neueintrag-Feld Vorschlaege aus bestehenden Produkten der aktuellen Liste als Dropdown.

Made-with: Cursor
2026-03-31 21:04:39 +02:00
9e354d8ef5 Eintrag-Reaktivierung: erledigte Treffer statt Duplikat neu anlegen
Beim Anlegen wird ein bestehender erledigter Eintrag mit gleichem Produktnamen in der aktuellen Liste wieder auf offen gesetzt (statt neuen Eintrag zu erzeugen).

Made-with: Cursor
2026-03-31 19:47:16 +02:00
a590a74cab Fix: HTTP 500 bei Foto ohne Preis (price_decimal NULL + Foto-Validierung)
- Migration: price_decimal sicher nullable (Mediathek/Foto-only)

- Validierung: mimes statt File::types, max 15360 KB

Made-with: Cursor
2026-03-30 17:58:12 +02:00
99496071ad Such-URL-Vorlagen, Zeilen-Bearbeitung, Loeschen, Chevron-CSS
- Geschaefte: search_url_template (Migration), Pflege-UI eingeklappt mit Kacheln, Testen-Link

- Eintraege: Zeile oeffnet Panel statt Icon; DELETE mit Foto-Bereinigung; Such-Links im Panel

- details-Chevron-Drehung ueber app.css (.details-chevron), Build in html/build aktualisiert

Hinweis: StoreSearchController/SparSearchService bleiben unversioniert (nicht angebunden).
Made-with: Cursor
2026-03-30 17:51:26 +02:00
bfc6247322 Preisstaffel fuer Eintraege erfassen
Made-with: Cursor
2026-03-30 12:27:53 +02:00
a707aadd4f Listen: anlegen, Titel, Foto-Log
Made-with: Cursor
2026-03-30 10:36:09 +02:00
52ef8feba3 Bilder 2026-03-29 22:12:17 +02:00
b0feb07a62 Bilder 2026-03-29 22:08:56 +02:00
e9b5837791 Bild 2026-03-29 21:57:49 +02:00
122f6920dd Bild 2026-03-29 21:51:19 +02:00
59cfc18f48 Teilen mit anderen Benutzern 2026-03-29 20:50:30 +02:00
b2a518e349 Einkaufsliste-UI, Prompts, Apache-Setup ignorieren 2026-03-29 18:10:02 +02:00
0a07894d55 Initialer Stand der Einkaufsliste
Made-with: Cursor
2026-03-27 12:36:18 +01:00