# Projektplan: BSN Chatbot (Multi-Channel Intake + RAG-Chat) **Stand:** 11. Juni 2026 **Server:** 185.162.249.159 (4 Kerne, 7,8 GB RAM) --- ## Übersicht Zwei Funktionen auf einem System: 1. **Intake-System:** User schicken Meldungen per WhatsApp/Telegram — Hermes klassifiziert, speichert in DB 2. **RAG-Chatbot auf brettspiel-news.de:** Besucher fragen, Bot antwortet nur aus den Inhalten der Website --- ## Phase 1: Prototyp Intake (sofort) ### 1.1 SQLite-Datenbank - **Tabelle `submissions`**: id, channel, sender_id, type (text/bild/audio/video), content, media_path, status, category, created_at, processed_at - **Tabelle `knowledge`**: id, key, question_pattern, answer, category, tags, valid_from, valid_until - **Tabelle `users`**: id, channel, phone, email, created_at (optional, nur für Kontaktformular) ### 1.2 WhatsApp Webhook-Receiver - Flask-Endpoint: `POST /whatsapp/webhook` - Meta-Webhook-Verifikation (GET mit verify_token) - Nachricht parsen: Text, Bild, Audio, Video - An Hermes-Verarbeitung weiterreichen ### 1.3 Simulierter Test - `curl`-Skript zum Testen ohne Meta-Account - Faked WhatsApp-Payload → DB-Eintrag → sichtbar im Dashboard ### 1.4 Admin-Dashboard (MVP) - Einfache HTML-Tabelle mit allen Submissions - Filter: Kanal, Status, Kategorie, Datum - Detailansicht pro Submission - Kein Login nötig (intern, Token-geschützt) --- ## Phase 2: WhatsApp Live (braucht Meta-Account) ### 2.1 Meta Business Setup - App anlegen (Typ: Business) - WhatsApp-Produkt hinzufügen - Test-Telefonnummer - Permanent Access Token - Webhook-URL eintragen (HTTPS!) ### 2.2 HTTPS / Let's Encrypt - Domain für 185.162.249.159 - Certbot / Let's Encrypt - Nginx als Reverse Proxy ### 2.3 Produktionsumstellung - Flask → Gunicorn (4 Worker) - Nginx Static Files für Media-Uploads - Systemd-Service für Autostart --- ## Phase 3: RAG-Chatbot (brettspiel-news.de) ### 3.1 Content-API auf brettspiel-news.de - Joomla REST-Endpoint: `/api/articles?author=X&tag=Y&q=Z` - Liefert: Titel, Datum, Excerpt, Tags, URL, ggf. Volltext - Optional: `/api/games`, `/api/authors`, `/api/events` ### 3.2 RAG-Pipeline (Hermes-Seite) - User-Frage → embedding → Content-API-Suche → relevante Artikel - Hermes formuliert Antwort NUR aus diesen Daten - Quellen-Links in jeder Antwort ### 3.3 Chat-Widget für Website - JS-Snippet, einbindbar in Joomla - Text-Modus / Audio-Modus (Toggle) - Zeigt Quellen-Links an --- ## Phase 4: Spiel Essen (Zukunft) ### Datenquellen (alle in dieselbe DB) - Hallenplan (Verlage, Stände, Hallen) - Verlagsmeldungen (ausverkaufte Spiele) - Neuheiten-Liste - Live-Submissions während der Messe ### Täglicher Messe-Artikel - Hermes aggregiert Submissions → Redaktions-Rohfassung - Redaktion (Basti) finalisiert --- ## Infrastruktur (parallel zu allen Phasen) | Komponente | Status | |-----------|--------| | Piper TTS (Thorsten) | ✅ Läuft | | DeepSeek v4 Flash API | ✅ Läuft | | Telegram-Bridge | ✅ Läuft | | SQLite | 🔜 Phase 1 | | Gunicorn | 🔜 Phase 2 | | HTTPS/Let's Encrypt | ⏳ Braucht Domain | | Meta WhatsApp API | ⏳ Wartet auf Zugangsdaten | | Joomla Content API | ⏳ Nach Joomla-6-Migration | --- ## Nächste Schritte 1. SQLite-Schema anlegen + Admin-Dashboard (jetzt) 2. Webhook-Receiver bauen + simulierter Test (jetzt) 3. Meta-Account-Zugangsdaten von Daniel (morgen) 4. HTTPS einrichten (sobald Domain klar) 5. Gunicorn umstellen (Phase 2) 6. Content-API auf brettspiel-news.de (nach Joomla-Migration)