2.1 KiB
2.1 KiB
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.logunderror.login 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, Dateinameerror.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) underror.log(nur wenn nicht leer) - Stil konsistent mit bestehenden Settings-Elementen (dunkler Hintergrund, Monospace-Font)
- Daten werden beim Mount von
SettingsSectionzusammen mit den übrigen Settings geladen
Auto-Reload
setIntervalimApp-Component, Intervall: 5 Minuten (300 000 ms)- Ruft dieselben Fetch-Funktionen auf wie beim Login: Keys + Settings + Logs
- Timer wird beim Unmount (Logout) via
clearIntervalbereinigt - 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/usagegibt die letzten 10 Zeilen zurückGET /api/logs/errorgibt leeres Array zurück wenn Datei nicht existiertGET /api/logs/invalidgibt 400 zurück- Manueller Test: Admin-UI öffnen, 5 Minuten warten, Timestamp prüfen