[31e88f42] Keine neuen Commits in dieser Session.
Keine neuen Commits in dieser Session.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# Lead Engine: Multi-Source Automation v1.4 [31988f42]
|
||||
# Lead Engine: Multi-Source Automation v2.2 [31988f42]
|
||||
|
||||
## 🚀 Übersicht
|
||||
Die **Lead Engine** ist ein spezialisiertes Modul zur autonomen Verarbeitung von B2B-Anfragen. Sie fungiert als Brücke zwischen dem E-Mail-Postfach und dem **Company Explorer**, um innerhalb von Minuten hochgradig personalisierte Antwort-Entwürfe auf "Human Expert Level" zu generieren.
|
||||
@@ -23,7 +23,7 @@ Die **Lead Engine** ist ein spezialisiertes Modul zur autonomen Verarbeitung von
|
||||
* **KI-Engine:** Gemini 2.0 Flash erstellt E-Mail-Entwürfe.
|
||||
* **Kontext:** Kombiniert Lead-Daten + CE-Daten + Matrix-Argumente (Pains/Gains).
|
||||
|
||||
### 5. Trading Twins Autopilot (PRODUKTIV v2.1)
|
||||
### 5. Trading Twins Autopilot (PRODUKTIV v2.2)
|
||||
Der vollautomatische "Zero Touch" Workflow für Trading Twins Anfragen.
|
||||
|
||||
* **Human-in-the-Loop:** Elizabeta Melcer erhält eine Teams-Nachricht ("Approve/Deny").
|
||||
@@ -44,36 +44,41 @@ Der vollautomatische "Zero Touch" Workflow für Trading Twins Anfragen.
|
||||
├── trading_twins/ # Autopilot Modul
|
||||
│ ├── manager.py # Orchestrator, FastAPI, Graph API Logic
|
||||
│ ├── test_calendar_logic.py # Interner Test für Kalender-Zugriff
|
||||
│ └── signature.html # HTML-Signatur
|
||||
│ └── signature.html # HTML-Signatur (mit Bildern im selben Ordner)
|
||||
└── db.py # Lokale SQLite Lead-Datenbank
|
||||
```
|
||||
|
||||
## 🚨 Lessons Learned & Critical Fixes
|
||||
|
||||
### 1. Microsoft Graph API: Kalender-Zugriff
|
||||
* **Problem:** `debug_calendar.py` scheiterte oft mit `Invalid parameter`.
|
||||
* **Ursache:** URL-Encoding von Zeitstempeln (`+` wurde zu Leerzeichen) und Mikrosekunden (7 Stellen statt 6).
|
||||
* **Lösung:** Nutzung von `requests(params=...)` und Abschneiden der Mikrosekunden.
|
||||
* **Endpoint:** `/users/{email}/calendar/getSchedule` (POST) ist robuster als `/calendarView` (GET).
|
||||
* **Problem:** `debug_calendar.py` scheiterte oft mit `TimeZoneNotSupportedException`.
|
||||
* **Ursache:** Der API-Aufruf zur Abfrage der Verfügbarkeit (`getSchedule`) hat keine explizite Zeitzoneninformation erhalten.
|
||||
* **Lösung:** Die Zeitzone ("Europe/Berlin") wird nun explizit im `payload` des API-Aufrufs mitgegeben.
|
||||
|
||||
### 2. Exchange AppOnly AccessPolicy (Buchungs-Workaround)
|
||||
* **Problem:** `Calendars.ReadWrite` erlaubt einer App oft nicht, Termine in *fremden* Kalendern (`e.melcer@`) zu erstellen (`403 Forbidden`).
|
||||
* **Lösung:** Der Termin wird im **eigenen Kalender** des Service-Accounts (`info@`) erstellt. Der Mitarbeiter (`e.melcer@`) wird als **Teilnehmer** hinzugefügt. Das umgeht die Policy.
|
||||
|
||||
### 3. Docker Environment Variables
|
||||
* **Problem:** Skripte im Container fanden Credentials nicht, obwohl sie in `.env` standen.
|
||||
* **Lösung:** Explizites `load_dotenv` ist in Standalone-Skripten (`test_*.py`) nötig. Im Hauptprozess (`manager.py`) reicht `os.getenv`, solange Docker Compose die Vars korrekt durchreicht.
|
||||
### 3. Dynamische HTML-Signatur mit Inline-Bildern
|
||||
* **Problem:** Eine statische Signatur in der Konfiguration war unflexibel und konnte keine Bilder enthalten.
|
||||
* **Lösung:** Ein Skript (`scripts/extract_signature_assets.py`) extrahiert die vollständige HTML-Signatur und alle eingebetteten Bilder aus einer `.eml`-Datei. Die `send_email`-Funktion wurde überarbeitet, um alle Bilder dynamisch als Inline-Anhänge zu versenden, was eine professionelle Darstellung sicherstellt.
|
||||
|
||||
## 🚀 Inbetriebnahme
|
||||
### 4. Advanced Debugging & Fehlerbehebung
|
||||
* **Problem:** Hintergrund-Tasks schlugen ohne klare Fehlermeldung fehl, was die Diagnose erschwerte.
|
||||
* **Lösung:** Umfassendes Logging wurde in allen kritischen Funktionen implementiert. Dadurch konnten Fehler wie ein `NameError` bei der Datumsformatierung und die `TimeZoneNotSupportedException` schnell identifiziert und behoben werden.
|
||||
|
||||
## 🚀 Inbetriebnahme & Test
|
||||
|
||||
### Inbetriebnahme
|
||||
```bash
|
||||
# Neustart des Dienstes
|
||||
docker-compose up -d --build --force-recreate lead-engine
|
||||
|
||||
# Manueller Test (intern)
|
||||
docker exec lead-engine python /app/trading_twins/test_calendar_logic.py
|
||||
```
|
||||
|
||||
### Test & Debugging
|
||||
* **Allgemeiner Test:** Die URL `https://floke-ai.duckdns.org/feedback/test_lead` löst einen generischen Test-Lead aus.
|
||||
* **Spezifischer Test pro Lead:** Im Lead-Tool (`/lead/`) kann für jeden Lead mit einem generierten E-Mail-Entwurf der Button "🧪 Test-Versand (an floke.com@gmail.com)" geklickt werden. Dies startet den gesamten End-to-End-Prozess (Teams-Nachricht & E-Mail-Versand) für den ausgewählten Lead, sendet die E-Mail aber sicher an die Test-Adresse.
|
||||
|
||||
**Zugriff:** `https://floke-ai.duckdns.org/lead/` (Passwortgeschützt)
|
||||
|
||||
## 📝 Zukünftige Erweiterungen & Todos
|
||||
|
||||
Reference in New Issue
Block a user