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:
parent
632a6c253a
commit
42a84141d9
1 changed files with 98 additions and 11 deletions
107
README.md
107
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)
|
- **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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue