7.5 KiB
Migrations-Plan: Legacy GSheets -> Company Explorer (Robotics Edition v0.4.0)
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 | Robotics-Signale (SPA-Bereich? Intralogistik? Werkschutz?). |
| Branchen | KI-Vorschlag (Freitext) | Strict Mode: Mapping auf feste CRM-Liste (z.B. "Hotellerie", "Maschinenbau"). |
| Texterstellung | Pain/Gain Matrix (Service) | Pain/Gain Matrix (Robotics). "Übersetzung" des alten Wissens auf Roboter. |
| Analytics | Techniker-ML-Modell | Deaktiviert. Vorerst keine Relevanz. |
| 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 |
| Signal Detector | NEU. Analysiert Website-Text auf Roboter-Potential. Logik: Wenn Branche = Hotel & Keyword = "Wellness" -> Potential: Reinigungsroboter. |
1 |
| Classifier | Brancheneinstufung. Strict Mode: Prüft gegen config/allowed_industries.json. |
2 |
| Marketing Engine | Ersetzt generate_marketing_text.py. Nutzt neue marketing_wissen_robotics.yaml. |
3 |
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.
- View 3: "List Matcher": Upload einer Excel-Liste -> Anzeige von Duplikaten -> Button "Neue importieren".
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:
- OpenAI/Gemini Wrapper (Retry Logic).
- Text Cleaning (
clean_text,normalize_string). - URL Normalization.
-
Quelle: Andere Gemini Apps (
duckdns,gtm-architect,market-intel) -
Aktion: Wir betrachten diese als Referenz. Nützliche Logik (z.B. die "Grit"-Prompts aus
market-intel) wird explizit in die neuen Service-Module kopiert.
4. Datenstruktur (SQLite Schema)
Tabelle companies (Stammdaten)
id(PK)name(String)website(String)crm_id(String, nullable - Link zum D365)industry_crm(String - Die "erlaubte" Branche)city(String)country(String)status(Enum: NEW, IMPORTED, ENRICHED, QUALIFIED)
Tabelle signals (Roboter-Potential)
company_id(FK)signal_type(z.B. "has_spa", "has_large_warehouse", "has_security_needs")confidence(Float)proof_text(Snippet von der Website)
Tabelle duplicates_log
- Speichert Ergebnisse von Listen-Abgleichen ("Upload X enthielt 20 bekannte Firmen").
5. Phasenplan Umsetzung
- Housekeeping: Archivierung des Legacy-Codes (
_legacy_gsheets_system). - Setup: Init
company-explorer(Backend + Frontend Skeleton). - Foundation: DB-Schema + "List Matcher" (Deduplizierung ist Prio A für Operations).
- Enrichment: Implementierung des Scrapers + Signal Detector (Robotics).
- UI: React Interface für die Daten.
7. Historie & Fixes (Jan 2026)
-
[UPGRADE] v0.4.0: Export & Manual Impressum
- JSON Export: Erweiterung der Detailansicht um einen "Export JSON"-Button, der alle Unternehmensdaten (inkl. Anreicherungen und Signale) herunterlädt.
- Zeitstempel: Anzeige des Erstellungsdatums für jeden Anreicherungsdatensatz (Wikipedia, AI Dossier, Impressum) in der Detailansicht.
- Manuelle Impressum-URL: Möglichkeit zur manuellen Eingabe einer Impressum-URL in der Detailansicht, um die Extraktion von Firmendaten zu erzwingen.
- Frontend-Fix: Behebung eines Build-Fehlers (
Unexpected token) inInspector.tsxdurch Entfernung eines duplizierten JSX-Blocks.
-
[UPGRADE] v2.6.2: Report Completeness & Edit Mode
- Edit Hard Facts: Neue Funktion in Phase 1 ("Edit Raw Data") erlaubt die manuelle Korrektur der extrahierten technischen JSON-Daten.
- Report-Update: Phase 5 Prompt wurde angepasst, um explizit die Ergebnisse aus Phase 2 (ICPs & Data Proxies) im finalen Report aufzuführen.
- Backend-Fix: Korrektur eines Fehlers beim Speichern von JSON-Daten, der auftrat, wenn Datenbank-Inhalte als Strings vorlagen.
-
[UPGRADE] v2.6.1: Stability & UI Improvements
- White Screen Fix: Robuste Absicherung des Frontends gegen
undefined-Werte beim Laden älterer Sitzungen (optional chaining). - Session Browser: Komplettes Redesign der Sitzungsübersicht zu einer übersichtlichen Listenansicht mit Icons (Reinigung/Service/Transport/Security).
- URL-Anzeige: Die Quell-URL wird nun als dedizierter Link angezeigt und das Projekt automatisch basierend auf dem erkannten Produktnamen umbenannt.
- White Screen Fix: Robuste Absicherung des Frontends gegen
-
[UPGRADE] v2.6: Rich Session Browser
- Neues UI: Die textbasierte Liste für "Letzte Sitzungen" wurde durch eine dedizierte, kartenbasierte UI (
SessionBrowser.tsx) ersetzt. - Angereicherte Daten: Jede Sitzungskarte zeigt nun den Produktnamen, die Produktkategorie (mit Icon), eine Kurzbeschreibung und einen Thumbnail-Platzhalter an.
- Backend-Anpassung: Die Datenbankabfrage (
gtm_db_manager.py) wurde erweitert, um diese Metadaten direkt aus der JSON-Spalte zu extrahieren und an das Frontend zu liefern. - Verbesserte UX: Deutlich verbesserte Übersichtlichkeit und schnellere Identifikation von vergangenen Analysen.
- Neues UI: Die textbasierte Liste für "Letzte Sitzungen" wurde durch eine dedizierte, kartenbasierte UI (
-
[UPGRADE] v2.5: Hard Fact Extraction
- Phase 1 Erweiterung: Implementierung eines sekundären Extraktions-Schritts für "Hard Facts" (Specs).
- Strukturiertes Daten-Schema: Integration von
templates/json_struktur_roboplanet.txt. - Normalisierung: Automatische Standardisierung von Einheiten (Minuten, cm, kg, m²/h).
- Frontend Update: Neue UI-Komponente zur Anzeige der technischen Daten (Core Data, Layer, Extended Features).
- Sidebar & Header: Update auf "ROBOPLANET v2.5".
-
[UPGRADE] v2.4:
- Dokumentation der Kern-Engine (
helpers.py) mit Dual SDK & Hybrid Image Generation. - Aktualisierung der Architektur-Übersicht und Komponenten-Beschreibungen.
- Versionierung an den aktuellen Code-Stand (
v2.4.0) angepasst.
- Dokumentation der Kern-Engine (
-
[UPGRADE] v2.3:
- Einführung der Session History (Datenbank-basiert).
- Implementierung von Markdown-Cleaning (Stripping von Code-Blocks).
- Prompt-Optimierung für tabellarische Markdown-Ausgaben in Phase 5.
- Markdown-File Import Feature.