docs: README v2.0 - Self-Learning System & neue Features

Neue Features dokumentiert:
- Task-Persistierung in SQLite mit Auto-Cleanup (7 Tage)
- Self-Learning Team-Management System
- Orchestrator Beat (30 Min Intervall)
- Telegram-Integration mit QR-Code
- Automatische Vorstellung neuer Team-Members
- Team-Member Update-Kommandos (@UPDATE_TEAM_MEMBER, @ADD_TEAM_MEMBER)
- Intelligente Eskalation bei blockierten Tasks

Kommandos erweitert:
- @SEND_EMAIL - Team-Member kontaktieren
- @SEND_TELEGRAM - Telegram-Benachrichtigung
- @UPDATE_TEAM_MEMBER - Team-Daten aktualisieren
- @ADD_TEAM_MEMBER - Neues Mitglied hinzufügen

Use Cases:
- Neuer Team-Member Workflow (automatisches Lernen)
- Orchestrator Beat Monitoring (proaktive Eskalation)
- Email-basierte Tasks
- Event-Planung

Tech Stack Updates:
- SQLite: Emails, Tasks, Team-Members
- python-telegram-bot, QR-Code
- 5 Background Threads (inkl. OrchestratorBeat)

Security:
- Telegram User-Whitelist
- Path Traversal Protection
- XSS-Schutz verbessert

Version: 2.0.0
Status: Production-Ready 
This commit is contained in:
pdyde 2026-02-21 14:06:20 +01:00
parent 632a6c253a
commit 42a84141d9

107
README.md
View file

