# Migrations-Plan: Legacy GSheets -> Company Explorer (Robotics Edition v0.8.5) **Kontext:** Strategische Neuausrichtung der Lead-Analyse für RoboPlanet. **Zentrale Philosophie:** Trennung von CRM-Historie ("Was wir wissen") und KI-Recherche ("Was aktuell wahr ist"). ## 14. Detaillierte Logik der neuen Datenfelder (v2.0) Um Gemini CLI (dem Bautrupp) die Umsetzung zu ermöglichen, hier die semantische Bedeutung und Implementierungs-Logik der neuen Spalten: ### 14.1 Qualitäts- & Abgleich-Metriken (Tabelle `companies`) * **`confidence_score` (FLOAT, 0.0 - 1.0):** * **Bedeutung:** Vertrauensindex der KI-Klassifizierung. * **UI-Logik:** * `>= 0.8`: Status "Grün". Vertrauenswürdige Daten. * `0.5 - 0.79`: Status "Gelb". Erfordert manuellen Check (Review). * `< 0.5`: Status "Rot". KI-Ergebnis unsicher. * **Hintergrund:** Verhindert, dass Sniper-Texte auf Basis falscher Branchen-Zuordnungen generiert werden. * **`data_mismatch_score` (FLOAT, 0.0 - 1.0):** * **Bedeutung:** Metrik für die Abweichung zwischen SuperOffice-Bestand und Web-Recherche. * **Rechenweg:** Die KI vergleicht Name, Adresse und Website. * `0.0`: Identisch (Voll-Treffer). * `0.5`: Teil-Mismatch (z.B. Firma heißt im Web leicht anders oder ist innerhalb der Stadt umgezogen). * `1.0`: Voller Mismatch (Zwei komplett verschiedene Firmen). * **UI-Ziel:** Im Inspector soll bei Werten `> 0.3` eine Warnung erscheinen: *"Achtung: Stammdaten weichen von Recherche ab!"* * **`crm_name`, `crm_address`, `crm_website`, `crm_vat`:** * **Zweck:** Read-Only Snapshot aus SuperOffice. * **Wichtig:** Diese Felder werden nie durch die Web-Recherche überschrieben. Sie dienen dem Side-by-Side Vergleich. * **Status-Flags:** * **`website_scrape_status`**: Zeigt an, ob die Firmenwebsite erfolgreich ausgelesen wurde (`SUCCESS`, `FAILED`, `BLOCKED`). * **`wiki_search_status`**: Dokumentiert, ob ein Wikipedia-Eintrag gefunden wurde (`FOUND`, `NOT_FOUND`). ### 14.2 Strategie-Parameter (Tabelle `industries`) * **`pains` / `gains`:** * Enthalten formatierte Textblöcke. * **Struktur:** `[Primary Product: Cleaning]` `- Pain A` `- Pain B` `[Secondary Product: Service]` `- Pain C` * **Anforderung:** Das Frontend muss diese Blöcke sauber formatiert (whitespace-aware) anzeigen. * **`ops_focus_secondary` (BOOLEAN):** * **Strategischer Hebel:** Wenn auf `True` gesetzt, muss die Lead-Engine für operative Rollen (z.B. "Pflegedienstleitung") automatisch das Sekundärprodukt wählen, da hier der "Teller-Transport" wichtiger ist als die "Bodenreinigung". --- ## 15. Anweisungen für Gemini CLI (Arbeitspakete) ### Task 1: UI-Implementierung "Data Match & Strategy" **1. Inspector.tsx (Account Detail):** * Implementiere eine `CRMComparisonCard`. * Vergleiche `crm_name` vs `name` und `crm_website` vs `website`. * Visualisiere den `data_mismatch_score` als Ampel oder Score-Balken. * **Fix:** Korrigiere den Aufruf der `ContactsManager` Komponente (erwartet `contacts` Array). **2. RoboticsSettings.tsx (Settings):** * Erweitere die `Industries`-Tabelle um die Spalten `Pains`, `Gains`, `Priorität` und `Secondary Product`. * Ermögliche das Ein-/Auskappen von langen Pain-Texten zur besseren Übersicht. --- ## 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`