From bffd400878af76852a6d68c508b2e4077ad39e88 Mon Sep 17 00:00:00 2001 From: Floke Date: Thu, 5 Mar 2026 21:30:16 +0000 Subject: [PATCH] feat: Structure documentation, archive legacy files and clean up docker-compose.yml [30388f42] --- .../Generating | 0 .../google_sheet_handler.txt | 0 .../alt_roboplanet-gtm-strategy-2026-01-14.md | 0 .../b2b-marketing-analysis_Roboplanet-2.md | 0 .../docs/b2b-marketing-analysis_Roboplanet.md | 0 .../neu_roboplanet-gtm-strategy-2026-01-14.md | 0 .../roboplanet-gtm-strategy-2026-01-03 (1).md | 0 .../roboplanet-gtm-strategy-2026-01-03 (2).md | 0 .../roboplanet-gtm-strategy-2026-01-03.md | 0 .../docs/roboplanet-gtm-strategy-v3.md | 0 .../docs/roboplanet_b2b_analyse.md | 0 .../v3_roboplanet-gtm-strategy-2026-01-20.md | 0 .../v4_roboplanet-gtm-strategy-2026-01-20.md | 0 company-explorer/MIGRATION_PLAN.md | 178 -------------- .../docs/Puma_m20_2026-01-08.md | 0 .../docs/Supplyon.md | 0 .../docs/case_study_djh_waldbröl.md | 0 .../docs/yamaichi_lokal.md | 0 .../docs/yamaichi_neu.md | 0 docker-compose.yml | 232 +----------------- .../ANALYSIS_AND_PROPOSAL.md | 0 .../ANALYSIS_PHASE_2_ONLY.md | 0 .../ANFORDERUNGEN_IT_OAUTH.md | 0 .../ARCHITEKTUR_GCP_SETUP.md | 0 .../BUILDER_APPS_MIGRATION.md | 0 .../Direktive_Zusammenarbeit.md | 0 KONVER_STRATEGY.md => docs/KONVER_STRATEGY.md | 0 MIGRATION_PLAN.md => docs/MIGRATION_PLAN.md | 0 .../MIGRATION_REPORT_COMPETITOR_ANALYSIS.md | 0 .../MOLTBOT_SYNOLOGY_GUIDE.md | 0 .../NOTION_TASK_SUMMARY.md | 0 .../Notion_Dashboard.md | 0 .../README_dev_session.md | 0 .../SKILL_TASK_MANAGER.md | 0 .../SUPEROFFICE_INTEGRATION_PLAN.md | 0 .../SUPEROFFICE_MEETING_PREP.md | 0 .../TASK_STATUS_REPORT_2f388f42.md | 0 .../TASK_STATUS_REPORT_30e88f42.md | 0 .../TRANSCRIPTION_TOOL.md | 0 .../UNSUBSCRIBE_FEATURE_SUMMARY.md | 0 .../b2b_marketing_assistant_plan.md | 0 duckdns_setup.md => docs/duckdns_setup.md | 0 .../gtm_architect_documentation.md | 0 .../market_intel_backend_plan.md | 0 moltbot_chatgpt.md => docs/moltbot_chatgpt.md | 0 .../notion_integration.md | 0 planning.md => docs/planning.md | 0 tasks.md => docs/tasks.md | 0 umzug.md => docs/umzug.md | 0 .../verticals_analysis.md | 0 readme.md | 2 + tmp/test_context.md | 21 -- 52 files changed, 6 insertions(+), 427 deletions(-) rename Generating => ARCHIVE_vor_migration/Generating (100%) rename google_sheet_handler.txt => ARCHIVE_vor_migration/google_sheet_handler.txt (100%) rename alt_roboplanet-gtm-strategy-2026-01-14.md => b2b-marketing-assistant/docs/alt_roboplanet-gtm-strategy-2026-01-14.md (100%) rename b2b-marketing-analysis_Roboplanet-2.md => b2b-marketing-assistant/docs/b2b-marketing-analysis_Roboplanet-2.md (100%) rename b2b-marketing-analysis_Roboplanet.md => b2b-marketing-assistant/docs/b2b-marketing-analysis_Roboplanet.md (100%) rename neu_roboplanet-gtm-strategy-2026-01-14.md => b2b-marketing-assistant/docs/neu_roboplanet-gtm-strategy-2026-01-14.md (100%) rename roboplanet-gtm-strategy-2026-01-03 (1).md => b2b-marketing-assistant/docs/roboplanet-gtm-strategy-2026-01-03 (1).md (100%) rename roboplanet-gtm-strategy-2026-01-03 (2).md => b2b-marketing-assistant/docs/roboplanet-gtm-strategy-2026-01-03 (2).md (100%) rename roboplanet-gtm-strategy-2026-01-03.md => b2b-marketing-assistant/docs/roboplanet-gtm-strategy-2026-01-03.md (100%) rename roboplanet-gtm-strategy-v3.md => b2b-marketing-assistant/docs/roboplanet-gtm-strategy-v3.md (100%) rename roboplanet_b2b_analyse.md => b2b-marketing-assistant/docs/roboplanet_b2b_analyse.md (100%) rename v3_roboplanet-gtm-strategy-2026-01-20.md => b2b-marketing-assistant/docs/v3_roboplanet-gtm-strategy-2026-01-20.md (100%) rename v4_roboplanet-gtm-strategy-2026-01-20.md => b2b-marketing-assistant/docs/v4_roboplanet-gtm-strategy-2026-01-20.md (100%) delete mode 100644 company-explorer/MIGRATION_PLAN.md rename Puma_m20_2026-01-08.md => company-explorer/docs/Puma_m20_2026-01-08.md (100%) rename Supplyon.md => company-explorer/docs/Supplyon.md (100%) rename case_study_djh_waldbröl.md => company-explorer/docs/case_study_djh_waldbröl.md (100%) rename yamaichi_lokal.md => company-explorer/docs/yamaichi_lokal.md (100%) rename yamaichi_neu.md => company-explorer/docs/yamaichi_neu.md (100%) rename ANALYSIS_AND_PROPOSAL.md => docs/ANALYSIS_AND_PROPOSAL.md (100%) rename ANALYSIS_PHASE_2_ONLY.md => docs/ANALYSIS_PHASE_2_ONLY.md (100%) rename ANFORDERUNGEN_IT_OAUTH.md => docs/ANFORDERUNGEN_IT_OAUTH.md (100%) rename ARCHITEKTUR_GCP_SETUP.md => docs/ARCHITEKTUR_GCP_SETUP.md (100%) rename BUILDER_APPS_MIGRATION.md => docs/BUILDER_APPS_MIGRATION.md (100%) rename Direktive_Zusammenarbeit.md => docs/Direktive_Zusammenarbeit.md (100%) rename KONVER_STRATEGY.md => docs/KONVER_STRATEGY.md (100%) rename MIGRATION_PLAN.md => docs/MIGRATION_PLAN.md (100%) rename MIGRATION_REPORT_COMPETITOR_ANALYSIS.md => docs/MIGRATION_REPORT_COMPETITOR_ANALYSIS.md (100%) rename MOLTBOT_SYNOLOGY_GUIDE.md => docs/MOLTBOT_SYNOLOGY_GUIDE.md (100%) rename NOTION_TASK_SUMMARY.md => docs/NOTION_TASK_SUMMARY.md (100%) rename Notion_Dashboard.md => docs/Notion_Dashboard.md (100%) rename README_dev_session.md => docs/README_dev_session.md (100%) rename SKILL_TASK_MANAGER.md => docs/SKILL_TASK_MANAGER.md (100%) rename SUPEROFFICE_INTEGRATION_PLAN.md => docs/SUPEROFFICE_INTEGRATION_PLAN.md (100%) rename SUPEROFFICE_MEETING_PREP.md => docs/SUPEROFFICE_MEETING_PREP.md (100%) rename TASK_STATUS_REPORT_2f388f42.md => docs/TASK_STATUS_REPORT_2f388f42.md (100%) rename TASK_STATUS_REPORT_30e88f42.md => docs/TASK_STATUS_REPORT_30e88f42.md (100%) rename TRANSCRIPTION_TOOL.md => docs/TRANSCRIPTION_TOOL.md (100%) rename UNSUBSCRIBE_FEATURE_SUMMARY.md => docs/UNSUBSCRIBE_FEATURE_SUMMARY.md (100%) rename b2b_marketing_assistant_plan.md => docs/b2b_marketing_assistant_plan.md (100%) rename duckdns_setup.md => docs/duckdns_setup.md (100%) rename gtm_architect_documentation.md => docs/gtm_architect_documentation.md (100%) rename market_intel_backend_plan.md => docs/market_intel_backend_plan.md (100%) rename moltbot_chatgpt.md => docs/moltbot_chatgpt.md (100%) rename notion_integration.md => docs/notion_integration.md (100%) rename planning.md => docs/planning.md (100%) rename tasks.md => docs/tasks.md (100%) rename umzug.md => docs/umzug.md (100%) rename verticals_analysis.md => docs/verticals_analysis.md (100%) delete mode 100644 tmp/test_context.md diff --git a/Generating b/ARCHIVE_vor_migration/Generating similarity index 100% rename from Generating rename to ARCHIVE_vor_migration/Generating diff --git a/google_sheet_handler.txt b/ARCHIVE_vor_migration/google_sheet_handler.txt similarity index 100% rename from google_sheet_handler.txt rename to ARCHIVE_vor_migration/google_sheet_handler.txt diff --git a/alt_roboplanet-gtm-strategy-2026-01-14.md b/b2b-marketing-assistant/docs/alt_roboplanet-gtm-strategy-2026-01-14.md similarity index 100% rename from alt_roboplanet-gtm-strategy-2026-01-14.md rename to b2b-marketing-assistant/docs/alt_roboplanet-gtm-strategy-2026-01-14.md diff --git a/b2b-marketing-analysis_Roboplanet-2.md b/b2b-marketing-assistant/docs/b2b-marketing-analysis_Roboplanet-2.md similarity index 100% rename from b2b-marketing-analysis_Roboplanet-2.md rename to b2b-marketing-assistant/docs/b2b-marketing-analysis_Roboplanet-2.md diff --git a/b2b-marketing-analysis_Roboplanet.md b/b2b-marketing-assistant/docs/b2b-marketing-analysis_Roboplanet.md similarity index 100% rename from b2b-marketing-analysis_Roboplanet.md rename to b2b-marketing-assistant/docs/b2b-marketing-analysis_Roboplanet.md diff --git a/neu_roboplanet-gtm-strategy-2026-01-14.md b/b2b-marketing-assistant/docs/neu_roboplanet-gtm-strategy-2026-01-14.md similarity index 100% rename from neu_roboplanet-gtm-strategy-2026-01-14.md rename to b2b-marketing-assistant/docs/neu_roboplanet-gtm-strategy-2026-01-14.md diff --git a/roboplanet-gtm-strategy-2026-01-03 (1).md b/b2b-marketing-assistant/docs/roboplanet-gtm-strategy-2026-01-03 (1).md similarity index 100% rename from roboplanet-gtm-strategy-2026-01-03 (1).md rename to b2b-marketing-assistant/docs/roboplanet-gtm-strategy-2026-01-03 (1).md diff --git a/roboplanet-gtm-strategy-2026-01-03 (2).md b/b2b-marketing-assistant/docs/roboplanet-gtm-strategy-2026-01-03 (2).md similarity index 100% rename from roboplanet-gtm-strategy-2026-01-03 (2).md rename to b2b-marketing-assistant/docs/roboplanet-gtm-strategy-2026-01-03 (2).md diff --git a/roboplanet-gtm-strategy-2026-01-03.md b/b2b-marketing-assistant/docs/roboplanet-gtm-strategy-2026-01-03.md similarity index 100% rename from roboplanet-gtm-strategy-2026-01-03.md rename to b2b-marketing-assistant/docs/roboplanet-gtm-strategy-2026-01-03.md diff --git a/roboplanet-gtm-strategy-v3.md b/b2b-marketing-assistant/docs/roboplanet-gtm-strategy-v3.md similarity index 100% rename from roboplanet-gtm-strategy-v3.md rename to b2b-marketing-assistant/docs/roboplanet-gtm-strategy-v3.md diff --git a/roboplanet_b2b_analyse.md b/b2b-marketing-assistant/docs/roboplanet_b2b_analyse.md similarity index 100% rename from roboplanet_b2b_analyse.md rename to b2b-marketing-assistant/docs/roboplanet_b2b_analyse.md diff --git a/v3_roboplanet-gtm-strategy-2026-01-20.md b/b2b-marketing-assistant/docs/v3_roboplanet-gtm-strategy-2026-01-20.md similarity index 100% rename from v3_roboplanet-gtm-strategy-2026-01-20.md rename to b2b-marketing-assistant/docs/v3_roboplanet-gtm-strategy-2026-01-20.md diff --git a/v4_roboplanet-gtm-strategy-2026-01-20.md b/b2b-marketing-assistant/docs/v4_roboplanet-gtm-strategy-2026-01-20.md similarity index 100% rename from v4_roboplanet-gtm-strategy-2026-01-20.md rename to b2b-marketing-assistant/docs/v4_roboplanet-gtm-strategy-2026-01-20.md diff --git a/company-explorer/MIGRATION_PLAN.md b/company-explorer/MIGRATION_PLAN.md deleted file mode 100644 index 69f554c9..00000000 --- a/company-explorer/MIGRATION_PLAN.md +++ /dev/null @@ -1,178 +0,0 @@ -# Migrations-Plan: Legacy GSheets -> Company Explorer (Robotics Edition v0.8.5) - -**Kontext:** Neuanfang für die Branche **Robotik & Facility Management**. -**Ziel:** Ablösung von Google Sheets/CLI durch eine Web-App ("Company Explorer") mit SQLite-Backend. - -## 1. Strategische Neuausrichtung - -| Bereich | Alt (Legacy) | Neu (Robotics Edition) | -| :--- | :--- | :--- | -| **Daten-Basis** | Google Sheets | **SQLite** (Lokal, performant, filterbar). | -| **Ziel-Daten** | Allgemein / Kundenservice | **Quantifizierbares Potenzial** (z.B. 4500m² Fläche, 120 Betten). | -| **Branchen** | KI-Vorschlag (Freitext) | **Strict Mode:** Mapping auf definierte Notion-Liste (z.B. "Hotellerie", "Automotive"). | -| **Bewertung** | 0-100 Score (Vage) | **Data-Driven:** Rohwert (Scraper/Search) -> Standardisierung (Formel) -> Potenzial. | -| **Analytics** | Techniker-ML-Modell | **Deaktiviert**. Fokus auf harte Fakten. | -| **Operations** | D365 Sync (Broken) | **Excel-Import & Deduplizierung**. Fokus auf Matching externer Listen gegen Bestand. | - -## 2. Architektur & Komponenten-Mapping - -Das System wird in `company-explorer/` neu aufgebaut. Wir lösen Abhängigkeiten zur Root `helpers.py` auf. - -### A. Core Backend (`backend/`) - -| Komponente | Aufgabe & Neue Logik | Prio | -| :--- | :--- | :--- | -| **Database** | Ersetzt `GoogleSheetHandler`. Speichert Firmen & "Enrichment Blobs". | 1 | -| **Importer** | Ersetzt `SyncManager`. Importiert Excel-Dumps (CRM) und Event-Listen. | 1 | -| **Deduplicator** | Ersetzt `company_deduplicator.py`. **Kern-Feature:** Checkt Event-Listen gegen DB. Muss "intelligent" matchen (Name + Ort + Web). | 1 | -| **Scraper (Base)** | Extrahiert Text von Websites. Basis für alle Analysen. | 1 | -| **Classification Service** | **NEU (v0.7.0).** Zweistufige Logik:
1. Strict Industry Classification.
2. Metric Extraction Cascade (Web -> Wiki -> SerpAPI). | 1 | -| **Marketing Engine** | Ersetzt `generate_marketing_text.py`. Nutzt neue `marketing_wissen_robotics.yaml`. | 3 | - -**Identifizierte Hauptdatei:** `company-explorer/backend/app.py` - -### B. Frontend (`frontend/`) - React - -* **View 1: Der "Explorer":** DataGrid aller Firmen. Filterbar nach "Roboter-Potential" und Status. -* **View 2: Der "Inspector":** Detailansicht einer Firma. Zeigt gefundene Signale ("Hat SPA Bereich"). Manuelle Korrektur-Möglichkeit. - * **Identifizierte Komponente:** `company-explorer/frontend/src/components/Inspector.tsx` -* **View 3: "List Matcher":** Upload einer Excel-Liste -> Anzeige von Duplikaten -> Button "Neue importieren". -* **View 4: "Settings":** Konfiguration von Branchen, Rollen und Robotik-Logik. - * **Frontend "Settings" Komponente:** `company-explorer/frontend/src/components/RoboticsSettings.tsx` - -### C. Architekturmuster für die Client-Integration - -Um externen Diensten (wie der `lead-engine`) eine einfache und robuste Anbindung an den `company-explorer` zu ermöglichen, wurde ein standardisiertes Client-Connector-Muster implementiert. - -| Komponente | Aufgabe & Neue Logik | -| :--- | :--- | -| **`company_explorer_connector.py`** | **NEU:** Ein zentrales Python-Skript, das als "offizieller" Client-Wrapper für die API des Company Explorers dient. Es kapselt die Komplexität der asynchronen Enrichment-Prozesse. | -| **`handle_company_workflow()`** | Die Kernfunktion des Connectors. Sie implementiert den vollständigen "Find-or-Create-and-Enrich"-Workflow:
1. **Prüfen:** Stellt fest, ob ein Unternehmen bereits existiert.
2. **Erstellen:** Legt das Unternehmen an, falls es neu ist.
3. **Anstoßen:** Startet den asynchronen `discover`-Prozess.
4. **Warten (Polling):** Überwacht den Status des Unternehmens, bis eine Website gefunden wurde.
5. **Analysieren:** Startet den asynchronen `analyze`-Prozess.
**Vorteil:** Bietet dem aufrufenden Dienst eine einfache, quasi-synchrone Schnittstelle und stellt sicher, dass die Prozessschritte in der korrekten Reihenfolge ausgeführt werden. | - -### D. Provisioning API (Internal) - -Für die nahtlose Integration mit dem SuperOffice Connector wurde ein dedizierter Endpunkt geschaffen: - -| Endpunkt | Methode | Zweck | -| :--- | :--- | :--- | -| `/api/provision/superoffice-contact` | POST | Liefert "Enrichment-Pakete" (Texte, Status) für einen gegebenen CRM-Kontakt. Greift auf `MarketingMatrix` zu. | - -## 3. Umgang mit Shared Code (`helpers.py` & Co.) - -Wir kapseln das neue Projekt vollständig ab ("Fork & Clean"). - -* **Quelle:** `helpers.py` (Root) -* **Ziel:** `company-explorer/backend/lib/core_utils.py` -* **Aktion:** Wir kopieren nur relevante Teile und ergänzen sie (z.B. `safe_eval_math`, `run_serp_search`). - -## 4. Datenstruktur (SQLite Schema) - -### Tabelle `companies` (Stammdaten & Analyse) -* `id` (PK) -* `name` (String) -* `website` (String) -* `crm_id` (String, nullable - Link zum D365) -* `industry_crm` (String - Die "erlaubte" Branche aus Notion) -* `city` (String) -* `country` (String - Standard: "DE" oder aus Impressum) -* `status` (Enum: NEW, IMPORTED, ENRICHED, QUALIFIED) -* **NEU (v0.7.0):** - * `calculated_metric_name` (String - z.B. "Anzahl Betten") - * `calculated_metric_value` (Float - z.B. 180) - * `calculated_metric_unit` (String - z.B. "Betten") - * `standardized_metric_value` (Float - z.B. 4500) - * `standardized_metric_unit` (String - z.B. "m²") - * `metric_source` (String - "website", "wikipedia", "serpapi") - -### Tabelle `signals` (Deprecated) -* *Veraltet ab v0.7.0. Wird durch quantitative Metriken in `companies` ersetzt.* - -### Tabelle `contacts` (Ansprechpartner) -* `id` (PK) -* `account_id` (FK -> companies.id) -* `gender`, `title`, `first_name`, `last_name`, `email` -* `job_title` (Visitenkarte) -* `role` (Standardisierte Rolle: "Operativer Entscheider", etc.) -* `status` (Marketing Status) - -### Tabelle `industries` (Branchen-Fokus - Synced from Notion) -* `id` (PK) -* `notion_id` (String, Unique) -* `name` (String - "Vertical" in Notion) -* `description` (Text - "Definition" in Notion) -* `metric_type` (String - "Metric Type") -* `min_requirement` (Float - "Min. Requirement") -* `whale_threshold` (Float - "Whale Threshold") -* `proxy_factor` (Float - "Proxy Factor") -* `scraper_search_term` (String - "Scraper Search Term") -* `scraper_keywords` (Text - "Scraper Keywords") -* `standardization_logic` (String - "Standardization Logic") - -### Tabelle `job_role_mappings` (Rollen-Logik) -* `id` (PK) -* `pattern` (String - Regex für Jobtitles) -* `role` (String - Zielrolle) - -### Tabelle `marketing_matrix` (NEU v2.1) -* **Zweck:** Speichert statische, genehmigte Marketing-Texte (Notion Sync). -* `id` (PK) -* `industry_id` (FK -> industries.id) -* `role_id` (FK -> job_role_mappings.id) -* `subject` (Text) -* `intro` (Text) -* `social_proof` (Text) - -## 7. Historie & Fixes (Jan 2026) - - * **[CRITICAL] v0.7.4: Service Restoration & Logic Fix (Jan 24, 2026)** - * **[STABILITY] v0.7.3: Hardening Metric Parser & Regression Testing (Jan 23, 2026)** - * **[STABILITY] v0.7.2: Robust Metric Parsing (Jan 23, 2026)** - * **[STABILITY] v0.7.1: AI Robustness & UI Fixes (Jan 21, 2026)** - * **[MAJOR] v0.7.0: Quantitative Potential Analysis (Jan 20, 2026)** - * **[UPGRADE] v0.6.x: Notion Integration & UI Improvements** - -## 14. Upgrade v2.0 (Feb 18, 2026): "Lead-Fabrik" Erweiterung - -Dieses Upgrade transformiert den Company Explorer in das zentrale Gehirn der Lead-Generierung (Vorratskammer). - -### 14.1 Detaillierte Logik der neuen Datenfelder - -Um Gemini CLI (dem Bautrupp) die Umsetzung zu ermöglichen, hier die semantische Bedeutung der neuen Spalten: - -#### Tabelle `companies` (Qualitäts- & Abgleich-Metriken) - -* **`confidence_score` (FLOAT, 0.0 - 1.0):** Indikator für die Sicherheit der KI-Klassifizierung. `> 0.8` = Grün. -* **`data_mismatch_score` (FLOAT, 0.0 - 1.0):** Abweichung zwischen CRM-Bestand und Web-Recherche (z.B. Umzug). -* **`crm_name`, `crm_address`, `crm_website`, `crm_vat`:** Read-Only Snapshot aus SuperOffice zum Vergleich. -* **Status-Flags:** `website_scrape_status` und `wiki_search_status`. - -#### Tabelle `industries` (Strategie-Parameter) - -* **`pains` / `gains`:** Strukturierte Textblöcke (getrennt durch `[Primary Product]` und `[Secondary Product]`). -* **`ops_focus_secondary` (BOOLEAN):** Steuerung für rollenspezifische Produkt-Priorisierung. - ---- - -## 15. Offene Arbeitspakete (Bauleitung) - -Anweisungen für den "Bautrupp" (Gemini CLI). - -### Task 1: UI-Anpassung - Side-by-Side CRM View & Settings -(In Arbeit / Teilweise erledigt durch Gemini CLI) - -### Task 2: Intelligenter CRM-Importer (Bestandsdaten) - -**Ziel:** Importieren der `demo_100.xlsx` in die SQLite-Datenbank. - -**Anforderungen:** -1. **PLZ-Handling:** Zwingend als **String** einlesen (führende Nullen erhalten). -2. **Normalisierung:** Website bereinigen (kein `www.`, `https://`). -3. **Matching:** Kaskade über CRM-ID, VAT, Domain, Fuzzy Name. -4. **Isolierung:** Nur `crm_` Spalten updaten, Golden Records unberührt lassen. - ---- - -## 16. Deployment-Referenz (NAS) -* **Pfad:** `/volume1/homes/Floke/python/brancheneinstufung/company-explorer` -* **DB:** `/app/companies_v3_fixed_2.db` -* **Sync:** `docker exec -it company-explorer python backend/scripts/sync_notion_to_ce_enhanced.py` diff --git a/Puma_m20_2026-01-08.md b/company-explorer/docs/Puma_m20_2026-01-08.md similarity index 100% rename from Puma_m20_2026-01-08.md rename to company-explorer/docs/Puma_m20_2026-01-08.md diff --git a/Supplyon.md b/company-explorer/docs/Supplyon.md similarity index 100% rename from Supplyon.md rename to company-explorer/docs/Supplyon.md diff --git a/case_study_djh_waldbröl.md b/company-explorer/docs/case_study_djh_waldbröl.md similarity index 100% rename from case_study_djh_waldbröl.md rename to company-explorer/docs/case_study_djh_waldbröl.md diff --git a/yamaichi_lokal.md b/company-explorer/docs/yamaichi_lokal.md similarity index 100% rename from yamaichi_lokal.md rename to company-explorer/docs/yamaichi_lokal.md diff --git a/yamaichi_neu.md b/company-explorer/docs/yamaichi_neu.md similarity index 100% rename from yamaichi_neu.md rename to company-explorer/docs/yamaichi_neu.md diff --git a/docker-compose.yml b/docker-compose.yml index d15588e3..25ea5172 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,44 +22,7 @@ services: depends_on: - company-explorer - dashboard - - b2b-app - - market-frontend - - gtm-app - - transcription-app - - content-app - - competitor-analysis - - heatmap-frontend - - # --- HEATMAP --- - heatmap-backend: - build: ./heatmap-tool/backend - container_name: heatmap-backend - restart: unless-stopped - volumes: - - ./heatmap-tool/backend:/app - - heatmap-frontend: - build: ./heatmap-tool/frontend - container_name: heatmap-frontend - restart: unless-stopped - volumes: - - ./heatmap-tool/frontend:/app - depends_on: - - heatmap-backend - - - # --- AGENT (moltbot) --- - # moltbot: # Moltbot ist oft auskommentiert, um Port-Konflikte zu vermeiden, da der Agent oft separat läuft. - # build: - # context: . - # dockerfile: Dockerfile.moltbot - # container_name: moltbot - # restart: unless-stopped - # ports: - # - "18789:18789" - # command: /app/packages/clawdbot/node_modules/.bin/clawdbot gateway --port 18789 --allow-unconfigured - # volumes: - # - moltbot_data:/home/node/.clawd + - connector-superoffice # --- DASHBOARD --- dashboard: @@ -69,7 +32,7 @@ services: volumes: - ./dashboard:/usr/share/nginx/html:ro - # --- APPS --- + # --- APPS (Core) --- company-explorer: build: context: ./company-explorer @@ -85,143 +48,9 @@ services: API_PASSWORD: "gemini" PYTHONUNBUFFERED: "1" volumes: - - ./company-explorer:/app - ./companies_v3_fixed_2.db:/app/companies_v3_fixed_2.db - - ./gemini_api_key.txt:/app/gemini_api_key.txt - - ./serpapikey.txt:/app/serpapikey.txt - - ./notion_token.txt:/app/notion_token.txt - - ./Log_from_docker:/app/logs_debug - - transcription-app: - build: - context: ./transcription-tool - dockerfile: Dockerfile - container_name: transcription-app - restart: unless-stopped - volumes: - - ./transcription-tool/backend:/app/backend - - ./transcription-tool/frontend/dist:/app/frontend/dist # Mount Frontend Build for Live Updates - - ./transcripts.db:/app/transcripts.db - - ./uploads_audio:/app/uploads_audio - - ./gemini_api_key.txt:/app/gemini_api_key.txt - environment: - PYTHONUNBUFFERED: "1" - DATABASE_URL: "sqlite:////app/transcripts.db" - ports: - - "8001:8001" - - b2b-app: - build: - context: . - dockerfile: Dockerfile.b2b - container_name: b2b-assistant - restart: unless-stopped - volumes: - - ./b2b_marketing_orchestrator.py:/app/b2b_marketing_orchestrator.py - - ./market_db_manager.py:/app/market_db_manager.py - - ./b2b-marketing-assistant/server.cjs:/app/server.cjs - - ./b2b_projects.db:/app/b2b_projects.db - - ./Log_from_docker:/app/Log_from_docker - - ./gemini_api_key.txt:/app/gemini_api_key.txt - environment: - PYTHONUNBUFFERED: "1" - DB_PATH: "/app/b2b_projects.db" - # Port 3002 is internal only - - market-backend: - build: - context: . - dockerfile: Dockerfile.market - container_name: market-backend - restart: unless-stopped - volumes: - - ./market_intel_orchestrator.py:/app/market_intel_orchestrator.py - - ./market_db_manager.py:/app/market_db_manager.py - - ./config.py:/app/config.py - - ./helpers.py:/app/helpers.py - - ./general-market-intelligence/server.cjs:/app/general-market-intelligence/server.cjs - - ./market_intelligence.db:/app/market_intelligence.db - - ./Log:/app/Log - - ./gemini_api_key.txt:/app/gemini_api_key.txt - - ./serpapikey.txt:/app/serpapikey.txt - environment: - PYTHONUNBUFFERED: "1" - DB_PATH: "/app/market_intelligence.db" - # Port 3001 is internal only - - market-frontend: - build: - context: ./general-market-intelligence - dockerfile: Dockerfile - container_name: market-frontend - restart: unless-stopped - depends_on: - - market-backend - # Port 80 is internal only - - gtm-app: - build: - context: . - dockerfile: gtm-architect/Dockerfile - container_name: gtm-app - restart: unless-stopped - volumes: - - ./gtm-architect:/app/gtm-architect - - ./gtm-architect/server.cjs:/app/server.cjs - - ./gtm_architect_orchestrator.py:/app/gtm_architect_orchestrator.py - - ./helpers.py:/app/helpers.py - - ./config.py:/app/config.py - - ./gtm_db_manager.py:/app/gtm_db_manager.py - - ./gtm_projects.db:/app/gtm_projects.db - - ./Log_from_docker:/app/Log_from_docker - - ./gemini_api_key.txt:/app/gemini_api_key.txt - - ./serpapikey.txt:/app/serpapikey.txt - environment: - PYTHONUNBUFFERED: "1" - DB_PATH: "/app/gtm_projects.db" - # Port 3005 is internal only - - content-app: - build: - context: . - dockerfile: content-engine/Dockerfile - container_name: content-app - restart: unless-stopped - volumes: - - ./content-engine:/app/content-engine - - ./content-engine/server.cjs:/app/server.cjs - - ./content-engine/content_orchestrator.py:/app/content_orchestrator.py - - ./content-engine/content_db_manager.py:/app/content_db_manager.py - - ./content_engine.db:/app/content_engine.db - - ./helpers.py:/app/helpers.py - - ./config.py:/app/config.py - - ./gtm_projects.db:/app/gtm_projects.db - - ./Log_from_docker:/app/Log_from_docker - - ./gemini_api_key.txt:/app/gemini_api_key.txt - - ./serpapikey.txt:/app/serpapikey.txt - environment: - PYTHONUNBUFFERED: "1" - DB_PATH: "/app/content_engine.db" - GTM_DB_PATH: "/app/gtm_projects.db" - - competitor-analysis: - build: - context: ./competitor-analysis-app - dockerfile: Dockerfile - container_name: competitor-analysis - restart: unless-stopped - dns: - - 8.8.8.8 - - 8.8.4.4 - volumes: - - ./competitor-analysis-app/competitor_analysis_orchestrator.py:/app/competitor_analysis_orchestrator.py - - ./gemini_api_key.txt:/app/gemini_api_key.txt - - ./Log_from_docker:/app/Log_from_docker - environment: - PYTHONUNBUFFERED: "1" - GEMINI_API_KEY_FILE: "/app/gemini_api_key.txt" - # Port 8000 is internal only + - ./Log_from_docker:/app/logs_debug # Ensure logging path is correct connector-superoffice: build: @@ -235,7 +64,6 @@ services: - .env volumes: - ./connector-superoffice:/app - - ./gemini_api_key.txt:/app/gemini_api_key.txt - ./connector_queue.db:/app/connector_queue.db environment: PYTHONUNBUFFERED: "1" @@ -244,57 +72,5 @@ services: DB_PATH: "/app/connector_queue.db" COMPANY_EXPLORER_URL: "http://company-explorer:8000" - lead-engine: - build: - context: ./lead-engine - dockerfile: Dockerfile - container_name: lead-engine - restart: unless-stopped - ports: - - "8501:8501" - - "8004:8004" - env_file: - - .env - environment: - PYTHONUNBUFFERED: "1" - COMPANY_EXPLORER_URL: "http://company-explorer:8000" - # Explicitly pass keys to ensure availability - SERP_API: "${SERP_API}" - GEMINI_API_KEY: "${GEMINI_API_KEY}" - # Calendar App Credentials - CAL_APPID: "${CAL_APPID}" - CAL_SECRET: "${CAL_SECRET}" - CAL_TENNANT_ID: "${CAL_TENNANT_ID}" - volumes: - - ./lead-engine:/app - # We need to mount the root connector module so it can be imported inside the container - - ./company_explorer_connector.py:/app/company_explorer_connector.py - - # --- INFRASTRUCTURE SERVICES --- - duckdns: - image: lscr.io/linuxserver/duckdns:latest - container_name: duckdns - environment: - PUID: "1000" # User ID (anpassen falls nötig) - PGID: "1000" # Group ID (anpassen falls nötig) - TZ: "Europe/Berlin" - SUBDOMAINS: "floke,floke-ai,floke-gitea,floke-ha,floke-n8n" - TOKEN: "2e073b27-971e-4847-988c-73ad23e648d4" # Actual token is in .env or config - restart: unless-stopped - - dns-monitor: - image: alpine - container_name: dns-monitor - dns: - - 8.8.8.8 - - 1.1.1.1 - environment: - SUBDOMAINS: "floke,floke-ai,floke-gitea,floke-ha,floke-n8n" - TZ: "Europe/Berlin" - volumes: - - ./dns-monitor:/app - command: "/app/monitor.sh" - restart: unless-stopped - volumes: - moltbot_data: {} # Volume for moltbot data, even if service is commented out. \ No newline at end of file + # No custom volumes needed for the streamlined setup \ No newline at end of file diff --git a/ANALYSIS_AND_PROPOSAL.md b/docs/ANALYSIS_AND_PROPOSAL.md similarity index 100% rename from ANALYSIS_AND_PROPOSAL.md rename to docs/ANALYSIS_AND_PROPOSAL.md diff --git a/ANALYSIS_PHASE_2_ONLY.md b/docs/ANALYSIS_PHASE_2_ONLY.md similarity index 100% rename from ANALYSIS_PHASE_2_ONLY.md rename to docs/ANALYSIS_PHASE_2_ONLY.md diff --git a/ANFORDERUNGEN_IT_OAUTH.md b/docs/ANFORDERUNGEN_IT_OAUTH.md similarity index 100% rename from ANFORDERUNGEN_IT_OAUTH.md rename to docs/ANFORDERUNGEN_IT_OAUTH.md diff --git a/ARCHITEKTUR_GCP_SETUP.md b/docs/ARCHITEKTUR_GCP_SETUP.md similarity index 100% rename from ARCHITEKTUR_GCP_SETUP.md rename to docs/ARCHITEKTUR_GCP_SETUP.md diff --git a/BUILDER_APPS_MIGRATION.md b/docs/BUILDER_APPS_MIGRATION.md similarity index 100% rename from BUILDER_APPS_MIGRATION.md rename to docs/BUILDER_APPS_MIGRATION.md diff --git a/Direktive_Zusammenarbeit.md b/docs/Direktive_Zusammenarbeit.md similarity index 100% rename from Direktive_Zusammenarbeit.md rename to docs/Direktive_Zusammenarbeit.md diff --git a/KONVER_STRATEGY.md b/docs/KONVER_STRATEGY.md similarity index 100% rename from KONVER_STRATEGY.md rename to docs/KONVER_STRATEGY.md diff --git a/MIGRATION_PLAN.md b/docs/MIGRATION_PLAN.md similarity index 100% rename from MIGRATION_PLAN.md rename to docs/MIGRATION_PLAN.md diff --git a/MIGRATION_REPORT_COMPETITOR_ANALYSIS.md b/docs/MIGRATION_REPORT_COMPETITOR_ANALYSIS.md similarity index 100% rename from MIGRATION_REPORT_COMPETITOR_ANALYSIS.md rename to docs/MIGRATION_REPORT_COMPETITOR_ANALYSIS.md diff --git a/MOLTBOT_SYNOLOGY_GUIDE.md b/docs/MOLTBOT_SYNOLOGY_GUIDE.md similarity index 100% rename from MOLTBOT_SYNOLOGY_GUIDE.md rename to docs/MOLTBOT_SYNOLOGY_GUIDE.md diff --git a/NOTION_TASK_SUMMARY.md b/docs/NOTION_TASK_SUMMARY.md similarity index 100% rename from NOTION_TASK_SUMMARY.md rename to docs/NOTION_TASK_SUMMARY.md diff --git a/Notion_Dashboard.md b/docs/Notion_Dashboard.md similarity index 100% rename from Notion_Dashboard.md rename to docs/Notion_Dashboard.md diff --git a/README_dev_session.md b/docs/README_dev_session.md similarity index 100% rename from README_dev_session.md rename to docs/README_dev_session.md diff --git a/SKILL_TASK_MANAGER.md b/docs/SKILL_TASK_MANAGER.md similarity index 100% rename from SKILL_TASK_MANAGER.md rename to docs/SKILL_TASK_MANAGER.md diff --git a/SUPEROFFICE_INTEGRATION_PLAN.md b/docs/SUPEROFFICE_INTEGRATION_PLAN.md similarity index 100% rename from SUPEROFFICE_INTEGRATION_PLAN.md rename to docs/SUPEROFFICE_INTEGRATION_PLAN.md diff --git a/SUPEROFFICE_MEETING_PREP.md b/docs/SUPEROFFICE_MEETING_PREP.md similarity index 100% rename from SUPEROFFICE_MEETING_PREP.md rename to docs/SUPEROFFICE_MEETING_PREP.md diff --git a/TASK_STATUS_REPORT_2f388f42.md b/docs/TASK_STATUS_REPORT_2f388f42.md similarity index 100% rename from TASK_STATUS_REPORT_2f388f42.md rename to docs/TASK_STATUS_REPORT_2f388f42.md diff --git a/TASK_STATUS_REPORT_30e88f42.md b/docs/TASK_STATUS_REPORT_30e88f42.md similarity index 100% rename from TASK_STATUS_REPORT_30e88f42.md rename to docs/TASK_STATUS_REPORT_30e88f42.md diff --git a/TRANSCRIPTION_TOOL.md b/docs/TRANSCRIPTION_TOOL.md similarity index 100% rename from TRANSCRIPTION_TOOL.md rename to docs/TRANSCRIPTION_TOOL.md diff --git a/UNSUBSCRIBE_FEATURE_SUMMARY.md b/docs/UNSUBSCRIBE_FEATURE_SUMMARY.md similarity index 100% rename from UNSUBSCRIBE_FEATURE_SUMMARY.md rename to docs/UNSUBSCRIBE_FEATURE_SUMMARY.md diff --git a/b2b_marketing_assistant_plan.md b/docs/b2b_marketing_assistant_plan.md similarity index 100% rename from b2b_marketing_assistant_plan.md rename to docs/b2b_marketing_assistant_plan.md diff --git a/duckdns_setup.md b/docs/duckdns_setup.md similarity index 100% rename from duckdns_setup.md rename to docs/duckdns_setup.md diff --git a/gtm_architect_documentation.md b/docs/gtm_architect_documentation.md similarity index 100% rename from gtm_architect_documentation.md rename to docs/gtm_architect_documentation.md diff --git a/market_intel_backend_plan.md b/docs/market_intel_backend_plan.md similarity index 100% rename from market_intel_backend_plan.md rename to docs/market_intel_backend_plan.md diff --git a/moltbot_chatgpt.md b/docs/moltbot_chatgpt.md similarity index 100% rename from moltbot_chatgpt.md rename to docs/moltbot_chatgpt.md diff --git a/notion_integration.md b/docs/notion_integration.md similarity index 100% rename from notion_integration.md rename to docs/notion_integration.md diff --git a/planning.md b/docs/planning.md similarity index 100% rename from planning.md rename to docs/planning.md diff --git a/tasks.md b/docs/tasks.md similarity index 100% rename from tasks.md rename to docs/tasks.md diff --git a/umzug.md b/docs/umzug.md similarity index 100% rename from umzug.md rename to docs/umzug.md diff --git a/verticals_analysis.md b/docs/verticals_analysis.md similarity index 100% rename from verticals_analysis.md rename to docs/verticals_analysis.md diff --git a/readme.md b/readme.md index 0623bacc..c014e552 100644 --- a/readme.md +++ b/readme.md @@ -23,6 +23,8 @@ gitea: none ## 📑 Projekt-Übersicht (Readmes) +Für eine umfassende Übersicht über allgemeine Projektdokumente, Architektur und Entwicklungsrichtlinien, konsultieren Sie bitte den `docs/`-Ordner. + | Modul / Projekt | Verzeichnis | Beschreibung | | :--- | :--- | :--- | | **SuperOffice Connector** | [📂 `./connector-superoffice`](./connector-superoffice/README.md) | GTM Engine & SuperOffice CRM Integration ("The Muscle"). | diff --git a/tmp/test_context.md b/tmp/test_context.md deleted file mode 100644 index 0c6290d7..00000000 --- a/tmp/test_context.md +++ /dev/null @@ -1,21 +0,0 @@ -## Schritt 1: Zieldefinition - -Unsere Lösung hilft Unternehmen, komplexe Service- und Wartungsprozesse für technische Geräte zu digitalisieren. Wir bieten eine mobile App für Techniker und ein zentrales Dashboard für Disponenten. - -## Schritt 2: Zielmarkt & ICP - -| Kriterium | Beschreibung | -| :--- | :--- | -| **Zielbranche** | Maschinenbau, Anlagenbau, Medizintechnik | -| **Unternehmensgröße**| 100-2.000 Mitarbeiter | -| **Regionale Märkte** | Deutschland, Österreich, Schweiz (DACH) | - -## Schritt 3: Schmerzpunkte & Wertversprechen - -- **Schmerzpunkt:** Ineffiziente, papierbasierte Einsatzplanung. -- **Wertversprechen:** 30% schnellere Auftragsabwicklung durch digitale Tourenplanung. - -## Schritt 4: Go-to-Market Strategie - -- **Marketing-Kanäle:** LinkedIn Outreach, Fachmessen. -- **Vertriebsansatz:** Account-Based Selling, Fokus auf technische Leiter (CTOs).