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

4.9 KiB

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:

<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