Phase 5: Audit-Spur pro Quelle (ausklappbares Modal)

Backend
- routers/audit.py: GET /api/audit-log nimmt jetzt resource_id als Filter
  (zusätzlich zu resource_type, action, admin_id, from_ts/to_ts).

Frontend
- dashboard.html: modalAudit (Modal) für die Audit-Spur einer Ressource.
- style.css: audit-entry Styles (action-Badge mit Farbcode pro Action-Typ,
  Diff als <details>-Block mit JSON-Pre).
- sources.js:
  - showSourceAudit(id, name) öffnet Modal, lädt /audit-log?resource_type=source&resource_id=...
  - renderAuditEntries: pro Eintrag Action-Badge + Meta (ts/admin/ip) +
    optional ausklappbarer Diff (before/after-JSON)
  - formatDateTime Helper
  - Audit-Button in der Aktionen-Spalte der Grundquellen-Tabelle
Dieser Commit ist enthalten in:
claude-dev
2026-05-09 03:19:32 +00:00
Ursprung 2001815e19
Commit 6b70a7195e
4 geänderte Dateien mit 131 neuen und 0 gelöschten Zeilen

Datei anzeigen

@@ -642,6 +642,20 @@
</div>
</div>
<!-- Modal: Audit-Spur einer Ressource (Phase 5) -->
<div class="modal-overlay" id="modalAudit">
<div class="modal modal-large">
<div class="modal-header">
<h3 id="auditTitle">Audit-Spur</h3>
<button class="modal-close" onclick="closeModal('modalAudit')">&times;</button>
</div>
<div class="modal-body">
<div id="auditContent" class="audit-content">Lade...</div>
</div>
</div>
</div>
<!-- Modal: Confirm -->
<div class="modal-overlay" id="modalConfirm">
<div class="modal" style="max-width: 400px;">