- CLAUDE.md: Comprehensive documentation for Lehrer KI platform - docs-src: Klausur, Voice, Agent-Core, KI-Pipeline docs - mkdocs.yml: Lehrer-specific nav with blue theme - docker-compose: Added docs service (port 8010, profile: docs) - .claude/rules: testing, docs, open-source, abiturkorrektur, vocab-worksheet, multi-agent, experimental-dashboard Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5.6 KiB
5.6 KiB
Voice Service
Der Voice Service ist eine Voice-First Interface für die Breakpilot-Plattform mit DSGVO-konformem Design.
Übersicht
| Eigenschaft | Wert |
|---|---|
| Port | 8082 |
| Framework | FastAPI (Python) |
| Streaming | WebSocket |
| DSGVO | Privacy-by-Design |
Architektur
┌─────────────────────────────────────────────────────────────────┐
│ Voice Service (Port 8082) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Sessions │───>│ Task │───>│ BQAS │ │
│ │ API │ │ Orchestrator │ │ (Quality) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │
│ ┌────────────────────┼────────────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ WebSocket │ │ Encryption │ │ Logging │ │
│ │ Streaming │ │ Service │ │ (structlog) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Kernkomponenten
PersonaPlex + TaskOrchestrator
- Voice-first Interface für Breakpilot
- Real-time Voice Processing
- Multi-Agent Integration
DSGVO-Compliance (Privacy-by-Design)
| Feature | Beschreibung |
|---|---|
| Keine Audio-Persistenz | Nur RAM-basiert, keine dauerhafte Speicherung |
| Namespace-Verschlüsselung | Schlüssel nur auf Lehrer-Gerät |
| TTL-basierte Löschung | Automatische Datenlöschung nach Zeitablauf |
| Transcript-Verschlüsselung | Verschlüsselte Transkripte |
API-Endpunkte
Sessions
| Method | Endpoint | Beschreibung |
|---|---|---|
| POST | /api/v1/sessions |
Session erstellen |
| GET | /api/v1/sessions/:id |
Session abrufen |
| DELETE | /api/v1/sessions/:id |
Session beenden |
Task Orchestration
| Method | Endpoint | Beschreibung |
|---|---|---|
| POST | /api/v1/tasks |
Task erstellen |
| GET | /api/v1/tasks/:id |
Task-Status abrufen |
BQAS (Quality Assessment)
| Method | Endpoint | Beschreibung |
|---|---|---|
| POST | /api/v1/bqas/evaluate |
Qualitätsbewertung |
| GET | /api/v1/bqas/metrics |
Metriken abrufen |
WebSocket
| Endpoint | Beschreibung |
|---|---|
/ws/voice |
Real-time Voice Streaming |
Health
| Method | Endpoint | Beschreibung |
|---|---|---|
| GET | /health |
Health Check |
| GET | /ready |
Readiness Check |
Verzeichnisstruktur
voice-service/
├── main.py # FastAPI Application
├── config.py # Konfiguration
├── pyproject.toml # Projekt-Metadaten
├── requirements.txt # Dependencies
├── api/
│ ├── sessions.py # Session-Management
│ ├── streaming.py # WebSocket Voice Streaming
│ ├── tasks.py # Task Orchestration
│ └── bqas.py # Quality Assessment
├── services/
│ ├── task_orchestrator.py # Task-Routing
│ └── encryption.py # Verschlüsselung
├── bqas/
│ ├── judge.py # LLM Judge
│ └── quality_judge_agent.py # Agent-Integration
├── models/ # Datenmodelle
├── scripts/ # Utility-Scripts
└── tests/ # Test-Suite
Konfiguration
# .env
VOICE_SERVICE_PORT=8082
REDIS_URL=redis://localhost:6379
DATABASE_URL=postgresql://...
ENCRYPTION_KEY=...
TTL_MINUTES=60
Entwicklung
# Dependencies installieren
cd voice-service
pip install -r requirements.txt
# Server starten
uvicorn main:app --reload --port 8082
# Tests ausführen
pytest -v
Docker
Der Service läuft als Teil von docker-compose.yml:
voice-service:
build:
context: ./voice-service
ports:
- "8082:8082"
environment:
- REDIS_URL=redis://valkey:6379
depends_on:
- valkey
- postgres