diff --git a/MIGRATION_PLAN.md b/MIGRATION_PLAN.md index d6c48cac..1ee7c984 100644 --- a/MIGRATION_PLAN.md +++ b/MIGRATION_PLAN.md @@ -152,6 +152,12 @@ Contacts stehen in 1:n Beziehung zu Accounts. Accounts können einen "Primary Co ## 7. Historie & Fixes (Jan 2026) +* **[UPGRADE] v0.6.0: Notion Single Source of Truth (Jan 19, 2026)** + * **Notion SSoT:** Umstellung der Branchenverwaltung (`Industries`) und Robotik-Kategorien auf Notion. Lokale Änderungen im Web-Interface sind für synchronisierte Felder deaktiviert, um die Datenintegrität zu wahren. + * **Dynamische Klassifizierung:** Der `ClassificationService` lädt die `allowed_industries` nun direkt aus der Datenbank, die wiederum via Sync-Skript aus Notion befüllt wird. + * **Erweiterte Datenmodelle:** Die Datenbank wurde um Felder wie `whale_threshold`, `min_requirement`, `scraper_keywords` und `industry_group` erweitert. + * **Sync-Automation:** Bereitstellung von `backend/scripts/sync_notion_industries.py` zur manuellen oder automatisierten Aktualisierung des lokalen Datenbestands. + * **[UPGRADE] v0.5.1: Robustness, UI Fixes & Wikipedia Hardening** * **[FIX] Critical DB Schema Mismatch (Jan 15, 2026):** * **Problem:** Die Anwendung stürzte beim Zugriff auf Firmendetails mit `OperationalError: no such column: wiki_verified_empty` ab. @@ -302,8 +308,22 @@ Based on the identified infrastructure, score the potential for these categories ``` **Variablen:** -* **`company_name`**: Name des Unternehmens. -* **`website_text`**: Der gescrapte Text der Hauptseite (max. 20.000 Zeichen). -* **`allowed_industries`**: Dynamisch geladene Liste der erlaubten Branchen aus der Datenbanktabelle `industries` (konfiguriert via Settings > Industry Focus). -* **`category_guidance`**: Dynamisch generierte Definitionen und Scoring-Regeln für die Robotik-Kategorien (aus der Datenbank). +* **`company_name`**: Offizieller Name des Zielunternehmens zur korrekten Identifikation im Dossier. +* **`website_text`**: Der gescrapte Text der Hauptseite (max. 20.000 Zeichen), der als primäre Informationsquelle dient. +* **`allowed_industries`**: Eine JSON-Liste der gültigen Branchen. Diese wird dynamisch aus der Datenbanktabelle `industries` geladen (synchronisiert aus Notion). Erzwingt ein sauberes CRM-Mapping. +* **`category_guidance`**: Dynamisch generierte Definitionen und Scoring-Anweisungen für die Robotik-Kategorien. Ermöglicht die Anpassung der KI-Logik über Notion/Settings ohne Code-Änderung. + +## 9. Notion Integration (Single Source of Truth) + +Das System nutzt Notion als zentrales Steuerungselement für strategische Definitionen. + +### 9.1 Datenfluss +1. **Definition:** Branchen und Robotik-Kategorien werden in Notion gepflegt (Whale Thresholds, Keywords, Definitionen). +2. **Synchronisation:** Das Skript `sync_notion_industries.py` zieht die Daten via API und führt einen Upsert in die lokale SQLite-Datenbank aus. +3. **App-Nutzung:** Das Web-Interface zeigt diese Daten schreibgeschützt an. Der `ClassificationService` nutzt sie als "System-Anweisung" für das LLM. + +### 9.2 Technische Details +* **Notion Token:** Muss in `/app/notion_token.txt` (Container-Pfad) hinterlegt sein. +* **DB-Mapping:** Die Zuordnung erfolgt primär über die `notion_id`, sekundär über den Namen, um Dubletten bei der Migration zu vermeiden. +