118 lines
3.4 KiB
Markdown
118 lines
3.4 KiB
Markdown
# 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)
|