Zum Hauptinhalt springen

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

- Berechtigung `view:Trash` zur Anzeige. - Für Wiederherstellung: `restore:Trash`. - Für endgueltiges Löschen: `hardDelete:Trash`.

Berechtigungen (CASL)

ActionSubjectWirkungKeycloak-Rolle
viewFE_Trash, TrashListe/Detail aufrufbar
restoreTrashWiederherstellungAPP_SPEAMCORE_RESTORE_TRASH
hardDeleteTrashIrreversibles LöschenAPP_SPEAMCORE_HARDDELETE_TRASH

Schritt-für-Schritt-Anleitung

Summary anzeigen

  1. Papierkorb (/trash) — SimpleGrid mit Stat-Cards pro Entitaets-Typ. Zeigt Count und geschaetzten Speicherverbrauch.

Einträge pro Typ einsehen

  1. Auf eine Stat-Card klicken — Drawer mit Tabelle aller geloeschten Einträge dieses Typs.
  2. Suchfeld zur Filterung.
  3. 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).

Listenansicht — trash

Felder und Eingaben (lesend)

FeldnameDatentypBedeutung
entityTypeStringModellname (z. B. Customer, Product, Workorder).
tableNameStringDB-Tabellen-Name.
countIntegerAnzahl Einträge im Trash.
avgRowBytesIntegerDurchschnittliche Zeilen-Größe.
estimatedBytesIntegercount × 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

FehlerLösung
Eintrag laesst sich nicht wiederherstellenForeign-Key-Constraint zu bereits hard-geloeschtem Parent — manuelle DB-Korrektur erforderlich.
Hard-Delete-Button fehlthardDelete:Trash-Berechtigung fehlt.
estimatedBytes weicht stark abAverage-Row-Bytes basieren auf INFORMATION_SCHEMA-Statistiken — durch ANALYZE TABLE aktualisierbar.

API/Schnittstellen

MethodeEndpointZweckCASL
GET/api/trash/summaryAggregate pro Typview Trash
GET/api/trash/:entityTypeEinträge pro Typview Trash
POST/api/trash/:entityType/:id/restoreWiederherstellungrestore Trash
DELETE/api/trash/:entityType/:idEndgueltig löschenhardDelete Trash

Versionshinweise

  • 2026-04-30: Initiale Veroeffentlichung.