feat: Resilienz (Fallback-Ketten) und Metriken (#5)

- Fallback-Provider (app/providers/fallback.py) fuer STT/LLM/TTS: Provider-Kette
  der Reihe nach; Config *_FALLBACK; build_orchestrator baut Ketten (dedupliziert)
- LLM-Stream-Fallback nur solange kein Token gesendet wurde
- Metriken (app/metrics.py): In-Memory Counter/Timer, keine externe Dependency
- HTTP-Middleware (Requests/Latenz/Status je Pfad); Pipeline-Stufen-Timing stt/llm/tts;
  Fallback-/Fehlerzaehler; GET /api/metrics (JSON + Prometheus)
- Tests: 58 gruen (+6); Doku aktualisiert (README, BEDIENUNGSANLEITUNG, Architektur, .env.example)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-06-17 05:19:07 +02:00
commit 6422444017
13 changed files with 452 additions and 23 deletions

View file

@ -292,7 +292,30 @@ senden — die laufende Antwort wird abgebrochen (`interrupted`-Event).
---
## 11. Fehlerbehebung
## 11. Resilienz & Metriken (Betrieb)
**Fallback bei Provider-Ausfall:** Pro Modul eine Ersatzliste setzen (in `.env`).
Fällt der primäre Provider aus, übernimmt der nächste automatisch:
```
LLM_FALLBACK=local-openai-compatible
STT_FALLBACK=faster-whisper
TTS_FALLBACK=piper
```
**Metriken ansehen:**
```bash
curl http://localhost:8080/api/metrics # JSON
curl http://localhost:8080/api/metrics?format=prometheus
```
Enthält Request-Zahlen/-Laufzeiten, Pipeline-Stufen (`stt`/`llm`/`tts`) und
Fallback-/Fehlerzähler. Die Werte gelten pro laufendem Prozess.
---
## 12. Fehlerbehebung
| Symptom | Ursache | Lösung |
|---|---|---|
@ -313,7 +336,7 @@ Logs erscheinen im Terminal, in dem `make run` läuft. Für mehr Details
---
## 12. Tests ausführen
## 13. Tests ausführen
```bash
make test