Add design spec: log viewer and auto-reload for admin UI
This commit is contained in:
parent
cdd55880d6
commit
fff9d1048d
@ -0,0 +1,67 @@
|
||||
# Design: Log-Viewer und Auto-Reload in der Admin-Oberfläche
|
||||
|
||||
## Kontext
|
||||
|
||||
Die Admin-Oberfläche zeigt aktuell nur API-Keys und Einstellungen. Es gibt kein automatisches Aktualisieren und keinen Zugriff auf die Logdateien. Hauptbedürfnis: Das aktuell geladene Ollama-Modell schnell im Blick haben, ohne manuell neu laden zu müssen.
|
||||
|
||||
## Scope
|
||||
|
||||
- Letzten 10 Zeilen von `usage.log` und `error.log` in der Settings-Sektion anzeigen
|
||||
- Alle Daten (Keys, Settings, Logs) alle 5 Minuten automatisch neu laden
|
||||
- Zeitstempel der letzten Aktualisierung anzeigen
|
||||
|
||||
---
|
||||
|
||||
## Backend
|
||||
|
||||
### Neuer Endpunkt: `GET /api/logs/{name}`
|
||||
|
||||
**Datei:** `backend/admin.py`
|
||||
|
||||
**Parameter:** `name` — `usage` oder `error` (andere Werte → 400)
|
||||
|
||||
**Verhalten:**
|
||||
- Leitet den Pfad aus `LOG_FILE` (Env-Var, Default: `logs/usage.log`) ab
|
||||
- `error` → selbes Verzeichnis, Dateiname `error.log`
|
||||
- Liest die letzten 10 Zeilen der Datei
|
||||
- Gibt `{"lines": ["...", ...]}` zurück
|
||||
- Datei nicht vorhanden → leeres Array `{"lines": []}`
|
||||
- Geschützt durch `require_admin_auth`
|
||||
|
||||
---
|
||||
|
||||
## Frontend
|
||||
|
||||
### Log-Anzeige in `SettingsSection`
|
||||
|
||||
**Datei:** `frontend/src/main.jsx`
|
||||
|
||||
- Neuer Unterabschnitt am Ende der Settings-Karte
|
||||
- Zwei `<pre>`-Blöcke: `usage.log` (immer) und `error.log` (nur wenn nicht leer)
|
||||
- Stil konsistent mit bestehenden Settings-Elementen (dunkler Hintergrund, Monospace-Font)
|
||||
- Daten werden beim Mount von `SettingsSection` zusammen mit den übrigen Settings geladen
|
||||
|
||||
### Auto-Reload
|
||||
|
||||
- `setInterval` im `App`-Component, Intervall: **5 Minuten (300 000 ms)**
|
||||
- Ruft dieselben Fetch-Funktionen auf wie beim Login: Keys + Settings + Logs
|
||||
- Timer wird beim Unmount (Logout) via `clearInterval` bereinigt
|
||||
- Oben rechts in der eingeloggten UI: kleiner Hinweis „Zuletzt aktualisiert: HH:MM"
|
||||
|
||||
---
|
||||
|
||||
## Nicht im Scope
|
||||
|
||||
- Live-Streaming / WebSocket
|
||||
- Filterung oder Suche in Logs
|
||||
- Konfigurierbare Zeilenzahl (fest: 10)
|
||||
- Automatisches Scrollen
|
||||
|
||||
---
|
||||
|
||||
## Tests
|
||||
|
||||
- `GET /api/logs/usage` gibt die letzten 10 Zeilen zurück
|
||||
- `GET /api/logs/error` gibt leeres Array zurück wenn Datei nicht existiert
|
||||
- `GET /api/logs/invalid` gibt 400 zurück
|
||||
- Manueller Test: Admin-UI öffnen, 5 Minuten warten, Timestamp prüfen
|
||||
Loading…
x
Reference in New Issue
Block a user