Files
Brancheneinstufung2/readme.md

11 KiB

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.


🏗️ 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
Company Explorer 🤖 /ce/ "The Data Core". CRM-Data-Mining & Enrichment. README
Lead Engine 📈 /lead/ "Trading Twins". Lead-Management & Kalender. README
Content Engine ✍️ /content/ "The Mouth". SEO- & Sales-Content Generierung. README
B2B Assistant 🚀 /b2b/ Persona- & Pain-Point-Analyse. README
Market Intel 📊 /market/ Marktanalyse & Recherche-Agent. README
Competitor Analysis ⚔️ /competitor/ Wettbewerber-Analyse & Battlecards. README
Connector 🔌 /connector/ "The Muscle". SuperOffice CRM Synchronisation. README
Meeting Assistant 🎙️ /tr/ Meeting-Transkription via Gemini 2.0. README
Heatmap Tool 🗺️ /heatmap/ Visualisierung von Excel-Daten auf PLZ-Karte. README
Listen-Generator 📄 /list-generator/ Erstellt PDF-Listen aus CSV-Dateien. README
Fotograf.de Scraper 📸 /fotograf-de/ Holt Auftragsdaten von Fotograf.de. README

🛠️ 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.

  • 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 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.


🚀 Deployment (Quickstart)

Um den Stack auf einer neuen Maschine (z.B. docker1) zu starten:

  1. Repository klonen:

    git clone <REPO_URL> /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:

    docker-compose up -d --build
    
  5. Verifizierung: Öffnen Sie http://<HOST_IP>:8090 im Browser.

🤖 Status-Update (2026-03-21 10:05 Berlin Time)

Investierte Zeit in dieser Session: 01:51

Arbeitszusammenfassung:
Keine Zusammenfassung angegeben.

🤖 Status-Update (2026-03-21 14:35 Berlin Time)

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)

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)

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)

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.

🤖 Status-Update (2026-03-21 20:56 Berlin Time)

Investierte Zeit in dieser Session: 00:24

Arbeitszusammenfassung:
Investierte Zeit in dieser Session: 00:30 (Finaler Feinschliff)

Arbeitszusammenfassung:
  Zusammenfassung der Ergebnisse:

  1. Finaler Listen-Fix:
      * Das Verschwinden der Einwilligungs-Häkchen auf der Terminliste wurde behoben. Statt eines unsicheren Unicode-Zeichens wird nun ein robustes, CSS-gezeichnetes Checkbox-Symbol mit grünem Häkchen verwendet, das garantiert in jedem PDF erscheint.
      * Die Einwilligungserkennung wurde durch Live-Datenanalyse von Calendly-Antworten ("Ja, gerne" vs. "Nein, eher nicht") verifiziert und stabilisiert.

  2. Header-Optimierung:
      * Der Titel der Terminliste wurde auf den Calendly-Event-Namen fokussiert.
      * Die automatische Entfernung von (JOBXXXXX) Markierungen aus den Auftragsnamen wurde perfektioniert.

  Damit sind alle Anforderungen für den Fotograf.de Scraper und die Shooting-Planung vollständig umgesetzt.