Admin: Statistiken pro Inventar & Inventar-Liste mit Paging/Sortierung/Filter/Suche #86

Closed
opened 2026-05-17 08:18:00 +00:00 by jreinemann-euris · 1 comment
jreinemann-euris commented 2026-05-17 08:18:00 +00:00 (Migrated from github.com)

Kontext

Die Admin-Seite zeigt aktuell globale Statistiken (Artikel, Lagerorte, Kategorien, Änderungen 30 Tage, letzte Änderung) über alle Inventare aggregiert. Es fehlt eine Aufschlüsselung pro Inventar. Außerdem wird die Inventar-Übersicht derzeit als einfache Karten-Ansicht dargestellt – ohne Sortierung, Filterung, Paging oder Suche.

Akzeptanzkriterien

1. Statistiken pro Inventar (Backend)

  • Neuer Endpoint GET /api/admin/stats/inventories → liefert Liste von Statistiken pro Inventar
  • Pro Inventar: inventoryId, inventoryName, totalItems, totalLocations, totalCategories, recentTransactions (30 Tage), lastUpdated, userCount (zugewiesene Benutzer)
  • Bestehender GET /api/admin/stats bleibt als Gesamt-Aggregat erhalten

2. Statistiken pro Inventar (Admin-UI)

  • Unterhalb der globalen Statistiken eine aufklappbare/erweiterbare Ansicht mit Statistiken pro Inventar
  • Jedes Inventar zeigt dieselben KPIs wie die Gesamtstatistik (Artikel, Lagerorte, Kategorien, Änderungen, letzte Änderung) + Anzahl Benutzer

3. Inventar-Liste ersetzen (Admin-UI)

  • Aktuelle Inventar-Karten-Ansicht durch eine Standard-Tabelle ersetzen
  • Paging: Seitenweise Anzeige mit konfigurierbarer Seitengröße (10/25/50)
  • Sortierung: Klick auf Spaltenheader sortiert aufsteigend/absteigend (Name, Artikelanzahl, letzte Änderung, Benutzeranzahl)
  • Filterung: Filter-Dropdown oder -Chips (z.B. nach Benutzeranzahl > 0, kürzlich aktiv)
  • Suche: Textfeld zum Durchsuchen nach Inventar-Name
  • Spalten: Name, Artikel, Lagerorte, Kategorien, Benutzer, Letzte Änderung, Aktionen

Technische Hinweise

  • InventoryRepository.listInventoriesWithUsers() liefert bereits Inventar-Daten inkl. zugewiesener Benutzer
  • getAggregatedStats() kann als Vorlage für die pro-Inventar-Variante dienen – Queries nach inventoryId gruppieren
  • Paging/Sortierung/Filter rein client-seitig in der Admin-HTML-Seite (Datenmenge überschaubar)
  • Admin-UI liegt unter server/src/main/resources/static/admin/index.html
