- Neue Tabelle api_keys (Provider, Name, ApiKey, IsActive)
- Admin-CRUD: GET/POST/PUT/DELETE /api/admin/api-keys
- Aktivieren/Deaktivieren pro Provider (nur einer aktiv)
- Live-Token-Update im AnthropicService ohne Neustart
- Migration: AnthropicToken aus appsettings.Production.json → DB
- AnthropicToken aus ServerSettings-Definitionen + appsettings entfernt
- Frontend: API-Keys-Seite mit Erstellen/Bearbeiten/Löschen/Toggle
- Dashboard: API-Keys-Link für Admins
- MaxHistory (Default: 120): Max History-Messages pro API-Request
- ReminderInterval (Default: 30): System-Prompt Reminder alle N Messages (0 = deaktiviert)
- Beide Werte über Server-Settings-UI konfigurierbar
- Hardcoded Werte in ChatService durch konfigurierbare Felder ersetzt
Problem: systemd setzt WorkingDirectory=/app/gott (= ContentRoot),
aber AppContext.BaseDirectory zeigt auf /app/gott/publish/.
Dadurch existierten zwei appsettings.Production.json – .NET las die
eine, die Server-Settings-UI schrieb die andere. Config-Änderungen
wie PayloadLogging hatten daher keinen Effekt.
Fix: ProductionConfigPath und FallbackConfigPath werden jetzt von
app.Environment.ContentRootPath abgeleitet statt AppContext.BaseDirectory.
- Program.cs: Port aus Config lesen mit Fallback 19000
- appsettings.json: Port: 19000 als Default
- ServerSettingsEndpoint: Port als erste Einstellung (mit Neustart-Hinweis)