feat(platform): add audit logs and activity feed
This commit is contained in:
parent
92cb8d1286
commit
c816e9869d
34 changed files with 1592 additions and 43 deletions
|
|
@ -58,6 +58,8 @@ Sie verbindet:
|
|||
- das konfigurierte Docker-Netzwerk
|
||||
- die notwendigen Runtime-Umgebungsvariablen
|
||||
|
||||
Im gemeinsamen Compose-Stack wird Athena am Host veroeffentlicht. Hermes wird nur intern im Docker-Netzwerk exponiert und von Athena ueber `HERMES_INTERNAL_URL` erreicht.
|
||||
|
||||
## BFF-Architektur
|
||||
|
||||
Olympus nutzt eine Backend-for-Frontend-Architektur.
|
||||
|
|
@ -172,6 +174,14 @@ Beispiele:
|
|||
|
||||
Nicht vorhandene Module wie Aufgaben, Tickets oder Projekte werden nicht mit Fake-Daten gefuellt. Stattdessen liefert das Dashboard leere Widgets mit klarer Meldung.
|
||||
|
||||
### Activity Feed
|
||||
|
||||
Der Activity Feed ist Teil der v0.5.0-Qualitaetsplattform.
|
||||
|
||||
Athena ruft `GET /api/activity-feed` auf. Die BFF-Route ruft serverseitig Hermes `GET /activity-feed` auf.
|
||||
|
||||
Der Feed basiert auf persistenten Audit Logs und zeigt die letzten relevanten Aktivitaeten. Hermes filtert die Eintraege anhand der Berechtigungen des aktuellen Benutzers. Ein Benutzer sieht dadurch nur Aktivitaeten zu Bereichen, fuer die er Leserechte besitzt.
|
||||
|
||||
## RBAC: Rollen und Berechtigungen
|
||||
|
||||
Olympus verwendet ein serverseitiges RBAC-System als Grundlage fuer alle CRM-Module.
|
||||
|
|
@ -250,6 +260,10 @@ Dashboard und System:
|
|||
- `system.settings.read`
|
||||
- `system.settings.update`
|
||||
|
||||
Audit:
|
||||
|
||||
- `audit_logs.read`
|
||||
|
||||
### Berechtigungspruefung
|
||||
|
||||
Zentrale Hermes-Dependencies:
|
||||
|
|
@ -374,12 +388,80 @@ Kontakte und Adressen gehoeren fachlich zum Kunden und werden aktuell ueber `cus
|
|||
|
||||
Ein Kunden-Delete entfernt aktuell den Kunden inklusive Adressen und Ansprechpartnern. Fuer spaetere Projekte oder Tickets ist ein fachlicher Loeschschutz vorzubereiten, sobald diese Module existieren.
|
||||
|
||||
## Audit Logs
|
||||
|
||||
Audit Logs sind die zentrale Nachvollziehbarkeitsschicht fuer v0.5.0.
|
||||
|
||||
Hermes persistiert relevante Ereignisse in der Tabelle `audit_logs`.
|
||||
|
||||
Erfasste Informationen:
|
||||
|
||||
- handelnder Benutzer
|
||||
- Aktion, z. B. `users.update` oder `customers.delete`
|
||||
- Objekttyp und Objekt-ID
|
||||
- lesbares Objektlabel
|
||||
- IP-Adresse und User-Agent
|
||||
- Vorher-/Nachher-Daten fuer Aenderungen
|
||||
- Metadaten fuer Kontextinformationen
|
||||
- Erstellungszeitpunkt
|
||||
|
||||
Sensible Felder wie Passwoerter, Tokens und Secrets werden vor dem Schreiben maskiert.
|
||||
|
||||
Audit Logs werden aktuell fuer diese Bereiche geschrieben:
|
||||
|
||||
- Login erfolgreich/fehlgeschlagen
|
||||
- Benutzer erstellen, bearbeiten, loeschen, Passwort aendern
|
||||
- Rollen erstellen, bearbeiten, loeschen, Berechtigungen aendern
|
||||
- Kunden erstellen, bearbeiten, loeschen
|
||||
- Ansprechpartner erstellen, bearbeiten, loeschen
|
||||
|
||||
Hermes-Endpunkte:
|
||||
|
||||
- `GET /audit-logs`
|
||||
- `GET /activity-feed`
|
||||
|
||||
Athena-BFF-Routen:
|
||||
|
||||
- `GET /api/audit-logs`
|
||||
- `GET /api/activity-feed`
|
||||
|
||||
Die Audit-Log-UI liegt unter `frontend/athena/app/audit-logs` und ist ueber `audit_logs.read` sichtbar.
|
||||
|
||||
## API-Response-Standard
|
||||
|
||||
Neue Plattform-Endpunkte verwenden eine einheitliche Response-Huelle:
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {},
|
||||
"message": "Daten geladen"
|
||||
}
|
||||
```
|
||||
|
||||
Fehlerantworten aus Hermes verwenden ein konsistentes Format mit `success`, `message`, `error_code` und `details`. Fuer bestehende Athena-Fehlerbehandlung bleibt `detail` zusaetzlich erhalten.
|
||||
|
||||
## Logging
|
||||
|
||||
Hermes konfiguriert Logging zentral ueber `backend/hermes/app/core/logging.py`.
|
||||
|
||||
HTTP-Requests werden strukturiert mit Methode, Pfad, Statuscode und Dauer geloggt. Fachliche Ereignisse bleiben in den API-Modulen als strukturierte Logeintraege erhalten.
|
||||
|
||||
Das Runtime-Loglevel wird ueber `LOG_LEVEL` gesteuert.
|
||||
|
||||
## Frontend-Feedback
|
||||
|
||||
Athena nutzt einen globalen Toast-Provider fuer konsistente Erfolgs- und Fehlermeldungen.
|
||||
|
||||
Aktuell werden Toasts in den CRUD-Flows fuer Benutzer, Rollen, Kunden und Ansprechpartner genutzt. Inline-Fehler bleiben dort erhalten, wo sie fuer Formulare und Dialoge hilfreich sind.
|
||||
|
||||
## Verzeichnisstruktur
|
||||
|
||||
```text
|
||||
backend/hermes
|
||||
app/
|
||||
api/
|
||||
audit/
|
||||
core/
|
||||
db/
|
||||
models/
|
||||
|
|
@ -393,6 +475,7 @@ backend/hermes
|
|||
frontend/athena
|
||||
app/
|
||||
api/
|
||||
audit-logs/
|
||||
customers/
|
||||
roles/
|
||||
users/
|
||||
|
|
@ -422,6 +505,9 @@ docker-compose.yml
|
|||
`ACCESS_TOKEN_EXPIRE_MINUTES`
|
||||
: Ablaufzeit fuer Access Tokens in Minuten.
|
||||
|
||||
`LOG_LEVEL`
|
||||
: Runtime-Loglevel fuer Hermes, z. B. `INFO`, `WARNING` oder `ERROR`.
|
||||
|
||||
### Athena
|
||||
|
||||
`HERMES_INTERNAL_URL`
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue