diff --git a/README.md b/README.md index eb61414..9b1716a 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,9 @@ Frankenbot ist ein intelligentes Event-Management-System, bei dem spezialisierte - **Dynamische Modellauswahl**: 29+ KI-Modelle verfügbar (OpenCode, Anthropic, Ollama) ### 📋 Task-Management +- **Persistente Speicherung**: SQLite-Datenbank für Tasks - **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 - **Task-Delegation**: Orchestrator analysiert Tasks und weist sie passenden Agents zu - **Status-Tracking**: pending → in_progress → completed @@ -29,7 +31,9 @@ Frankenbot ist ein intelligentes Event-Management-System, bei dem spezialisierte - **IMAP**: Email-Posteingang überwachen - **SMTP**: Emails versenden - **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 - **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 - **Performance-Optimierung**: Reduziert Prompt-Größe um ~15KB - **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 @@ -119,14 +138,42 @@ Reason: Für große Events mit 500+ Gästen benötigt @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 ``` frankenbot/ -├── app.py # Haupt-Flask-App (2128 Zeilen) +├── app.py # Haupt-Flask-App (2900+ Zeilen) ├── agent_config.json # Agent-Modell-Zuweisungen ├── diversityball_knowledge.md # Event-Wissensdatenbank -├── email_journal.db # SQLite-Datenbank (Emails) +├── email_journal.db # SQLite-Datenbank (Emails, Tasks, Team-Members) │ ├── agents/ # Agent-Verzeichnisse │ ├── orchestrator/ @@ -174,10 +221,11 @@ frankenbot/ - **Backend**: Flask 3.x - **Frontend**: Bootstrap 5, Vanilla JavaScript -- **Database**: SQLite (Email-Journal) -- **AI**: OpenCode CLI (Multi-Provider Support) +- **Database**: SQLite (Email-Journal, Tasks, Team-Members) +- **AI**: OpenCode CLI (Multi-Provider Support: Anthropic, Ollama, etc.) - **Templates**: Jinja2 - **Streaming**: Server-Sent Events (SSE) +- **Bot**: python-telegram-bot, QR-Code Generation ## 🎨 UI-Routen @@ -188,8 +236,9 @@ frankenbot/ | `/orchestrator` | Orchestrator-Chat mit Task-Verteilung | | `/tasks` | Task-Management mit Auto-Refresh | | `/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) | +| `/settings` | System-Einstellungen, Telegram QR-Code, Poller-Konfiguration | ## ⚙️ Konfiguration @@ -212,10 +261,25 @@ EMAIL_IMAP_SERVER=imap.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 - **EmailPoller**: Prüft alle 2 Minuten auf neue Emails - **TaskBeat**: Verarbeitet Tasks alle 10 Sekunden - **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 @@ -224,6 +288,9 @@ EMAIL_SMTP_SERVER=smtp.gmail.com - ✅ Model-Cache (1h TTL) - ✅ Agent arbeiten in eigenen work-Verzeichnissen - ✅ 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 - Einfache Tasks: 30-60 Sekunden @@ -233,10 +300,12 @@ EMAIL_SMTP_SERVER=smtp.gmail.com ## 🔒 Security ### Implementierte Maßnahmen -- ✅ XSS-Schutz: HTML-Escaping in allen Templates -- ✅ Email-Whitelist: Nur autorisierte Absender +- ✅ XSS-Schutz: HTML-Escaping in allen Templates (orchestrator.html, chat.html) +- ✅ Email-Whitelist: Nur autorisierte Absender (diversityball.at Domain) +- ✅ Telegram-Whitelist: Nur autorisierte User-IDs - ✅ Exception-Handling: Spezifische Exception-Typen mit Logging - ✅ Request-Validierung: `.get()` mit Defaults +- ✅ Path Traversal Protection: Agent-Files nur aus eigenem work-Verzeichnis - ✅ Session-basierte Auth: Flask-Sessions ### Empfehlungen für Produktion @@ -311,6 +380,23 @@ git push origin main 3. TaskBeat weist Task zu passendem Agent 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 1. Agent braucht Info (z.B. 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 -**Letztes Update**: Februar 2026 -**Status**: Production-Ready ✅ +**Version**: 2.0.0 +**Letztes Update**: 21. Februar 2026 +**Status**: Production-Ready ✅ +**Neue Features**: Self-Learning Team-Management, Orchestrator Beat, Task-Persistierung, Telegram-Integration