## Kontext Die Admin-Seite zeigt aktuell globale Statistiken (Artikel, Lagerorte, Kategorien, Änderungen 30 Tage, letzte Änderung) über alle Inventare aggregiert. Es fehlt eine Aufschlüsselung pro Inventar. Außerdem wird die Inventar-Übersicht derzeit als einfache Karten-Ansicht dargestellt – ohne Sortierung, Filterung, Paging oder Suche. ## Akzeptanzkriterien ### 1. Statistiken pro Inventar (Backend) - [ ] Neuer Endpoint `GET /api/admin/stats/inventories` → liefert Liste von Statistiken pro Inventar - [ ] Pro Inventar: `inventoryId`, `inventoryName`, `totalItems`, `totalLocations`, `totalCategories`, `recentTransactions` (30 Tage), `lastUpdated`, `userCount` (zugewiesene Benutzer) - [ ] Bestehender `GET /api/admin/stats` bleibt als Gesamt-Aggregat erhalten ### 2. Statistiken pro Inventar (Admin-UI) - [ ] Unterhalb der globalen Statistiken eine aufklappbare/erweiterbare Ansicht mit Statistiken pro Inventar - [ ] Jedes Inventar zeigt dieselben KPIs wie die Gesamtstatistik (Artikel, Lagerorte, Kategorien, Änderungen, letzte Änderung) + Anzahl Benutzer ### 3. Inventar-Liste ersetzen (Admin-UI) - [ ] Aktuelle Inventar-Karten-Ansicht durch eine Standard-Tabelle ersetzen - [ ] **Paging**: Seitenweise Anzeige mit konfigurierbarer Seitengröße (10/25/50) - [ ] **Sortierung**: Klick auf Spaltenheader sortiert aufsteigend/absteigend (Name, Artikelanzahl, letzte Änderung, Benutzeranzahl) - [ ] **Filterung**: Filter-Dropdown oder -Chips (z.B. nach Benutzeranzahl > 0, kürzlich aktiv) - [ ] **Suche**: Textfeld zum Durchsuchen nach Inventar-Name - [ ] Spalten: Name, Artikel, Lagerorte, Kategorien, Benutzer, Letzte Änderung, Aktionen ## Technische Hinweise - `InventoryRepository.listInventoriesWithUsers()` liefert bereits Inventar-Daten inkl. zugewiesener Benutzer - `getAggregatedStats()` kann als Vorlage für die pro-Inventar-Variante dienen – Queries nach `inventoryId` gruppieren - Paging/Sortierung/Filter rein client-seitig in der Admin-HTML-Seite (Datenmenge überschaubar) - Admin-UI liegt unter `server/src/main/resources/static/admin/index.html`
jreinemann-euris commented 2026-05-17 08:56:32 +00:00 (Migrated from github.com)

Abgeschlossen (2026-05-17)

Zyklen: 1
Tests: 148 Tests, 0 Fehler

Implementierte Artefakte

  • \InventoryStatsPerInventoryDto: Neues DTO mit inventoryId, inventoryName, totalItems, totalLocations, totalCategories, recentTransactions, lastUpdated, userCount
  • \InventoryRepository.getStatsPerInventory(): Stats pro Inventar via Exposed-Queries
  • \GET /api/admin/stats/inventories: Neuer Admin-only Endpoint (401/403 korrekt)
  • Admin-UI Stats-Bereich: Aufklappbarer Unterbereich mit Statistiken pro Inventar (sortierbar per Klick)
  • Admin-UI Inventar-Übersicht: Karten-Ansicht ersetzt durch sortierbare Tabelle mit Paging (10/25/50), Filter (alle/mit Benutzern/ohne) und Freitextsuche
  • Tests: 3 neue Repository-Tests + 3 neue Endpoint-Integrationstests

Abweichungen

keine

## Abgeschlossen (2026-05-17) **Zyklen:** 1 **Tests:** ✅ 148 Tests, 0 Fehler ### Implementierte Artefakte - ✅ \InventoryStatsPerInventoryDto\: Neues DTO mit inventoryId, inventoryName, totalItems, totalLocations, totalCategories, recentTransactions, lastUpdated, userCount - ✅ \InventoryRepository.getStatsPerInventory()\: Stats pro Inventar via Exposed-Queries - ✅ \GET /api/admin/stats/inventories\: Neuer Admin-only Endpoint (401/403 korrekt) - ✅ Admin-UI Stats-Bereich: Aufklappbarer Unterbereich mit Statistiken pro Inventar (sortierbar per Klick) - ✅ Admin-UI Inventar-Übersicht: Karten-Ansicht ersetzt durch sortierbare Tabelle mit Paging (10/25/50), Filter (alle/mit Benutzern/ohne) und Freitextsuche - ✅ Tests: 3 neue Repository-Tests + 3 neue Endpoint-Integrationstests ### Abweichungen keine
Sign in to join this conversation.
No description provided.