Audit-Log-Viewer
Filterbarer Browser der audit_log-Tabelle mit JSON-Diff
(vorher/nachher). Live seit 13.06.2026 (Commit 059589397).
Routes
GET /backoffice/audit-log
GET /backoffice/audit-log/<audit_uuid>
Liste
- Stat-Cards (gesamt / heute / Critical / Error in letzten 7 Tagen)
- Filter:
tage(1 / 7 / 30 / 90)aktion(z. B.tagesabschluss.abgeschlossen)schweregrad(debug/info/warn/error/critical)benutzer(Login-E-Mail oder Anzeige-Name)entitaet(Tabellen-/Modell-Name)
- Pagination mit
clone $bvorcountAllResults(false), damit der Pagination-Builder nicht den Limit-Builder zerstört.
Detail mit JSON-Diff
Side-by-side-Boxen für vorher_json und nachher_json. Geänderte Werte
werden in rot/grün hervorgehoben.
DB-Schema
CREATE TABLE audit_log (
audit_uuid CHAR(32) PRIMARY KEY, -- bin2hex(random_bytes(16))
zeitpunkt DATETIME NOT NULL,
mandant_uuid CHAR(36) NULL,
benutzer_uuid CHAR(36) NULL,
aktion VARCHAR(100) NOT NULL, -- z. B. "tagesabschluss.abgeschlossen"
schweregrad ENUM('debug','info','warn','error','critical') NOT NULL,
entitaet VARCHAR(60) NULL,
entitaet_id VARCHAR(64) NULL,
vorher_json LONGTEXT NULL,
nachher_json LONGTEXT NULL,
ip VARCHAR(45) NULL,
user_agent VARCHAR(255) NULL,
KEY idx_zeit (zeitpunkt),
KEY idx_user (benutzer_uuid),
KEY idx_akt (aktion)
);
Bekannte TODOs
- CSV-/Excel-Export (heute nur Browser-View)
- Auto-Refresh-Toggle
Verwandte Themen
- Tagesabschluss + Z-Bon (Quelle vieler Events)
- Kassen-Schichten (Storno schreibt
audit_log)