#101e — Vorratsschrank — CSV-Export/-Import-UI (Folge-Story zu #101) #104

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

Story: Vorratsschrank — CSV-Export/-Import-UI (Folge-Story zu #101)

Depends on: #101 (Backend ImportPantryProductsFromCsvCommand bereits geliefert).

As a Vorratsschrank-Nutzer,
I want to meinen Pantry-Bestand als CSV exportieren und importieren können,
so that ich Backups anlegen, Umzüge machen oder mit anderer Software (Rezept-Apps,
Tabellenkalkulation) Daten austauschen kann.

Acceptance criteria:

  • CsvExportDialogs kind-Union bekommt 'pantry' hinzu; unter dieser Option werden
    Spalten Name, Category, Quantity, TargetQuantity, Barcode exportiert. Nutzt die
    bereits vorhandenen GetPantryProductsQuery + GetPantryCategoriesQuery.
  • Neuer Import-Eintrag im Kontextmenü/Toolbar von PantryPage öffnet einen Datei-Auswahl-
    Dialog; die geparsten Zeilen werden an ImportPantryProductsFromCsvCommand geschickt und
    das Resultat (Imported, Skipped, CategoriesCreated) in einem Erfolgs-Toast angezeigt.
  • Bestehende Produkte mit gleichem Namen bekommen die importierte Menge gesetzt (nicht
    addiert) — matcht das Shopping-Import-Verhalten (bereits im Backend-Handler aus #101
    umgesetzt, unverändert durch diese Story).

Delivered 2026-08-10 — Import-Menüpunkt zusätzlich hinter isOwner gegated (matcht
ListActionsMenus Konvention für Shopping/Todo-Import); Export ungegated, ebenfalls konventionsgleich.
Backend-Autorisierung bleibt Mitgliedschafts-basiert (AuthorizePantryAccessForCurrentUserQuery) — das
Frontend-Gating ist reiner UX-Komfort, keine Sicherheitsgrenze (identisch zum bestehenden
Shopping/Todo-Verhalten). Siehe docs/features/done/101e_pantry_csv_export_import_ui.md.

Backend bereits vorhanden (aus #101):

  • ImportPantryProductsFromCsvCommand (Name/Category/Quantity/TargetQuantity/Barcode + CSV-
    Import-Result-DTO).
  • Kategorie-Auto-Anlage über CreatePantryCategoryCommand.

Out of scope: kein neuer Backend-Handler für Export (der ist in CsvExportDialog rein
Frontend-generiert, sobald es die Get-Queries kennt — siehe #83's Design).

# Story: Vorratsschrank — CSV-Export/-Import-UI (Folge-Story zu `#101`) **Depends on:** `#101` (Backend `ImportPantryProductsFromCsvCommand` bereits geliefert). **As a** Vorratsschrank-Nutzer, **I want to** meinen Pantry-Bestand als CSV exportieren und importieren können, **so that** ich Backups anlegen, Umzüge machen oder mit anderer Software (Rezept-Apps, Tabellenkalkulation) Daten austauschen kann. **Acceptance criteria:** - [x] `CsvExportDialog`s `kind`-Union bekommt `'pantry'` hinzu; unter dieser Option werden Spalten `Name, Category, Quantity, TargetQuantity, Barcode` exportiert. Nutzt die bereits vorhandenen `GetPantryProductsQuery` + `GetPantryCategoriesQuery`. - [x] Neuer Import-Eintrag im Kontextmenü/Toolbar von `PantryPage` öffnet einen Datei-Auswahl- Dialog; die geparsten Zeilen werden an `ImportPantryProductsFromCsvCommand` geschickt und das Resultat (`Imported`, `Skipped`, `CategoriesCreated`) in einem Erfolgs-Toast angezeigt. - [x] Bestehende Produkte mit gleichem Namen bekommen die importierte Menge gesetzt (nicht addiert) — matcht das Shopping-Import-Verhalten (bereits im Backend-Handler aus `#101` umgesetzt, unverändert durch diese Story). **Delivered 2026-08-10** — Import-Menüpunkt zusätzlich hinter `isOwner` gegated (matcht `ListActionsMenu`s Konvention für Shopping/Todo-Import); Export ungegated, ebenfalls konventionsgleich. Backend-Autorisierung bleibt Mitgliedschafts-basiert (`AuthorizePantryAccessForCurrentUserQuery`) — das Frontend-Gating ist reiner UX-Komfort, keine Sicherheitsgrenze (identisch zum bestehenden Shopping/Todo-Verhalten). Siehe `docs/features/done/101e_pantry_csv_export_import_ui.md`. **Backend bereits vorhanden (aus `#101`):** - `ImportPantryProductsFromCsvCommand` (Name/Category/Quantity/TargetQuantity/Barcode + CSV- Import-Result-DTO). - Kategorie-Auto-Anlage über `CreatePantryCategoryCommand`. **Out of scope:** kein neuer Backend-Handler für Export (der ist in `CsvExportDialog` rein Frontend-generiert, sobald es die Get-Queries kennt — siehe `#83`'s Design).
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#104
No description provided.