@ -15,7 +15,9 @@ Frankenbot ist ein intelligentes Event-Management-System, bei dem spezialisierte
- **Dynamische Modellauswahl**: 29+ KI-Modelle verfügbar (OpenCode, Anthropic, Ollama) - **Dynamische Modellauswahl**: 29+ KI-Modelle verfügbar (OpenCode, Anthropic, Ollama)
### 📋 Task-Management ### 📋 Task-Management
- **Persistente Speicherung**: SQLite-Datenbank für Tasks
- **Automatische Task-Verarbeitung**: TaskBeat verarbeitet Tasks alle 10 Sekunden - **Automatische Task-Verarbeitung**: TaskBeat verarbeitet Tasks alle 10 Sekunden
- **Auto-Cleanup**: Löscht completed Tasks automatisch nach 7 Tagen
- **Auto-Refresh UI**: Tasks-Seite aktualisiert sich automatisch alle 15 Sekunden - **Auto-Refresh UI**: Tasks-Seite aktualisiert sich automatisch alle 15 Sekunden
- **Task-Delegation**: Orchestrator analysiert Tasks und weist sie passenden Agents zu - **Task-Delegation**: Orchestrator analysiert Tasks und weist sie passenden Agents zu
- **Status-Tracking**: pending → in_progress → completed - **Status-Tracking**: pending → in_progress → completed
@ -29,7 +31,9 @@ Frankenbot ist ein intelligentes Event-Management-System, bei dem spezialisierte
- **IMAP**: Email-Posteingang überwachen - **IMAP**: Email-Posteingang überwachen
- **SMTP**: Emails versenden - **SMTP**: Emails versenden
- **Email-to-Task**: Automatische Task-Erstellung aus Emails - **Email-to-Task**: Automatische Task-Erstellung aus Emails
- **Whitelist-System**: Nur autorisierte Absender - **Whitelist-System**: Nur autorisierte Absender (diversityball.at Domain)
- **Intelligente Vorstellung**: Neue Absender werden automatisch gebeten sich vorzustellen
- **Team-Member Lernsystem**: Orchestrator baut automatisch Wissensdatenbank auf
### 📁 Datei-Management ### 📁 Datei-Management
- **Agent Work-Folders**: Jeder Agent hat eigenes Arbeitsverzeichnis - **Agent Work-Folders**: Jeder Agent hat eigenes Arbeitsverzeichnis
@ -47,6 +51,21 @@ Frankenbot ist ein intelligentes Event-Management-System, bei dem spezialisierte
- **On-Demand Zugriff**: Agents nutzen `@READ_KNOWLEDGE` statt volle KB im Prompt - **On-Demand Zugriff**: Agents nutzen `@READ_KNOWLEDGE` statt volle KB im Prompt
- **Performance-Optimierung**: Reduziert Prompt-Größe um ~15KB - **Performance-Optimierung**: Reduziert Prompt-Größe um ~15KB
- **Event-spezifisch**: Diversity-Ball Wien 2026 Informationen - **Event-spezifisch**: Diversity-Ball Wien 2026 Informationen
- **Self-Learning**: System lernt automatisch über Team-Members und Verantwortlichkeiten
### 👥 Team-Management
- **Team-Members Datenbank**: Reale Mitarbeiter mit Rollen und Verantwortlichkeiten
- **Automatisches Lernen**: Neue Absender werden erkannt und vorgestellt
- **Orchestrator Beat**: Prüft alle 30 Minuten Tasks und eskaliert bei Bedarf
- **Direkter Kontakt**: Orchestrator kann Team-Members per Email/Telegram kontaktieren
- **Intelligente Koordination**: Weiß wer wofür verantwortlich ist
### 💬 Telegram-Integration
- **Bidirektionale Kommunikation**: Nachrichten senden und empfangen
- **QR-Code Setup**: Einfache Bot-Verbindung über Settings-Seite
- **Task-Erstellung**: Telegram-Nachrichten werden automatisch zu Tasks
- **Antworten**: Agent-Responses werden zurück zu Telegram gesendet
- **User-Whitelist**: Nur autorisierte Telegram-User
## 🚀 Installation ## 🚀 Installation
@ -119,14 +138,42 @@ Reason: Für große Events mit 500+ Gästen benötigt
@END @END
``` ```
#### Team-Member kontaktieren
```
@SEND_EMAIL
To: georg.tschare@signtime.media
Subject: Budget-Freigabe benötigt
Body: Hallo Georg, für das Catering benötigen wir eine Budget-Freigabe...
@END
```
#### Team-Member aktualisieren
```
@UPDATE_TEAM_MEMBER
Identifier: p.dyderski@live.at
TelegramID: 123456789
Responsibilities: System-Administration, 3D-Visualisierung, AI-Agenten, R&D
@END
```
#### Neues Team-Mitglied hinzufügen
```
@ADD_TEAM_MEMBER
Name: Max Mustermann
Role: Marketing Coordinator
Responsibilities: Social Media, Content Creation
Email: max@diversityball.at
@END
```
## 🗂️ Projekt-Struktur ## 🗂️ Projekt-Struktur
``` ```
frankenbot/ frankenbot/
├── app.py # Haupt-Flask-App (2128 Zeilen) ├── app.py # Haupt-Flask-App (2900+ Zeilen)
├── agent_config.json # Agent-Modell-Zuweisungen ├── agent_config.json # Agent-Modell-Zuweisungen
├── diversityball_knowledge.md # Event-Wissensdatenbank ├── diversityball_knowledge.md # Event-Wissensdatenbank
├── email_journal.db # SQLite-Datenbank (Emails) ├── email_journal.db # SQLite-Datenbank (Emails, Tasks, Team-Members)
├── agents/ # Agent-Verzeichnisse ├── agents/ # Agent-Verzeichnisse
│ ├── orchestrator/ │ ├── orchestrator/
@ -174,10 +221,11 @@ frankenbot/
- **Backend**: Flask 3.x - **Backend**: Flask 3.x
- **Frontend**: Bootstrap 5, Vanilla JavaScript - **Frontend**: Bootstrap 5, Vanilla JavaScript
- **Database**: SQLite (Email-Journal) - **Database**: SQLite (Email-Journal, Tasks, Team-Members)
- **AI**: OpenCode CLI (Multi-Provider Support) - **AI**: OpenCode CLI (Multi-Provider Support: Anthropic, Ollama, etc.)
- **Templates**: Jinja2 - **Templates**: Jinja2
- **Streaming**: Server-Sent Events (SSE) - **Streaming**: Server-Sent Events (SSE)
- **Bot**: python-telegram-bot, QR-Code Generation
## 🎨 UI-Routen ## 🎨 UI-Routen
@ -188,8 +236,9 @@ frankenbot/
| `/orchestrator` | Orchestrator-Chat mit Task-Verteilung | | `/orchestrator` | Orchestrator-Chat mit Task-Verteilung |
| `/tasks` | Task-Management mit Auto-Refresh | | `/tasks` | Task-Management mit Auto-Refresh |
| `/agents` | Agent-Verwaltung (Erstellen, Bearbeiten, Modell-Auswahl) | | `/agents` | Agent-Verwaltung (Erstellen, Bearbeiten, Modell-Auswahl) |
| `/files` | Datei-Manager (Upload, Download, Agent Work-Folders) | | `/files` | Datei-Manager (Upload, Download, Agent Work-Folders, View) |
| `/emails` | Email-Interface (Senden, Empfangen, Vorlagen) | | `/emails` | Email-Interface (Senden, Empfangen, Vorlagen) |
| `/settings` | System-Einstellungen, Telegram QR-Code, Poller-Konfiguration |
## ⚙️ Konfiguration ## ⚙️ Konfiguration
@ -212,10 +261,25 @@ EMAIL_IMAP_SERVER=imap.gmail.com
EMAIL_SMTP_SERVER=smtp.gmail.com EMAIL_SMTP_SERVER=smtp.gmail.com
``` ```
### Telegram-Konfiguration
Bearbeite `.env`:
```bash
TELEGRAM_BOT_TOKEN=your-bot-token-here
TELEGRAM_ALLOWED_USERS=123456789,987654321
TELEGRAM_BOT_USERNAME=your_bot_name_bot
```
Setup-Anleitung:
1. Erstelle Bot via [@BotFather](https://t.me/BotFather)
2. Hole deine User-ID via [@userinfobot](https://t.me/userinfobot)
3. QR-Code scannen auf `/settings` Seite
### Background-Threads ### Background-Threads
- **EmailPoller**: Prüft alle 2 Minuten auf neue Emails - **EmailPoller**: Prüft alle 2 Minuten auf neue Emails
- **TaskBeat**: Verarbeitet Tasks alle 10 Sekunden - **TaskBeat**: Verarbeitet Tasks alle 10 Sekunden
- **TaskWorker**: Führt Agent-Tasks aus (Timeout: 10 Min) - **TaskWorker**: Führt Agent-Tasks aus (Timeout: 10 Min)
- **OrchestratorBeat**: Prüft alle 30 Minuten auf blockierte Tasks ⭐ NEU
- **TelegramBot**: Polling für Telegram-Nachrichten (wenn konfiguriert)
## 📊 Performance ## 📊 Performance
@ -224,6 +288,9 @@ EMAIL_SMTP_SERVER=smtp.gmail.com
- ✅ Model-Cache (1h TTL) - ✅ Model-Cache (1h TTL)
- ✅ Agent arbeiten in eigenen work-Verzeichnissen - ✅ Agent arbeiten in eigenen work-Verzeichnissen
- ✅ Timeout: 600 Sekunden (10 Min) für komplexe Tasks - ✅ Timeout: 600 Sekunden (10 Min) für komplexe Tasks
- ✅ Task-Cleanup: Auto-Löschung nach 7 Tagen
- ✅ Persistente Tasks in SQLite-Datenbank
- ✅ Self-Learning Team-Management
### Geschätzte Ausführungszeiten ### Geschätzte Ausführungszeiten
- Einfache Tasks: 30-60 Sekunden - Einfache Tasks: 30-60 Sekunden
@ -233,10 +300,12 @@ EMAIL_SMTP_SERVER=smtp.gmail.com
## 🔒 Security ## 🔒 Security
### Implementierte Maßnahmen ### Implementierte Maßnahmen
- ✅ XSS-Schutz: HTML-Escaping in allen Templates - ✅ XSS-Schutz: HTML-Escaping in allen Templates (orchestrator.html, chat.html)
- ✅ Email-Whitelist: Nur autorisierte Absender - ✅ Email-Whitelist: Nur autorisierte Absender (diversityball.at Domain)
- ✅ Telegram-Whitelist: Nur autorisierte User-IDs
- ✅ Exception-Handling: Spezifische Exception-Typen mit Logging - ✅ Exception-Handling: Spezifische Exception-Typen mit Logging
- ✅ Request-Validierung: `.get()` mit Defaults - ✅ Request-Validierung: `.get()` mit Defaults
- ✅ Path Traversal Protection: Agent-Files nur aus eigenem work-Verzeichnis
- ✅ Session-basierte Auth: Flask-Sessions - ✅ Session-basierte Auth: Flask-Sessions
### Empfehlungen für Produktion ### Empfehlungen für Produktion
@ -311,6 +380,23 @@ git push origin main
3. TaskBeat weist Task zu passendem Agent 3. TaskBeat weist Task zu passendem Agent
4. Agent arbeitet Task ab und antwortet per Email 4. Agent arbeitet Task ab und antwortet per Email
### Neuer Team-Member (Self-Learning)
1. Email von unbekanntem @diversityball.at Absender
2. System erkennt: "Nicht in Team-DB!"
3. Orchestrator übernimmt automatisch
4. Begrüßt und bittet um Vorstellung (Name, Rolle, Verantwortlichkeiten)
5. Beantwortet auch die eigentliche Anfrage
6. Nutzt @ADD_TEAM_MEMBER zum Speichern
7. Zukünftig: Bessere Koordination durch bekannte Verantwortlichkeiten
### Orchestrator Beat Monitoring
1. Alle 30 Minuten: System-Check
2. Findet Tasks ohne Fortschritt (>2h pending)
3. Findet blockierte Tasks (>4h in_progress)
4. Fragt Orchestrator was zu tun ist
5. Orchestrator entscheidet ob Eskalation nötig
6. Bei Bedarf: @SEND_EMAIL an verantwortliches Team-Mitglied
### Wissensdatenbank-Abfrage ### Wissensdatenbank-Abfrage
1. Agent braucht Info (z.B. Budget) 1. Agent braucht Info (z.B. Budget)
2. Nutzt `@READ_KNOWLEDGE Topic: Budget` 2. Nutzt `@READ_KNOWLEDGE Topic: Budget`
@ -327,6 +413,7 @@ Dieses Projekt ist für internen Gebrauch und Event-Management entwickelt.
--- ---
**Version**: 1.0.0 **Version**: 2.0.0
**Letztes Update**: Februar 2026 **Letztes Update**: 21. Februar 2026
**Status**: Production-Ready ✅ **Status**: Production-Ready ✅
**Neue Features**: Self-Learning Team-Management, Orchestrator Beat, Task-Persistierung, Telegram-Integration