root 5321c8602e feat: voice-agent MVP — LXC web frontend + Mac AI worker
LXC-Frontend (FastAPI + HTML/JS):
- Audio-Upload (MP3/WAV/M4A/MP4/OGG/FLAC, max. 500 MB)
- SQLite Job-Store, BackgroundTask-Pipeline
- Job-Liste mit Live-Status, Downloads (DOCX + JSON)
- Mac-Health-Indicator im UI

Mac-Worker (FastAPI):
- /api/transcribe (lightning-whisper-mlx | faster-whisper | mock)
- /api/summarize + /api/protocol via Ollama (llama3.1:8b)
- /api/export/docx via python-docx

Deploy:
- systemd-Service, Nginx Reverse-Proxy
- deploy/install.sh: idempotentes LXC-Setup

Doku: README.md, lxc-frontend/README.md, mac-worker/README.md
2026-05-13 15:33:53 +00:00

45 lines
1.3 KiB
Markdown

# Voice-Agent — LXC-Frontend
FastAPI + statisches HTML/JS. Läuft im LXC-Container, stellt die Weboberfläche, verwaltet Jobs (SQLite) und ruft den Mac-Worker per HTTP an. Macht selbst **keine** AI-Verarbeitung.
## Lokal starten (Entwicklung)
```bash
cd lxc-frontend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
# Für lokalen Test ohne Mac kann der Mac-Worker mit WHISPER_ENGINE=mock laufen
uvicorn app.main:app --reload --port 8000
```
Öffnen: http://localhost:8000
## Auf LXC deployen
`deploy/install.sh` macht alles: Repo klonen, venv anlegen, systemd-Service und Nginx einrichten. Siehe Haupt-`README.md`.
## API
| Methode | Pfad | Zweck |
|---|---|---|
| GET | `/` | Web-UI |
| GET | `/health` | LXC-Health |
| GET | `/api/mac/health` | Mac-Worker-Erreichbarkeit |
| POST | `/api/jobs` | multipart: `audio`, `title` → Job anlegen |
| GET | `/api/jobs` | Liste aller Jobs |
| GET | `/api/jobs/{id}` | Job-Detail |
| GET | `/api/jobs/{id}/download/{kind}` | `kind``docx`, `transcript`, `summary`, `protocol` |
## Datenfluss
```
Upload → SQLite-Job → BackgroundTask
→ Mac: /api/transcribe (multipart)
→ Mac: /api/summarize (JSON)
→ Mac: /api/protocol (JSON)
→ Mac: /api/export/docx (JSON) → DOCX
→ Ergebnisse landen in /var/lib/voice-agent/results/{job_id}/
```