frankenbot/CHANGES.md
Pjot 56d9bc2c76 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
2026-02-20 17:31:16 +01:00

192 lines
4.9 KiB
Markdown

# 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