Papierkorb (Trash)
Zweck
/trash liefert eine mandanten-uebergreifende Sicht auf alle Einträge, die über Sequelize-Paranoid (deletedAt != null) soft-gelöscht wurden. Pro Entitaets-Typ werden aggregiert:
count— Anzahl Einträge im Trash.avgRowBytes— durchschnittliche Zeilen-Größe in der Tabelle.estimatedBytes— geschaetzter Speicherverbrauch (count × avgRowBytes).
Anwender koennen pro Eintrag wiederherstellen (restore) oder endgueltig löschen (hardDelete). Hard-Delete ist irreversibel und durch eine zusaetzliche Berechtigung geschuetzt.
Voraussetzungen
Berechtigungen (CASL)
| Action | Subject | Wirkung | Keycloak-Rolle |
|---|---|---|---|
view | FE_Trash, Trash | Liste/Detail aufrufbar | — |
restore | Trash | Wiederherstellung | APP_SPEAMCORE_RESTORE_TRASH |
hardDelete | Trash | Irreversibles Löschen | APP_SPEAMCORE_HARDDELETE_TRASH |
Schritt-für-Schritt-Anleitung
Summary anzeigen
- Papierkorb (
/trash) — SimpleGrid mit Stat-Cards pro Entitaets-Typ. Zeigt Count und geschaetzten Speicherverbrauch.
Einträge pro Typ einsehen
- Auf eine Stat-Card klicken — Drawer mit Tabelle aller geloeschten Einträge dieses Typs.
- Suchfeld zur Filterung.
- Pro Zeile: Vorschau (Eye-Icon), Wiederherstellen (Refresh-Icon), Endgueltig löschen (Trash-Icon).
Endgueltiges Löschen
Klick auf Trash-Icon → AlertDialog zur Bestätigung — danach DELETE /api/trash/:entityType/:id (hard delete).

Felder und Eingaben (lesend)
| Feldname | Datentyp | Bedeutung |
|---|---|---|
entityType | String | Modellname (z. B. Customer, Product, Workorder). |
tableName | String | DB-Tabellen-Name. |
count | Integer | Anzahl Einträge im Trash. |
avgRowBytes | Integer | Durchschnittliche Zeilen-Größe. |
estimatedBytes | Integer | count × avgRowBytes. |
Wiederverwendbare Konzepte
Verknuepfungen zu anderen Modulen
Alle Module mit Soft-Delete-Modellen — typisch Modelle mit paranoid: true-Flag in Sequelize.
Häufige Fehler und Lösungen
| Fehler | Lösung |
|---|---|
| Eintrag laesst sich nicht wiederherstellen | Foreign-Key-Constraint zu bereits hard-geloeschtem Parent — manuelle DB-Korrektur erforderlich. |
| Hard-Delete-Button fehlt | hardDelete:Trash-Berechtigung fehlt. |
estimatedBytes weicht stark ab | Average-Row-Bytes basieren auf INFORMATION_SCHEMA-Statistiken — durch ANALYZE TABLE aktualisierbar. |
API/Schnittstellen
| Methode | Endpoint | Zweck | CASL |
|---|---|---|---|
GET | /api/trash/summary | Aggregate pro Typ | view Trash |
GET | /api/trash/:entityType | Einträge pro Typ | view Trash |
POST | /api/trash/:entityType/:id/restore | Wiederherstellung | restore Trash |
DELETE | /api/trash/:entityType/:id | Endgueltig löschen | hardDelete Trash |
Versionshinweise
- 2026-04-30: Initiale Veroeffentlichung.