# TASKS.md - Offene Entwicklungs-Aufgaben Dieses Dokument dient als zentrale Quelle für klar definierte Entwicklungs-Tasks. --- ## 1. Task: Excel-Import für CRM-Bestandsdaten **Ziel:** Importieren einer Excel-Liste mit SuperOffice-Bestandsdaten in die Company Explorer Datenbank. **Status:** `[TODO]` **Dateien:** * **Neu erstellen:** `company-explorer/backend/scripts/ingest_superoffice_excel.py` **Anforderungen & Logik:** 1. **Abhängigkeiten:** Das Skript muss `pandas` und `openpyxl` verwenden, um die Excel-Datei zu lesen. 2. **Dateipfad:** Das Skript soll einen Dateipfad als Kommandozeilen-Argument akzeptieren (z.B. `python ... ingest.py /pfad/zur/datei.xlsx`). 3. **Datenbank-Verbindung:** Das Skript muss eine Verbindung zur `companies_v3_fixed_2.db` herstellen (die SQLAlchemy-Modelle aus `backend/database.py` nutzen). 4. **Spalten-Mapping:** Die Excel-Datei wird folgende Spalten haben (oder ähnlich): * `Account ID` -> `crm_id` * `Name` -> `crm_name` * `Website` -> `crm_website` * `Straße`, `PLZ`, `Stadt` -> `crm_address` (als formatierter String) * `Ust ID` -> `crm_vat` * `Branche` -> `industry_crm` 5. **Import-Logik (pro Zeile):** * **Prüfe auf Dubletten:** Suche in der `companies` Tabelle, ob eine Firma mit der gleichen `website` (falls vorhanden) oder `name` **und** `city` bereits existiert. * **Fall 1: Firma existiert (Match):** * Aktualisiere den bestehenden Datensatz: Trage die `crm_id`, `crm_name`, `crm_address` etc. in die `crm_*` Felder ein. * Setze den `status` auf `TO_ENRICH` (falls er `NEW` war). * **Fall 2: Firma ist neu:** * Lege einen neuen Datensatz in der `companies` Tabelle an. * Befülle die `crm_*` Felder mit den Daten aus der Excel-Zeile. * Setze den `name` und `website` (die "Golden Record"-Felder) initial ebenfalls auf die CRM-Werte. * Setze den `status` auf `TO_ENRICH`. **Akzeptanzkriterien:** * Nach Ausführung des Skripts sind die Firmen aus der Excel-Datei in der `companies_v3_fixed_2.db` sichtbar. * Bestehende Firmen werden mit CRM-Daten angereichert, neue Firmen werden angelegt. ---