feat: Tageskontingent und Notfall-Eskalation (#6)
- Quota (app/quota.py): Anfragen pro Nutzer/Tag (usage-Tabelle), DAILY_REQUEST_LIMIT, pro Nutzer via prefs uebersteuerbar; 429 (REST) bzw. error-Event (WS); Metrik - Notfall (app/safety/emergency.py): heuristische Erkennung (de/en); Log im Store (emergency_events) + optionaler Webhook (best-effort) + X-Emergency/emergency-Event; Metrik emergency_total; Notfaelle umgehen das Kontingent - verdrahtet in chat/speak/transcribe + WS-Turns - Tests: 64 gruen (+6); Doku aktualisiert (README, BEDIENUNGSANLEITUNG, Architektur, .env.example) Hinweis: Notfall-Erkennung ist eine Heuristik (kein Lebensretter); erkannte Texte sind sensibel -> DSGVO beachten. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
6422444017
commit
1eb79c1f09
14 changed files with 378 additions and 2 deletions
|
|
@ -313,6 +313,27 @@ 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.
|
||||
|
||||
**Tageskontingent** (Kostenbremse) in `.env`:
|
||||
|
||||
```
|
||||
DAILY_REQUEST_LIMIT=200 # Anfragen pro Nutzer/Tag; 0 = unbegrenzt
|
||||
```
|
||||
|
||||
Bei Überschreitung antwortet der Dienst mit `429`. Notfall-Eingaben werden nie
|
||||
blockiert.
|
||||
|
||||
**Notfall-Eskalation:** Erkennt der Dienst in einer Chat-/Sprach-Eingabe ein
|
||||
Notlagen-Signal (z. B. „Schmerzen in der Brust", „gestürzt", „kann nicht atmen"),
|
||||
protokolliert er das, macht es sichtbar (`X-Emergency` / `emergency`-Event) und ruft
|
||||
optional einen Webhook auf:
|
||||
|
||||
```
|
||||
# EMERGENCY_WEBHOOK_URL=https://example.org/alert
|
||||
```
|
||||
|
||||
> ⚠️ Nur eine **Heuristik** — kein Ersatz für einen echten Notruf. Erkannte Texte
|
||||
> sind sensibel; auf Einwilligung und Datenschutz achten.
|
||||
|
||||
---
|
||||
|
||||
## 12. Fehlerbehebung
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue