fix: QC-Ratings aus 7 älteren Artikeln entfernt (CHECK 10)

This commit is contained in:
Hermes Agent
2026-06-23 23:47:51 +02:00
parent e73e0e88de
commit 4d90e4249d
656 changed files with 2602398 additions and 3 deletions
+126
View File
@@ -0,0 +1,126 @@
# Projektplan: Artikel-Vorlese-Funktion (Pre-Generation)
**Stand:** 11. Juni 2026
**Prinzip:** Audio wird EINMAL bei Artikel-Erstellung generiert, nicht bei jeder Anfrage.
---
## Übersicht
Jeder Artikel auf brettspiel-news.de bekommt automatisch:
- Deutsche Audioversion (Thorsten-Stimme, Piper TTS)
- Englische Audioversion (Joe-Stimme, Piper TTS, optional)
- Play-Button unter dem Artikel
- Download-Link für Offline-Hören
Der Chatbot nutzt dieselben Dateien — null Zusatzaufwand.
---
## Phase 1: TTS-Pipeline (Hermes-Seite)
### 1.1 Pipeline-Skript
- Input: Artikel-URL oder Artikel-ID
- Fetch: Artikeltext via Content-API
- Clean: HTML → Fließtext (parsbar für TTS)
- Generate DE: Piper Thorsten (de_DE-thorsten-medium)
- Generate EN: Piper Joe (en_US-joe-medium) — optional
- Output: MP3-Datei → Media-Ordner
### 1.2 Performance
- 2.000 Zeichen → ~3 min Audio → ~30s Generierung (0,15x Echtzeit)
- 5.000 Zeichen → ~8 min Audio → ~75s Generierung
- 10.000 Zeichen → ~15 min Audio → ~150s Generierung
### 1.3 API-Endpoint
- `POST /tts/generate` — nimmt Artikel-ID/URL, gibt Audio-Pfad zurück
- Status-Endpoint für Fortschritt (bei langen Artikeln)
---
## Phase 2: Joomla-Integration
### 2.1 Trigger
- Joomla-Plugin: `onContentAfterSave` → Webhook an Hermes
- Alternativ: Cron-Job, der alle X Minuten auf neue Artikel prüft
- Priorität: Webhook (sofort), Cron (Fallback)
### 2.2 Audio-Speicherung
- MP3-Dateien auf brettspiel-news.de Server
- Pfad-Schema: `/media/audio/articles/{article-id}-de.mp3`
- Auch als Download in Artikel-Metadaten hinterlegt
### 2.3 Artikel-Template
- Play-Button: `<audio>`-Element oder JavaScript-Player
- Text: "🔊 Artikel anhören (DE) | (EN)"
- Barrierefrei: ARIA-Labels, Keyboard-Navigation
---
## Phase 3: Chatbot-Integration
### 3.1 Vorlese-Befehl
- User: „Lies Artikel X vor"
- Chatbot: Holt `article_id` → sucht Audio-Datei → gibt Player zurück
- Keine Generation — Datei existiert bereits
### 3.2 Knowledge-Datenbank
- Tabelle `article_audio`: article_id, title, de_audio_path, en_audio_path, generated_at
- Schneller Lookup für Chatbot
---
## Phase 4: Batch-Verarbeitung (bestehende Artikel)
### 4.1 Bestandsaufnahme
- Alle Artikel-IDs via Content-API abrufen
- Prüfen, welche schon Audio haben
### 4.2 Batch-Lauf
- Parallele Verarbeitung (4 Worker = 4 parallele TTS-Generierungen)
- ~1.200 Artikel × 30s = ~10 Stunden Gesamtlaufzeit
- Priorisierung: Neueste zuerst, dann älteste
### 4.3 Fehlerbehandlung
- Retry bei Timeout
- Skip bei leeren Artikeln
- Logging pro Artikel
---
## Phase 5: Weitere Sprachen (Zukunft)
| Sprache | Piper-Stimme | Verfügbar |
|---------|-------------|-----------|
| Deutsch | Thorsten (medium) | ✅ |
| Englisch | Joe (medium) | ✅ |
| Französisch | fr_FR (medium) | ✅ Piper |
| Spanisch | es_ES (medium) | ✅ Piper |
| Niederländisch | nl (medium) | ✅ Piper |
- Pro Sprache: ~30s Generierung extra
- Speicher: ~1 MB MP3 pro Artikel pro Sprache
- 1.200 Artikel × 5 Sprachen × 1 MB = ~6 GB (vernachlässigbar)
---
## Infrastruktur (gemeinsam mit Chatbot)
| Komponente | Status |
|-----------|--------|
| Piper TTS (Thorsten DE) | ✅ Läuft |
| Piper TTS (Joe EN) | ✅ Läuft |
| Content-API (Joomla) | ⏳ Nach Migration |
| Joomla-Plugin (Trigger) | 🔜 Phase 2 |
| Artikel-Template | ⏳ Daniel |
| Speicherplatz | ✅ Ausreichend (50+ GB frei) |
---
## Nächste Schritte
1. Pipeline-Skript bauen (jetzt)
2. API-Endpoint für TTS-Generierung (jetzt)
3. Joomla-Plugin nach Migration (Daniel)
4. Template-Play-Button (Daniel)
5. Batch-Lauf für Archiv (nach Phase 1+2)