# 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 `
`-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