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
@@ -0,0 +1,221 @@
# Multi-Channel-Erweiterung für Boardgame.network — Analyse & Implementierungsplan
> **Für:** Daniel Krause (brettspiel-news.de)
> **Datum:** 18.06.2026
> **Status:** Analyse & Priorisierung
---
## Ist-Zustand
Das aktuelle Intake-System (`app.py` auf Port 5002) unterstützt:
| Kanal | Status | Einträge in DB | Technik |
|---|---|---|---|
| **WhatsApp** | ✅ Live | 15 | Meta Cloud API Webhook `/whatsapp/webhook` |
| **Web-Formular** | ✅ Live | 7 | `/api/submit` (Multipart-Formular) |
| **Telegram** | ⚠️ 1 Test-Eintrag | 1 | Nicht im Chatbot implementiert — wird extern behandelt |
Der existierende Meta System User Token (permanent, expires: 0) hat bereits folgende Scopes:
- `instagram_basic`
- `instagram_content_publish`
- `pages_read_engagement`
- `pages_show_list`
- `whatsapp_business_management`
- `whatsapp_business_messaging`
**Das bedeutet:** Instagram und Facebook Messenger könnten über die bestehende Meta-Infrastruktur integriert werden, ohne neue Berechtigungen!
---
## Kanal-Analyse (sortiert nach Geschwindigkeit der Umsetzbarkeit)
### 🔥 Kanal 1: Telegram (Bot API) — *schnellster Gewinn*
| Kriterium | Bewertung |
|---|---|
| **Aufwand** | 34 Stunden |
| **API-Typ** | Offizielle REST API, sehr gut dokumentiert |
| **Integration** | Webhook-Pattern wie WhatsApp: Telegram POSTed Updates → unser Endpoint antwortet |
| **Message-Typen** | Text, Foto, Video, Audio, Voice, Standort, Dokumente |
| **Kosten** | Kostenlos |
| **DSGVO** | ⚠️ Telegram ist in Dubai ansässig, Server global verteilt. Datenschutzerklärung muss Telegram als Auftragsverarbeiter nennen. ABER: Nutzer wählen Telegram selbst → ihre Entscheidung. Keine Gesundheitsdaten o.Ä. → vertretbares Risiko. |
**Technische Umsetzung:**
- Bot via @BotFather erstellen → API-Token
- Neuer Endpoint: `POST /telegram/webhook` in `app.py`
- Webhook-URL setzen: `https://api.telegram.org/bot<TOKEN>/setWebhook?url=https://chat.datenhimmel.work/telegram/webhook`
- Parser-Funktion: Telegram-Update → Submission-DB-Schema mappen
- Media-Download via `https://api.telegram.org/file/bot<TOKEN>/<file_path>`
- Anti-Spam: Gleiche GDPR-Lösch-Logik wie WhatsApp
**Status:** Ein Test-Eintrag existiert bereits in der DB → Telegram wurde schon mal angetestet. Jetzt sauber implementieren.
---
### 🔥 Kanal 2: Instagram Direct Messages — *Meta-API, fast geschenkt*
| Kriterium | Bewertung |
|---|---|
| **Aufwand** | 46 Stunden |
| **API-Typ** | Meta Graph API (gleiche Infrastruktur wie WhatsApp!) |
| **Integration** | Instagram Professional Account an App koppeln → Webhook konfigurieren → Nachrichten landen im gleichen Webhook-Endpoint |
| **Message-Typen** | Text, Bilder, Videos, Story-Replies, Link-Attachments |
| **Kosten** | Kostenlos (Teil der Meta Graph API) |
| **DSGVO** | ⚠️ Meta = US-Konzern. ABER: Gleiche Rechtsgrundlage wie WhatsApp-Integration. Standardvertragsklauseln. Datenschutzerklärung ist bereits Meta-konform (WhatsApp-Teil). Instagram DM ist weniger invasiv als WhatsApp (keine Telefonnummer zwingend erforderlich). |
**Technische Umsetzung:**
1. Instagram Professional Account mit der Meta-App "Brettspiel-News.de" verbinden
2. Im Meta Developer Dashboard: Webhook-Produkt `instagram` hinzufügen
3. Webhook-Feld `messages` abonnieren → Test-Send von Instagram
4. Neuer Handler in `app.py` für Instagram-Events (gleicher Webhook-Endpoint, anderer `object`-Typ: `instagram`)
5. Message-Format-Mapper: Instagram-Nachricht → Submission-Schema
6. Media-Download via Instagram Graph API (Media-URLs sind kurzlebig — direkt downloaden!)
**PITFALL:** Instagram-Webhooks nutzen das GLEICHE Webhook-Endpoint-Format wie WhatsApp, aber mit `"object": "instagram"` statt `"object": "whatsapp_business_account"`. Kann also im selben `/whatsapp/webhook`-Endpoint behandelt werden — nur eine Fallunterscheidung nötig.
---
### 🔥 Kanal 3: Facebook Messenger — *größte Reichweite unter Brettspielern*
| Kriterium | Bewertung |
|---|---|
| **Aufwand** | 68 Stunden |
| **API-Typ** | Meta Graph API (Send/Receive API) |
| **Integration** | Facebook Page an App koppeln → Webhook konfigurieren → Nachrichten verarbeiten |
| **Message-Typen** | Text, Bilder, Videos, Audio, Dateien, Quick Replies, Templates |
| **Kosten** | Kostenlos (24h-Standard-Messaging-Fenster, danach nur Message-Tags) |
| **DSGVO** | ⚠️ Wie Instagram: Meta-US. ABER: Facebook-Seiten-Admin hat geteilte Verantwortlichkeit mit Meta (Art. 26 DSGVO). Muss in Datenschutzerklärung explizit genannt werden. Page-Admin-Tools geben Einblick in Datenverarbeitung. |
**Technische Umsetzung:**
1. Facebook Page "Brettspiel News" mit der Meta-App verbinden (Page Access Token)
2. Meta Developer Dashboard: Webhook-Produkt `messenger` hinzufügen
3. Webhook-Felder `messages` und `messaging_postbacks` abonnieren
4. Page abonnieren (ohne Subscription kommen keine Events!)
5. Handler für `"object": "page"` im Webhook-Endpoint
6. Messenger-Send-API für Antworten (POST `/{page_id}/messages`)
7. Media-Handling: Messenger-Attachments → Download via URL (authorisiert mit Page Token)
8. 24h-Fenster beachten: Nach 24h nur noch per Message-Tag antworten
**PITFALL:** Messenger hat ein 24-Stunden-Fenster für freie Antworten. Danach nur noch per Message-Tag (z.B. `HUMAN_AGENT`, `POST_PURCHASE_UPDATE`). Unsere Auto-Replies müssen innerhalb von 24h erfolgen — was bei Echtzeit-Antworten gegeben ist.
---
### ⚠️ Kanal 4: Signal (via signal-cli) — *datenschutzfreundlich, aber aufwendig*
| Kriterium | Bewertung |
|---|---|
| **Aufwand** | 1216 Stunden + laufender Wartungsaufwand |
| **API-Typ** | Keine offizielle API. signal-cli (Open Source, Java) als REST-Wrapper |
| **Integration** | Signal-Telefonnummer registrieren → signal-cli als Daemon → REST-Endpoint exposed → Polling oder Webhook-ähnlich |
| **Message-Typen** | Text, Bilder, Videos, Dateien, Gruppen (eingeschränkt) |
| **Kosten** | Kostenlos (Signal selbst), aber: dedizierte Telefonnummer nötig (~510€/Monat) |
| **DSGVO** | 🟢 Bester Datenschutz aller Optionen: Signal ist E2E-verschlüsselt, non-profit, kein US-Datenzugriff. ABER: signal-cli ist ein inoffizieller Client — rechtliche Grauzone. Theoretisch DSGVO-freundlich, praktisch nicht auditierbar. |
**Technische Umsetzung:**
1. Dedizierte SIM-Karte / VoIP-Nummer für Signal registrieren
2. signal-cli installieren + als systemd-Daemon einrichten
3. REST-Mode aktivieren: `signal-cli daemon --http-listen 127.0.0.1:8080`
4. Polling-Loop oder lokalen Webhook via nginx auf die REST-API von signal-cli
5. Parser: Signal-Nachrichten-Format → Submission-Schema
6. Media: signal-cli lädt Attachments automatisch → lokaler Pfad referenzieren
7. Gruppen-Kommunikation: Signal-Gruppen sind verschlüsselt — nicht moderierbar vor Empfang
**PITFALLS:**
- signal-cli bricht bei größeren Updates von Signal regelmäßig → Wartungsaufwand
- Telefonnummer kann von Signal gebannt werden, wenn als Bot erkannt
- Kein offizieller Support — bei Problemen auf sich allein gestellt
- Gruppen-Nachrichten: Bot muss Gruppenmitglied sein (Einladung nötig)
**Fazit:** Nur umsetzen, wenn Datenschutz-Enthusiasten explizit Signal fordern. Strategisch wertvoll als DSGVO-Vorzeigekanal, aber operativ teuer.
---
### 🎮 Bonus-Kanal 5: Discord — *Gaming-Community, einfach integrierbar*
| Kriterium | Bewertung |
|---|---|
| **Aufwand** | 35 Stunden |
| **API-Typ** | Offizielle REST + Gateway (WebSocket) API |
| **Integration** | Discord Bot App → Webhook oder Gateway-Events → Handler |
| **Kosten** | Kostenlos |
| **DSGVO** | ⚠️ Discord = US-Unternehmen. Standardvertragsklauseln nötig. Aber: Gaming-Community ist Discord-affin — viele Brettspiel-Discords existieren bereits. |
---
## DSGVO-Zusammenfassung
| Kanal | US-Datenübermittlung | Einwilligung nötig? | Auftragsverarbeiter |
|---|---|---|---|
| WhatsApp | ✅ (Meta US) | Ja (Double Opt-In empfohlen) | Meta Platforms Inc. |
| Instagram | ✅ (Meta US) | Ja | Meta Platforms Inc. |
| Messenger | ✅ (Meta US) | Ja | Meta Platforms Inc. (geteilte Verantwortung) |
| Telegram | ⚠️ (Dubai, nicht US/EU) | Empfohlen | Telegram FZ-LLC |
| Signal | ❌ (E2E, non-profit) | Nein (Datenschutz per Design) | Keiner (direkte Kommunikation) |
| Discord | ✅ (US) | Empfohlen | Discord Inc. |
**Generelle DSGVO-Maßnahmen (für alle Kanäle):**
1. Datenschutzerklärung um jeden Kanal erweitern
2. Double Opt-In: `VERIFICATION_REQUIRED=1` in `.env` aktivieren
3. Löschlogik: `DELETE /submission/<id>` bereits implementiert — GDPR-Request manuell auslösbar
4. Datenminimierung: Wir speichern nur `sender_id`, `sender_name`, `content`, `media_path` — keine Metadaten (IP, Standort, Gerätedaten)
5. Server-Standort: Deutschland (netcup) — DSGVO-konformes Hosting
**Wichtig:** Für Meta-Kanäle (WhatsApp, Instagram, Messenger) sollte die Datenschutzerklärung einen expliziten Hinweis enthalten, dass Nachrichten über Meta-Server in die USA geleitet werden und der Nutzer dem durch Nutzung des jeweiligen Kanals zustimmt.
---
## Rangliste: Was zuerst?
```
┌───────┬─────────────────┬──────────┬──────────┬──────────┬──────────┐
│ Rang │ Kanal │ Aufwand │ Nutzen │ DSGVO │ Prio │
├───────┼─────────────────┼──────────┼──────────┼──────────┼──────────┤
│ 1. │ Telegram │ 34 h │ Hoch │ Mittel │ 🔥🔥🔥 │
│ 2. │ Instagram │ 46 h │ Mittel │ Mittel │ 🔥🔥 │
│ 3. │ Facebook Msgr │ 68 h │ Sehr hoch│ Mittel │ 🔥🔥 │
│ 4. │ Discord │ 35 h │ Mittel │ Mittel │ 🔥 │
│ 5. │ Signal │ 1216 h │ Niedrig │ Grün │ ⚡ │
└───────┴─────────────────┴──────────┴──────────┴──────────┴──────────┘
```
**Empfehlung:** Starte mit **Telegram + Instagram** parallel (beide zusammen ~8h), dann **Facebook Messenger** (~8h). Discord und Signal sind Optional.
---
## Implementierungs-Roadmap
### Phase 1: Telegram (1 Tag)
- [ ] Bot mit @BotFather erstellen, Token in `.env`
- [ ] Endpoint `POST /telegram/webhook` in `app.py`
- [ ] Parser: Telegram-Update → `submissions`-Schema
- [ ] Media-Download via Telegram File API
- [ ] Webhook-URL registrieren, Test-Nachricht senden
- [ ] Deployment + Tunnel-Verifikation
### Phase 2: Instagram (1 Tag)
- [ ] Instagram Professional Account mit Meta-App verbinden
- [ ] Webhook `instagram` im Meta Developer Dashboard konfigurieren
- [ ] Handler im WhatsApp-Webhook: `object == "instagram"` Fall
- [ ] Message-Mapper + Media-Download
- [ ] Test: Instagram DM an verknüpften Account senden
- [ ] Deployment + Verifikation
### Phase 3: Facebook Messenger (12 Tage)
- [ ] Facebook Page mit App verbinden, Page Access Token holen
- [ ] Webhook `messenger` konfigurieren + Page abonnieren
- [ ] Handler im Webhook für `object == "page"`
- [ ] Messenger Send API für Antworten
- [ ] Media-Handling (Attachments über Messenger Platform API)
- [ ] 24h-Fenster-Logik für Antworten
- [ ] Test + Deployment
### Phase 4 (Optional): Discord + Signal
- [ ] Discord: Bot App erstellen, Gateway verbinden, Commands
- [ ] Signal: signal-cli installieren, Daemon, REST-Integration
---
## Nächster Schritt
Soll ich direkt mit **Phase 1 (Telegram)** loslegen? Der Bot kann in ~3 Stunden live sein, und wir haben schon einen Test-Eintrag in der DB. Wenn du grünes Licht gibst, schreibe ich den Code, deploye und verifiziere. 🚀