Einheiten (neu):
- Tabelle units (name, kind=count|weight|volume, factor, is_builtin); eingebaut
Stueck/Gramm/Kilogramm/Milliliter/Liter, Admin kann eigene anlegen (z.B. Pfund=500g).
- Bestaende bleiben intern in kanonischer Basis (Stueck/Gramm/Milliliter);
Product.display_unit_id und Group.min_stock_unit_id als nullable FKs.
- Neuer Umrechnungs-Service (services/conversion.py) ersetzt die feste Einheitenlogik;
Ein-/Auslagern und Gruppen-Mindestbestand rechnen ueber den Faktor.
- Gruppen-Mindestbestand mit Einheit; Gruppenbestand summiert nur Produkte
passender Art. Neue Verwaltungsseite "Einheiten" (Admin).
- Schonende Migration beim Start: ADD COLUMN IF NOT EXISTS (Postgres), damit
bestehende Installationen ihre Daten behalten.
Chargen:
- PATCH /lots/{id} und DELETE /lots/{id}: Menge/MHD korrigieren, Charge loeschen
(wird als Korrektur-Bewegung protokolliert). Bearbeitung im Produktdetail.
Auslagern:
- Optionales lot_id: gezielt aus einer bestimmten Charge/MHD abbuchen statt FEFO;
Auswahl-Dropdown in der Auslagern-Seite.
Sonstiges: Roadmap aktualisiert, Tests fuer die Umrechnung.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
54 lines
3.1 KiB
Markdown
54 lines
3.1 KiB
Markdown
# Project-Good – Roadmap
|
||
|
||
Selfhostbare Lebensmittel-Lagerverwaltung. Aufbau in mehreren Schritten.
|
||
|
||
## Schritt 1 – Fundament ✅
|
||
- Backend (FastAPI + PostgreSQL): Datenmodell, Auth mit Rollen (Admin/Benutzer),
|
||
Chargen mit MHD, FEFO-Auslagern, Open-Food-Facts-Lookup (v0-API) mit lokalem Fallback.
|
||
- Web-UI (React/Vite): Login, Dashboard, Ein-/Auslagern, Produkte, Lagerorte,
|
||
Benutzerverwaltung, Einkaufsliste.
|
||
- Deployment: Docker Compose + `install.sh` (Docker-/curl-Autoinstall, Secrets,
|
||
erster Admin, Health-Check), README.
|
||
- Tests: pytest für FEFO, Einheiten-Umrechnung und OFF-Mengenerkennung.
|
||
|
||
## Schritt 1b – Ausbau Web-UI ✅
|
||
- **Design:** professionelles Layout mit Seitenleiste, eigenes SVG-Icon-Set
|
||
(bewusst keine Emojis), Light-/Dark-Mode, konsistente Farbcodierung
|
||
(gelb = Warnfrist, rot = abgelaufen).
|
||
- **Gruppen:** Verwaltung, Zuordnung im Produkt, Gruppen-Mindestbestand **mit Einheit**,
|
||
Auto-Zuordnungsvorschlag aus der OFF-Kategorie.
|
||
- **Einheiten (verwaltbar):** eigene Tabelle mit Art (Anzahl/Gewicht/Volumen) und
|
||
Umrechnungsfaktor. Eingebaut: Stück, Gramm, Kilogramm, Milliliter, Liter.
|
||
Admins können weitere anlegen (z.B. Pfund = 500 g). Gilt für Produkte **und**
|
||
Gruppen-Mindestbestände; Bestände werden intern in der kanonischen Basiseinheit
|
||
(Stück/Gramm/Milliliter) gespeichert.
|
||
- **Einlagern:** Drei-Wege-Barcode-Erkennung (bekannt / bei OFF gefunden → inline
|
||
anlegen / unbekannt), mehrere Chargen je Vorgang mit eigenem MHD,
|
||
Warnung bei bereits abgelaufenem MHD.
|
||
- **Auslagern:** automatisch per FEFO **oder** gezielte Auswahl einer Charge/MHD,
|
||
auch Teilmengen.
|
||
- **Chargen bearbeiten:** Menge/MHD korrigieren und Chargen löschen (mit
|
||
Protokollierung als Korrektur-Bewegung).
|
||
- **Lagerorte:** beliebig tief verschachtelbar (Schrank → Fach → Kiste → …).
|
||
- **Mindestbestände:** je Produkt wahlweise in der Produkteinheit oder in Packungen.
|
||
- **Verlauf:** Bewegungsprotokoll (wer/was/wann), **Einstellungen:** Ablauf-Warnfrist.
|
||
- **Migration:** schonendes Nachziehen neuer Spalten beim Start
|
||
(`ADD COLUMN IF NOT EXISTS`), damit bestehende Installationen ihre Daten behalten.
|
||
|
||
## Schritt 2 – Native iOS-App (SwiftUI) – offen
|
||
- Login (Server-URL + Passwort, Token im Keychain).
|
||
- Barcode-Scan (VisionKit / AVFoundation).
|
||
- Einlagern-Flow: scannen → Lookup/Vorbefüllung → Menge + Einheit + MHD (mehrere Chargen).
|
||
- Auslagern-Flow: scannen → Menge/Einheit, FEFO oder Chargenauswahl.
|
||
- Einkaufsliste- und „bald ablaufend“-Ansicht.
|
||
- Produkte bei Bedarf direkt in der App anlegen.
|
||
|
||
## Schritt 3 – Weitere Ideen – offen
|
||
- **Ablauf-Push-Benachrichtigungen** via APNs (setzt die App voraus).
|
||
- **Einkaufsliste verfeinern:** Abhaken dauerhaft speichern, manuelle Einträge,
|
||
Mengenvorschläge in Packungen.
|
||
- **Statistik/Auswertung** über den Bewegungsverlauf (Verbrauch pro Zeitraum).
|
||
- **Lagerort beim Auslagern** berücksichtigen bzw. pro Charge wählbar beim Einlagern.
|
||
- **Produktbilder lokal cachen** (aktuell direkt von Open Food Facts geladen).
|
||
- **Alembic-Migrationen** statt `create_all` + Startup-ALTER, sobald das Schema stabil ist.
|