Modulare Startseite: Kartenraster, eigene Anordnung je Benutzer, Auswertungen
Die Uebersicht war fest verdrahtet und fuer alle gleich. Jetzt besteht sie aus Karten in einem 12-Spalten-Raster, die sich ziehen, in der Groesse aendern und einrasten lassen (react-grid-layout). "Anordnen" schaltet das frei, gespeichert wird ausdruecklich - Probieren bleibt folgenlos. Anordnung: - Neue Tabelle dashboard_layouts; user_id = NULL ist die Admin-Vorgabe. - Jeder Benutzer hat seine eigene Anordnung. Admins speichern eine Vorgabe fuer alle und koennen sie ueber die Einstellung dashboard_enforced verbindlich machen; dann lehnt das Backend das Speichern eigener Anordnungen ab. - "Auf Vorgabe zuruecksetzen" verwirft die persoenliche Anordnung. 15 Karten (Verzeichnis web/src/dashboard/cards.jsx, neue Karte = ein Eintrag): Schnellzugriff, Status, Artikelzahl, Artikeleinheiten, Bald ablaufend, Abgelaufen, Einkaufsliste, letzte Bewegungen sowie sechs Auswertungen (Ablauf-Ring, Kategorien-Ring, Kategorien nach Zustand, Bestandsverlauf, Verlauf eines Artikels, Ein-/Auslagerungen). Diagramme als eigene SVG-Komponenten statt Diagramm-Paket: - Zustandsfarben (ok/bald/abgelaufen) sind Statusangaben aus den Tokens und stehen nie ohne Beschriftung; Kategorien nutzen eine gepruefte Farbreihe in fester Ordnung, ab sieben Kategorien wird zu "Andere" gebuendelt. - Eine Werteachse, duenne Marken, zurueckhaltendes Gitter, Fadenkreuz mit Kurzinfo. Hell und Dunkel haben eigene Farbstufen. Mengen durchgehend in Artikeleinheiten (Glaeser, Packungen, Stueck): Gramm und Stueck lassen sich nicht addieren, Gebinde schon. Der bisher dreifach vorhandene Helfer liegt jetzt einmal in services/conversion.py::article_unit. Der Verlauf wird rueckwaerts vom heutigen Bestand aus den Bewegungen rekonstruiert. Bekannte Ungenauigkeit, im Code und in der Roadmap vermerkt: Die Umrechnung nutzt die heutige Packungsgroesse. Geprueft: "npm run build" laeuft durch. Die neuen pytest-Tests (backend/tests/test_dashboard.py) konnten hier nicht laufen - auf diesem Rechner ist kein Python installiert. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -66,6 +66,29 @@ Selfhostbare Lebensmittel-Lagerverwaltung. Aufbau in mehreren Schritten.
|
||||
Artikel darin lagen.
|
||||
- **Eigenes Logo und Favicon** je Installation (Einstellungen → Darstellung).
|
||||
|
||||
## Schritt 2c – Modulare Startseite mit Auswertungen ✅
|
||||
- **Raster statt fester Seite:** Die Übersicht besteht aus Karten, die sich ziehen,
|
||||
in der Größe ändern und einrasten lassen (react-grid-layout, 12 Spalten).
|
||||
„Anordnen" schaltet das frei, gespeichert wird ausdrücklich.
|
||||
- **Pro Benutzer eigene Anordnung** (`dashboard_layouts`, `user_id = NULL` ist die
|
||||
Admin-Vorgabe). Admins speichern eine Vorgabe für alle und können sie über
|
||||
`dashboard_enforced` auch **verbindlich** setzen; Benutzer setzen jederzeit
|
||||
auf die Vorgabe zurück.
|
||||
- **15 Karten** im Verzeichnis `web/src/dashboard/cards.jsx`: Schnellzugriff,
|
||||
Status, zwei Kennzahlen, Bald ablaufend, Abgelaufen, Einkaufsliste, letzte
|
||||
Bewegungen sowie sechs Auswertungen. Eine neue Karte ist ein Eintrag mehr.
|
||||
- **Diagramme als eigene SVG-Komponenten** (kein Diagramm-Paket): Ring, gestapelte
|
||||
Balken, Linie mit Fadenkreuz. Zustandsfarben (ok/bald/abgelaufen) sind
|
||||
Statusangaben aus den Tokens und stehen nie ohne Beschriftung; Kategorien nutzen
|
||||
eine geprüfte Farbreihe in fester Ordnung, ab sieben Kategorien wird zu „Andere"
|
||||
gebündelt. Hell und Dunkel haben eigene Stufen.
|
||||
- **Alle Mengen in Artikeleinheiten** (Gläser, Packungen, Stück). Gramm und Stück
|
||||
lassen sich nicht addieren – Gebinde schon. Der Helfer dafür liegt jetzt einmal
|
||||
zentral in `backend/app/services/conversion.py::article_unit`.
|
||||
- **Verlauf** wird aus den Bewegungen rückwärts vom heutigen Bestand rekonstruiert.
|
||||
*Bekannte Ungenauigkeit:* Die Umrechnung nutzt die heutige Packungsgröße; wird
|
||||
sie später geändert, verschiebt sich auch die Historie.
|
||||
|
||||
## Schritt 3 – Weitere Ideen – offen
|
||||
- **Ablauf-Push-Benachrichtigungen** via APNs (setzt die App voraus).
|
||||
- **Einkaufsliste verfeinern:** Abhaken dauerhaft speichern, manuelle Einträge,
|
||||
|
||||
Reference in New Issue
Block a user