# GTM Engine: Automatisierte Unternehmensbewertung & Lead-Generierung (v3.0) **Current Status (März 2026):** Production-Ready Microservice Architecture. Dieses Projekt ist eine modulare "Lead Enrichment Factory", die darauf ausgelegt ist, Unternehmensdaten aus einem D365-CRM-System automatisiert anzureichern, zu analysieren und für Marketing- & Vertriebszwecke aufzubereiten. Die Architektur basiert auf Docker-Containern und einer zentralen Nginx-Gateway-Lösung. --- ## ‼️ Aktueller Fokus: Migration & Betrieb **Das System wurde für den Umzug auf die Ubuntu VM (`docker1`) stabilisiert.** * **Migrationsplan & Netzwerkanforderungen:** [➡️ `RELOCATION.md`](./RELOCATION.md) * **Legacy-Dokumentation (Python-Skripte):** [📂 `ARCHIVE_legacy_scripts/README_LEGACY.md`](./ARCHIVE_legacy_scripts/README_LEGACY.md) --- ## 🏗️ System-Architektur (Microservices) Das System besteht aus mehreren spezialisierten Diensten, die über ein zentrales Gateway (`nginx`) erreichbar sind. Jeder Dienst ist isoliert und besitzt (wo nötig) eigene persistente Datenvolumes. ### 🌐 Zentraler Zugang (Gateway) Alle Dienste sind über Port **8090** (oder `https://floke-ai.duckdns.org` bei entsprechender DNS-Konfiguration) erreichbar und durch Basic Auth geschützt. | Modul | Icon | Pfad | Beschreibung | Doku | | :--- | :---: | :--- | :--- | :--- | | **Dashboard** | 🏠 | `/` | Zentrale Einstiegsseite. | - | | **GTM Architect** | 🏛️ | `/gtm/` | **"The Brain"**. Go-to-Market Strategie & Architektur. | [README](./gtm-architect/README.md) | | **Company Explorer** | 🤖 | `/ce/` | **"The Data Core"**. CRM-Data-Mining & Enrichment. | [README](./company-explorer/README.md) | | **Lead Engine** | 📈 | `/lead/` | **"Trading Twins"**. Lead-Management & Kalender. | [README](./lead-engine/README.md) | | **Content Engine** | ✍️ | `/content/` | **"The Mouth"**. SEO- & Sales-Content Generierung. | [README](./content-engine/README.md) | | **B2B Assistant** | 🚀 | `/b2b/` | Persona- & Pain-Point-Analyse. | [README](./b2b-marketing-assistant/README.md) | | **Market Intel** | 📊 | `/market/` | Marktanalyse & Recherche-Agent. | [README](./general-market-intelligence/README.md) | | **Competitor Analysis** | ⚔️ | `/competitor/` | Wettbewerber-Analyse & Battlecards. | [README](./competitor-analysis-app/README.md) | | **Connector** | 🔌 | `/connector/` | **"The Muscle"**. SuperOffice CRM Synchronisation. | [README](./connector-superoffice/README.md) | | **Meeting Assistant** | 🎙️ | `/tr/` | Meeting-Transkription via Gemini 2.0. | [README](./transcription-tool/README.md) | | **Heatmap Tool** | 🗺️ | `/heatmap/` | Visualisierung von Excel-Daten auf PLZ-Karte. | [README](./heatmap-tool/README.md) | | **Listen-Generator** | 📄 | `/list-generator/` | Erstellt PDF-Listen aus CSV-Dateien. | [README](./list-generator/README.md) | | **Fotograf.de Scraper**| 📸 | `/fotograf-de/` | Holt Auftragsdaten von Fotograf.de. | [README](./fotograf-de-scraper/README.md) | --- ## 🛠️ Technische Spezifikationen ### Architektur & Ports Die GTM Engine basiert auf einer Microservice-Architektur, orchestriert via `docker-compose.yml`. Detaillierte Informationen zu Ports, Volumes und Routing finden Sie in der [➡️ Infrastruktur-Dokumentation](./docs/INFRASTRUCTURE.md). * **Zentraler Zugang:** Port `8090` (extern). * **Sicherheit:** Einheitliche Authentifizierung via Nginx-Gateway. * **Connectivity:** Automatisches DNS-Update via DuckDNS. ### Persistenz & Environment * **Volumes:** Alle kritischen Daten werden in benannten Docker-Volumes gespeichert. * **Secrets:** Konfiguration erfolgt ausschließlich über eine zentrale `.env` Datei. Hardcoded Credentials sind nicht zulässig. ## ✅ Qualitätssicherung (Testing) Um die Stabilität des Systems zu gewährleisten, wurden zwei Mechanismen implementiert: ### System-Health-Check Das Skript `health_check.sh` prüft den Docker-Status und die internen API-Endpunkte aller laufenden Dienste. Es ist der schnellste Weg, um zu verifizieren, ob das Gesamtsystem betriebsbereit ist. ```bash bash health_check.sh ``` ### Automatisierte Tests Für die kritischen Backend-Dienste existieren automatisierte Integrationstests (`pytest`). Diese mocken externe APIs und validieren die Kernlogik. Detaillierte Anweisungen zur Ausführung finden Sie in [➡️ `docs/TESTING.md`](./docs/TESTING.md). --- ## 🚀 Deployment (Quickstart) Um den Stack auf einer neuen Maschine (z.B. `docker1`) zu starten: 1. **Repository klonen:** ```bash git clone /opt/gtm-engine cd /opt/gtm-engine ``` 2. **Environment konfigurieren:** Kopieren Sie die `.env.example` zu `.env` und tragen Sie Ihre API-Schlüssel ein. 3. **Volumes wiederherstellen (Optional):** Falls Sie Daten migrieren, stellen Sie die Docker-Volumes **vor** dem ersten Start wieder her (siehe `RELOCATION.md`). 4. **Starten:** ```bash docker-compose up -d --build ``` 5. **Verifizierung:** Öffnen Sie `http://:8090` im Browser. ## 🤖 Status-Update (2026-03-21 10:05 Berlin Time) ```yaml Investierte Zeit in dieser Session: 01:51 Arbeitszusammenfassung: Keine Zusammenfassung angegeben. ``` ## 🤖 Status-Update (2026-03-21 14:35 Berlin Time) ```yaml Investierte Zeit in dieser Session: 00:22 Arbeitszusammenfassung: Investierte Zeit in dieser Session: 00:30 Arbeitszusammenfassung: Zusammenfassung der Ergebnisse: 1. QR-Karten Tool (Feinschliff): * Die Y-Achse für den Andruck wurde um 9 mm nach unten korrigiert, sodass die Texte nun perfekt auf den Linien der Blankokarten sitzen. Die X-Achse bleibt bei 72 mm. * Zeitzonen-Unterstützung integriert: Die aus der Calendly-API importierten Termine (UTC) werden jetzt automatisch in die Mitteleuropäische Zeit (Europe/Berlin) konvertiert (z. B. 12:00 Uhr statt 10:00 Uhr). * Einwilligungs-Feature: Die Skripte prüfen nun, ob in Calendly der Veröffentlichung von Bildern ("Ja, gerne") zugestimmt wurde. Falls ja, wird ein manuell gezeichnetes Checkbox-Häkchen (☑) vor dem Namen im PDF angedruckt. Neue Anforderungen für die nächste Session (im System erfasst): * Workflow-Änderung: Das QR-Karten-Tool wird vom globalen Header in die auftragsspezifische Ansicht verschoben. * Dynamische Event-Auswahl: Nutzer müssen pro Auftrag das spezifische Calendly-Event auswählen. Die Datumsauswahl entfällt dadurch. * Neues PDF-Feature: Erstellung einer Übersichtsliste aller Termine (inklusive Lücken / Blank-Spacing für nicht gebuchte Termine im 6-Minuten-Takt). ``` ## 🤖 Status-Update (2026-03-21 15:07 Berlin Time) ```yaml Investierte Zeit in dieser Session: 00:32 Arbeitszusammenfassung: Investierte Zeit in dieser Session: 01:15 Arbeitszusammenfassung: Zusammenfassung der Ergebnisse: 1. QR-Karten Tool (Feinschliff): * Die Y-Achse wurde um weitere 9 mm nach unten korrigiert (jetzt 31mm / 180mm), um perfekt auf den Linien zu sitzen. * Volle Zeitzonen-Unterstützung (Europe/Berlin) für korrekte Uhrzeiten im PDF. * Automatischer Andruck einer manuell gezeichneten Checkbox (☑) bei vorliegender Bildveröffentlichungseinwilligung aus Calendly. 2. Shooting-Planung (Integration): * Das Tool wurde vom globalen Header direkt in die Detailansicht der Fotoaufträge verschoben. * Dynamische Auswahl des Calendly-Event-Typs (z.B. "Neuching") über ein Dropdown-Menü. Die manuelle Datumseingabe entfällt. 3. Termin-Übersichtsliste (Neu): * Generierung einer A4-PDF-Tabelle für den Shooting-Tag. * Automatisches 6-Minuten-Raster zwischen erstem und letztem Termin, inklusive "Blank-Spacing" (leere Zeilen) für nicht gebuchte Slots. * Layout mit Logo (oben rechts), Auftragsname (oben links) und Spalten für Familie, Kinder, Veröffentlichung und Erledigt-Häkchen. 4. Technische Fixes & Stabilität: * Calendly-Pagination-Bug behoben: Das System blättert nun durch alle Ergebnisseiten, um auch bei über 100 Terminen alle Buchungen zu finden. * Syntaxfehler in qr_generator.py korrigiert. * README.md im Scraper-Verzeichnis auf den neuesten Stand gebracht. ``` ## 🤖 Status-Update (2026-03-21 20:26 Berlin Time) ```yaml Investierte Zeit in dieser Session: 05:18 Arbeitszusammenfassung: Investierte Zeit in dieser Session: 00:30 (Zusatz-Fixes) Arbeitszusammenfassung: Zusammenfassung der Ergebnisse: 1. Unicode- & Font-Fix: * Einbindung von OpenSans-Regular.ttf zur korrekten Darstellung von Sonderzeichen (ć, ł, etc.) auf QR-Karten und Listen. 2. Layout-Optimierungen: * PDF-Liste: Zeilenabstände verringert für höhere Datendichte pro Seite. * "Pausen-Management": Automatische Komprimierung von mehr als zwei aufeinanderfolgenden freien Slots zu einer kompakten "Pause"-Zeile. * Header-Fix: Automatisches Entfernen von "JOBXXXXX" Präfixen aus dem Auftragsnamen. * Page-Breaks: Erzwungener Seitenumbruch pro Shooting-Tag inkl. Header-Wiederholung. 3. Consent-Logik (Synchronisation): * Angleichung der Einwilligungserkennung für QR-Karten und Listen (Suche nach "veröffentlichen"/"bilder" + "ja"). * Positionierung des ☑ Symbols am Ende der Textzeile bei QR-Karten. ``` ## 🤖 Status-Update (2026-03-21 20:32 Berlin Time) ```yaml Investierte Zeit in dieser Session: 00:05 Arbeitszusammenfassung: Investierte Zeit in dieser Session: 01:00 Arbeitszusammenfassung: Zusammenfassung der Ergebnisse: 1. Feature 3: Nachfass-E-Mails (Supermailer) implementiert: * Portierung der Legacy-Scraping-Logik in den Microservice. * Neuer Hintergrund-Task analysiert Käuferverhalten, identifiziert Nicht-Käufer mit 0-1 Logins und extrahiert E-Mail-Adressen sowie Schnell-Login-Links. * Aggregations-Logik fasst mehrere Kinder pro E-Mail-Adresse zusammen (z.B. "Fotos von Max und Moritz"). * Neuer API-Endpunkt generiert eine fertige CSV-Datei für den Supermailer (UTF-8-SIG für Excel-Kompatibilität). 2. UI-Integration: * Tool 3 im Auftrags-Modal ist nun aktiv. * Echtzeit-Fortschrittsanzeige während der (langen) Analyse. * Download-Button erscheint automatisch nach Abschluss der Analyse. ```