68 lines
2.1 KiB
Markdown
68 lines
2.1 KiB
Markdown
# 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
|