feat: initial commit – Frankenbot Multi-Agent Orchestration System
- Flask Web-App mit Dashboard, Chat, Orchestrator, Tasks, Dateien, Emails, Agenten, Settings - Email-Poller (IMAP) mit SQLite-Journal als Failsafe (kein Emailverlust bei Absturz) - Failsafe-Fenster und Poll-Intervall zur Laufzeit via /settings konfigurierbar - TaskWorker: IMAP Seen-Flag erst nach erfolgreichem Task-Abschluss - Whitelist-Filter: eric.fischer, p.dyderski, georg.tschare (gmail + signtime.media), *@diversityball.at - 9 Agenten: researcher, tax_advisor, document_editor, location_manager, program_manager, catering_manager, musik_rechte_advisor, zusammenfasser, orchestration_ui - Diversity Ball Wien 2026 – Wissensdatenbank, Sponsoringverträge, Email-Vorlagen
This commit is contained in:
commit
56d9bc2c76
71 changed files with 5953 additions and 0 deletions
192
CHANGES.md
Normal file
192
CHANGES.md
Normal file
|
|
@ -0,0 +1,192 @@
|
|||
# Implementierte Änderungen - Features Summary
|
||||
|
||||
## 📊 Übersicht der Änderungen
|
||||
|
||||
### Feature 1: Streaming-UI für Agent-Responses
|
||||
|
||||
**Datei: app.py**
|
||||
- **Zeile 10**: `Response` zu Imports hinzugefügt
|
||||
- **Zeile 67**: Timeout von 120 auf 300 Sekunden erhöht
|
||||
- **Zeilen 250-288**: Neue SSE-Route `/api/agent-stream` implementiert
|
||||
- JSON-basierte Events: agent_selected, processing, response_chunk, complete, error
|
||||
- Chunk-basiertes Streaming (50 Zeichen pro Event)
|
||||
- Error-Handling mit try-except
|
||||
|
||||
**Datei: templates/orchestrator.html**
|
||||
- **Zeilen 66-74**: "Live-Antwort anfordern" Button hinzugefügt
|
||||
- **Zeilen 75-76**: "Klassisch senden" Button für alte Methode
|
||||
- **Zeilen 185-232**: JavaScript Streaming-Handler implementiert
|
||||
- `sendPromptWithStream()` Funktion
|
||||
- Fetch API mit ReadableStream Reader
|
||||
- SSE Event-Parser für JSON-Objekte
|
||||
- Live DOM-Updates für Chat-Nachrichten
|
||||
|
||||
---
|
||||
|
||||
### Feature 2: Email-Integration (IMAP/SMTP)
|
||||
|
||||
**Datei: app.py**
|
||||
- **Zeilen 5-9**: Email-Imports hinzugefügt
|
||||
- `imaplib` für IMAP-Verbindungen
|
||||
- `smtplib` und `email.mime` für SMTP-Versand
|
||||
- **Zeilen 29-36**: Email-Konfiguration mit Umgebungsvariablen
|
||||
- Standard Gmail-Einstellungen
|
||||
- Fallback auf Environment-Variablen
|
||||
- **Zeilen 194-221**: `get_emails()` Funktion
|
||||
- IMAP SSL-Verbindung
|
||||
- Liest letzte 10 Emails
|
||||
- Extrahiert Subject, From, Date, Preview
|
||||
- **Zeilen 224-232**: `get_email_preview()` Funktion
|
||||
- Extrahiert Text-Preview aus Email
|
||||
- Multipart-Handling
|
||||
- UTF-8 Decoding mit Fallback
|
||||
- **Zeilen 235-259**: `get_email_body()` Funktion
|
||||
- Vollständiger Email-Body Abruf
|
||||
- Lazy Loading (on-demand)
|
||||
- Error-Handling mit Fehlermeldungen
|
||||
- **Zeilen 262-284**: `send_email()` Funktion
|
||||
- SMTP-Versand mit STARTTLS
|
||||
- MIMEMultipart für strukturierte Emails
|
||||
- Login + Send + Quit Workflow
|
||||
- Rückgabe von Success-Flag + Nachricht
|
||||
- **Zeilen 483-509**: Route `/emails` (GET/POST)
|
||||
- Email-Management Dashboard rendern
|
||||
- Email-Versand-Form verarbeiten
|
||||
- Config-Status Display
|
||||
- **Zeilen 512-520**: Route `/emails/<email_id>` (GET)
|
||||
- JSON-Response mit Email-Body
|
||||
- Config-Validierung
|
||||
|
||||
**Datei: templates/emails.html** (Neue Datei)
|
||||
- Bootstrap 5 basiertes Layout
|
||||
- Zwei-spaltige UI:
|
||||
- **Links**: Email-Verfassung Form (To, Subject, Body, Send)
|
||||
- **Rechts**: Posteingang mit Email-Liste
|
||||
- Modal-Dialog für Email-Detail-View
|
||||
- JavaScript `viewEmail()` für Lazy-Loading
|
||||
- Responsive Design
|
||||
|
||||
**Datei: .env.example** (Neue Datei)
|
||||
- Gmail-Setup Anleitung (mit 2FA)
|
||||
- Outlook/Office365 Config
|
||||
- Yahoo Config
|
||||
- Kommentierte Konfigurationsoptionen
|
||||
|
||||
**Navigation Updates** in allen HTML-Templates:
|
||||
- `templates/index.html`
|
||||
- `templates/chat.html`
|
||||
- `templates/tasks.html`
|
||||
- `templates/files.html`
|
||||
- `templates/agents.html`
|
||||
- `templates/orchestrator.html`
|
||||
|
||||
Jede Datei erhielt den neuen Navbar-Item:
|
||||
```html
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/emails">📧 Emails</a>
|
||||
</li>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📈 Statistiken
|
||||
|
||||
| Metrik | Wert |
|
||||
|--------|------|
|
||||
| Neue Python-Funktionen | 4 |
|
||||
| Neue Routes | 2 |
|
||||
| Neue HTML-Templates | 1 |
|
||||
| Neue Config-Dateien | 1 |
|
||||
| Template-Updates | 6 |
|
||||
| Zeilen Code hinzugefügt | ~350 |
|
||||
| Timeout-Erhöhung | 120s → 300s |
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Flow-Diagramme
|
||||
|
||||
### Streaming-Flow
|
||||
```
|
||||
User schreibt Prompt
|
||||
↓
|
||||
Klick "Live-Antwort anfordern"
|
||||
↓
|
||||
POST /api/agent-stream (JSON)
|
||||
↓
|
||||
Server: SSE Generator starten
|
||||
↓
|
||||
Event 1: agent_selected 🤖
|
||||
Event 2: processing ⏳
|
||||
Event 3: response_chunk (x multiple)
|
||||
Event 4: complete ✓
|
||||
↓
|
||||
Browser: Live-Update Chat-Container
|
||||
↓
|
||||
Modal zeigt: "⏳ Agent arbeitet..." → Antwort
|
||||
```
|
||||
|
||||
### Email-Send-Flow
|
||||
```
|
||||
User füllt Form aus
|
||||
↓
|
||||
POST /emails (to, subject, body)
|
||||
↓
|
||||
send_email(to, subject, body)
|
||||
↓
|
||||
SMTP connect → login → send_message → quit
|
||||
↓
|
||||
Response: Success/Error Message
|
||||
↓
|
||||
Flash message anzeigen
|
||||
```
|
||||
|
||||
### Email-Receive-Flow
|
||||
```
|
||||
GET /emails
|
||||
↓
|
||||
get_emails() → IMAP SSL connect
|
||||
↓
|
||||
Select INBOX → Search ALL
|
||||
↓
|
||||
Fetch letzte 10 Email-IDs
|
||||
↓
|
||||
Für jede Email: extract Subject, From, Date, Preview
|
||||
↓
|
||||
Close IMAP connection
|
||||
↓
|
||||
Template: Render Email-Liste
|
||||
↓
|
||||
User klick auf Email
|
||||
↓
|
||||
fetch(/emails/<id>) → get_email_body()
|
||||
↓
|
||||
Modal zeigt: Full Body Content
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✨ Highlights
|
||||
|
||||
### Streaming
|
||||
- Non-blocking Stream Reader für echte Echtzeit
|
||||
- Chunks für bessere UX (nicht ganze Antwort auf einmal)
|
||||
- Status-Updates während Verarbeitung
|
||||
- 5-minütiger Timeout (300s) für lange Anfragen
|
||||
|
||||
### Email
|
||||
- Zero-Abhängigkeiten (nur Python Standard Library)
|
||||
- Sichere Credential-Handling (env vars only)
|
||||
- Multipart Email-Support
|
||||
- UTF-8 Encoding mit Fallback
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Nächste Schritte (Optional)
|
||||
|
||||
- [ ] Email-Datei-Anhänge (Attachments)
|
||||
- [ ] Email-Suche & Filter
|
||||
- [ ] HTML-Email-Rendering
|
||||
- [ ] Automatische Email-Klassifizierung (Agents)
|
||||
- [ ] Streaming mit WebSockets statt SSE
|
||||
- [ ] Email-Caching (lokale DB)
|
||||
- [ ] Multi-Account Support
|
||||
Loading…
Add table
Add a link
Reference in a new issue