Optimierung der SuperOffice API-Aufrufe (Zertifizierung): Implementierung von $select in superoffice_client.py und worker.py zur Reduzierung der Payload. Robuste ID-Extraktion aus Webhook-FieldValues implementiert, um API-Calls zu minimieren und Null-Pointer-Fehler zu beheben. E2E-Test erfolgreich verifiziert und Dokumentation aktualisiert.
This commit introduces a new unsubscribe feature to allow contacts to opt-out
from marketing automation.
Key changes include:
- Database schema migration: Added (UUID) to the model.
- Data population: Implemented a script to assign unique tokens to existing contacts.
- API endpoint: Created a public GET endpoint to handle opt-out requests.
- Automation: New contacts automatically receive an unsubscribe token upon creation.
- Integration: The full unsubscribe link is now returned via the provisioning API
for storage in SuperOffice UDFs (ProgID: SuperOffice:9).
- Documentation: Updated and
to reflect the new feature and its integration requirements.
- Added for quick overview and next steps.
In dieser Sitzung wurde die Qualität der automatisierten Marketing-Texte maßgeblich verbessert. Die Intro-Texte der Marketing-Matrix wurden so optimiert, dass sie direkt mit der branchenspezifischen Produktkategorie und dem zentralen Nutzen beginnen, anstatt die Herausforderung zu wiederholen. Zusätzlich wurden die Opener-Texte präzisiert: Sie sind nun auf zwei Sätze begrenzt, faktenbasierter und leiten direkter zu den operativen Herausforderungen über, wodurch generische Lobhudelei vermieden wird. Temporäre Debugging-Skripte wurden aufbewahrt und angepasst, um zukünftige Überprüfungen zu erleichtern. Alle Änderungen wurden verifiziert, committed und erfolgreich ins Remote-Repository gepusht und die Befehle zur Produktivnahme gegeben.
Überarbeite den Prompt für die Generierung der Atomic Opener.
Die Opener werden nun auf genau zwei Sätze begrenzt, um Prägnanz zu gewährleisten.
Der Ton ist faktenbasierter und leitet direkter zu den operativen Herausforderungen über,
anstatt generische Lobhudelei zu verwenden.
Überarbeite den Prompt für die Generierung von Intro-Texten in der Marketing Matrix.
Das Intro beginnt nun direkt mit der branchenspezifischen Produktkategorie und dem zentralen Nutzen,
anstatt die Herausforderung zu wiederholen. Dies verbessert die Prägnanz und Relevanz der E-Mails.
✦ In dieser Sitzung haben wir den End-to-End-Test der SuperOffice-Schnittstelle erfolgreich von der automatisierten Simulation bis zum produktiven Live-Lauf
mit Echtdaten abgeschlossen.
1. Erreichte Meilensteine
* Stabile Authentifizierung: Kritische Fehler beim Token-Refresh behoben. Der Client fällt nun automatisch auf sod zurück, falls
die Umgebungsvariable leer ist.
* Pydantic V2 Kompatibilität: config.py auf natives Python umgestellt, um ModuleNotFoundError in Docker-Containern zu verhindern.
* Automatisierter E2E-Test: Neuer Standalone-Test connector-superoffice/tests/test_e2e_flow.py verifiziert die gesamte Kette
(Account-Anlage -> Anreicherung -> Person-Texte -> Vertical-Wechsel).
* Bidirektionaler Vertical-Sync: Der Worker erkennt jetzt manuelle Branchen-Änderungen in SuperOffice, synchronisiert sie zum
Company Explorer und triggert automatisch neue Texte für alle Personen (Kaskade).
* Daten-Persistenz: Personen werden jetzt beim ersten Webhook im Company Explorer gespeichert, damit Updates (wie Branchenwechsel)
auch ohne erneute Übermittlung des Jobtitels funktionieren.
* Content-Generierung: Die Marketing-Matrix wurde live für die Branchen "Healthcare - Hospital" und "Leisure - Indoor Active"
befüllt.
- Implemented comprehensive E2E test covering full roundtrip and manual overrides.
- Enhanced to detect manual Vertical changes in SuperOffice and sync them to Company Explorer.
- Updated to handle industry overrides from CRM and auto-persist Person/Contact data for robust cascade updates.
1. E2E-Test erfolgreich: Das neue Test-Skript (test_e2e_full_flow.py) hat den kompletten Prozess automatisiert verifiziert:
* Provisionierung: Anlage eines Test-Unternehmens ("Klinikum Landkreis Erding (E2E Test)") über die API.
* Discovery & Analyse: Das System hat die Website gefunden, gescrapt und die Branche ("Healthcare - Hospital") korrekt
klassifiziert.
* Fehlerbehebung (Crash-Fix): Während des Tests wurde ein kritischer AttributeError im Backend identifiziert (Absturz bei
fehlenden Einheiten) und von mir behoben. Seitdem läuft die Analyse ohne Unterbrechung durch.
* Opener-Generierung: Es wurden erfolgreich zwei hoch-personalisierte Einleitungssätze (Primary & Secondary Opener) generiert.
* SuperOffice-Payload: Der finale Abgleich lieferte die korrekte Rolle ("Wirtschaftlicher Entscheider") für den
"Geschäftsführer" zurück.
Completed the full GTM Engine implementation:\n\n- Implemented 'Dual Opener' (Primary/Secondary) generation in ClassificationService and DB.\n- Updated Frontend Inspector to display both openers.\n- Hardened analysis process (fixed duplicate scrapes, improved metric prompt).\n- Created robust, API-level E2E test script (test_opener_api.py).\n- Created a standalone health_check.py for diagnostics.\n- Updated all relevant documentation (README, GEMINI.md).
Completed the GTM engine setup:\n\n- Implemented 'Dual Opener' generation (Primary/Secondary) in ClassificationService.\n- Migrated DB to support two opener fields.\n- Updated API and Frontend to handle and display both openers.\n- Fixed bug creating duplicate website_scrape entries.\n- Hardened metric extraction by improving the LLM prompt and adding content length checks.