- Zahlenextraktionsfunktionen (`get_numeric_filter_value`, `_get_numeric_value_for_plausi`) überarbeitet für robustere Behandlung von:
- Tausendertrennern (Punkt, Apostroph, Leerzeichen).
- Dezimaltrennzeichen (Komma, Punkt).
- Annahme, dass Umsatz-Rohwerte im Sheet bereits in Mio. € sind (außer bei expliziten Einheiten wie Mrd/Tsd).
- String-Input "0" wird in `_get_numeric_value_for_plausi` jetzt konsistent als "unbekannt" (NaN) behandelt.
- Methode `_check_financial_plausibility` angepasst:
- Verwendet die korrigierten numerischen Werte für absolute Plausi-Checks.
- Nutzt `get_numeric_filter_value` für den Vergleich von CRM- vs. Wiki-Umsatz (Mio.-Werte).
- Default-Flags auf "NICHT_PRUEFBAR" geändert, wenn zugrundeliegende Zahlen NaN sind.
- Logik für "FEHLER_FORMAT" präzisiert, um explizite "0"-Strings nicht fälschlicherweise als Formatfehler zu werten.
- Konsolidierungslogik in `_process_single_row` stellt sicher, dass `final_umsatz/ma_str_konsolidiert` korrekt "k.A." wird, wenn numerische Quellen 0 (im Sinne von unbekannt) sind.
- Plausibilitäts-Checks in `_process_single_row` verwenden nun die direkt zuvor neu konsolidierten Finanzwerte.
- Sicherstellung, dass der "Plausibilität Prüfdatum"-Timestamp (Spalte BM) auch bei Fehlern innerhalb des Plausi-Check-Blocks in `_process_single_row` gesetzt wird.
- Methode `run_plausibility_checks_batch` aktualisiert, um die korrigierte Konsolidierungs- und Plausi-Logik zu verwenden und den Plausi-Timestamp zu schreiben.
- Diverse Debug-Log-Ausgaben zur besseren Nachverfolgung der Zahlenverarbeitung und Plausi-Logik hinzugefügt/optimiert.
- Version auf 1.7.6 erhöht.
- Einführung von drei neuen Spalten zur Handhabung von Konzernstrukturen:
- "Parent Account Name" (manuell/CRM) an Position D.
- "System Vorschlag Parent Account" an Position O.
- "Parent Vorschlag Status" an Position P.
- Einführung der Spalte "Plausibilität Prüfdatum" an Position BI für den Timestamp der Plausibilitäts-Checks.
- Alle nachfolgenden Spaltenindizes in `COLUMN_MAP` entsprechend der neuen 67-Spalten-Struktur (A-BO) angepasst.
- `alignment_demo`-Funktion (`new_headers`) vollständig überarbeitet, um alle 67 Spalten mit ausführlichen Beschreibungen und Aufgaben für Zeilen 4 & 5 zu reflektieren (basierend auf wiederhergestellten Originalbeschreibungen und neuen Spaltendefinitionen).
- Ziel: Präzisere Datenerfassung für Konzernzugehörigkeiten und bessere Nachvollziehbarkeit der Spaltenbedeutungen als "Single Source of Truth".
- Modus "plausi_check_data" (Methode `run_plausibility_checks_batch`) erweitert, um Finanzdaten (Umsatz/MA) vor den Plausibilitätsprüfungen zu konsolidieren.
- Konsolidierungslogik (Wiki > CRM) aus `_process_single_row` in `run_plausibility_checks_batch` übernommen und angepasst.
- Schreibt nun die neu konsolidierten Werte in Spalten AY ("Finaler Umsatz (Wiki>CRM)") und BA ("Finaler Mitarbeiter (Wiki>CRM)").
- Plausibilitäts-Checks verwenden diese frisch konsolidierten Werte als Input.
- Ziel: Ermöglicht einen vollständigen Plausibilitäts-Check-Lauf ohne vorherigen separaten `reeval`-Lauf für die Datenkonsolidierung.
- Logik zur Behandlung von "0"-Werten in `get_numeric_filter_value` und `_get_numeric_value_for_plausi` weiter verfeinert, um "0 als unbekannt" vs. "berechnete 0" zu unterscheiden.
- Neuen Verarbeitungsmodus "plausi_check_data" implementiert.
- Modus führt Plausibilitätsprüfungen für Finanzdaten (Umsatz, Mitarbeiter, Ratio, CRM/Wiki-Abgleich) durch.
- Methode `DataProcessor.run_plausibility_checks_batch` erstellt und in `main()` integriert.
- Spalte "Plausibilität Prüfdatum" wird in diesem Modus gesetzt.
- Ziel: Gezielte Ausführung der Datenqualitäts-Checks für bestehende konsolidierte Werte.
- "Contact Search Timestamp" nach "Geschaetzter Techniker Bucket" verschoben.
- 6 Plausibilitäts-Check-Spalten danach eingefügt.
- Neue Spalte "Plausibilität Prüfdatum" hinzugefügt.
- COLUMN_MAP und alignment_demo entsprechend der neuen 64-Spalten-Struktur (A-BL) aktualisiert.
- 6 neue Spalten für Plausibilitätsprüfungen (Umsatz, MA, Ratio, Abweichungen CRM/Wiki, Begründung) in COLUMN_MAP und alignment_demo eingefügt.
- Indizes aller nachfolgenden Spalten angepasst.
- Ziel: Detaillierte Kennzeichnung von Datenqualitätsproblemen.
- Heuristische Mustererkennung in `WikipediaScraper.extract_company_data` für die Trennung von Stadt und Land aus rohen Sitzangaben verbessert.
- Berücksichtigung von Ländercode-Präfixen (z.B. D-PLZ).
- Optimierte Behandlung von Komma-getrennten Angaben und Ländern am Ende des Strings.
- Verfeinerte Logik zur Isolierung des Stadtnamens nach erfolgreicher Länderextraktion.
- Neue Spalte "Chat Branche Konfidenz" (AI) in COLUMN_MAP und alignment_demo eingefügt.
- Nachfolgende Spaltenindizes angepasst.
- Ziel: Speicherung des Konfidenz-Scores der Branchen-KI.
- Prompt für evaluate_branche_chatgpt angepasst, um Konfidenz (Hoch/Mittel/Niedrig) zu erfragen.
- Antwortformat-Anweisung im Prompt um Konfidenz erweitert.
- Parsing-Logik in evaluate_branche_chatgpt erweitert, um Konfidenz zu extrahieren.
- Rückgabewert von evaluate_branche_chatgpt um 'confidence'-Schlüssel erweitert.
- DataProcessor._process_single_row angepasst, um den Branchen-KI-Konfidenz-Score zu speichern.
- Logik zum Berechnen und Speichern von "Finaler Umsatz (Wiki>CRM)" und "Finaler Mitarbeiter (Wiki>CRM)" in _process_single_row integriert.
- Entfernung redundanter Methodendefinitionen am Ende der DataProcessor-Klasse.
- Betroffene Methoden: _predict_technician_bucket, _load_ml_model, prepare_data_for_modeling, train_technician_model, process_website_details, process_wiki_updates_from_chatgpt, process_wiki_reextract_missing_an.
- Redundanten lokalen Import von 'openai' in Config.load_api_keys entfernt. Der globale Import ist ausreichend.
- Temporären Platzhalter für die Validierung von ChatGPT-Wiki-URL-Vorschlägen in 'process_wiki_updates_from_chatgpt' durch Aufruf von 'is_valid_wikipedia_article_url' ersetzt.
Umfangreiche Überarbeitung der Spaltenstruktur im Google Sheet und im Code zur Verbesserung der thematischen Gruppierung und zur Erfassung zusätzlicher Datenpunkte.
**Wesentliche Änderungen:**
- **Neue Spalten eingeführt:**
- "CRM Land" (F): Für das Land des Unternehmenssitzes laut CRM.
- "Wiki Sitz Stadt" (O): Für die aus der Wikipedia-Infobox extrahierte Stadt.
- "Wiki Sitz Land" (P): Für das aus der Wikipedia-Infobox extrahierte Land.
- "Website Meta-Details" (AE): Für strukturierte Metadaten der Website (Title, Description, H-Tags).
- "URL Prüfstatus" (AG): Zur Markierung von URLs, die eine erneute Prüfung/Suche benötigen.
- **Spalten neu gruppiert:**
- Wikipedia-bezogene Timestamps (alt AN, AX, AY) wurden in den Wikipedia-Datenblock (neu V, W, X) verschoben.
- Website Scrape Timestamp (alt AT) wurde in den Website-Datenblock (neu AF) verschoben.
- Die Reihenfolge vieler nachfolgender Blöcke (ChatGPT-Evaluationen, LinkedIn, Konsolidierung, ML, restliche System-Timestamps) wurde angepasst, um die neue Struktur widerzuspiegeln.
- Das Schema umfasst nun 56 Spalten (A-BD).
- **`COLUMN_MAP` aktualisiert:** Die Konstante wurde an die neue Spaltenstruktur mit 56 Einträgen angepasst.
- **`alignment_demo` überarbeitet:** Die Funktion wurde komplett aktualisiert, um alle 56 Spalten mit detaillierten Beschreibungen für Quelle, Feldkategorie, Kurzbeschreibung und Aufgabe/Funktion abzudecken.
- **`WikipediaScraper` erweitert:**
- `keywords_map` um "sitz" erweitert.
- `_extract_infobox_value` angepasst, um den rohen Sitz-Text zu extrahieren.
- `extract_company_data` implementiert eine Heuristik, um aus dem rohen Sitz-Text "Wiki Sitz Stadt" und "Wiki Sitz Land" zu trennen und zurückzugeben.
**Ziel:**
- Schaffung einer logischeren und erweiterbaren Datenstruktur im Google Sheet.
- Ermöglichung der Erfassung und Analyse des Unternehmenslandes für zukünftige Auswertungen (z.B. DACH-Region).
- Konsolidierung der Dokumentation durch eine aktuelle und vollständige `alignment_demo`.
**Nächste Schritte:** Anpassung der `DataProcessor`-Methoden an die neue Spaltenstruktur.
Wiedereinführung und Verbesserung der Funktionalität zur Priorisierung von Fokusbranchen bei der automatisierten Branchenklassifizierung durch ChatGPT.
**Änderungen:**
- **Fokusbranchen aus CSV:**
- Die Definition von Fokusbranchen erfolgt nun über eine zusätzliche Spalte in der `ziel_Branchenschema.csv`-Datei. Dies ermöglicht eine flexible Konfiguration ohne Code-Änderungen.
- Die Funktion `load_target_schema` wurde erweitert, um diese Fokus-Markierungen einzulesen und eine separate Liste `FOCUS_TARGET_BRANCHES` sowie einen spezifischen Prompt-Teil `FOCUS_BRANCHES_PROMPT_PART` zu generieren.
- **Angepasste `evaluate_branche_chatgpt` Funktion:**
- Nutzt nun die global geladenen Listen `ALLOWED_TARGET_BRANCHES` und `FOCUS_TARGET_BRANCHES` sowie die Prompt-Teile `TARGET_SCHEMA_STRING` und `FOCUS_BRANCHES_PROMPT_PART`.
- Der an ChatGPT gesendete Prompt wurde um einen expliziten Hinweis erweitert, Fokusbranchen bei der Klassifizierung zu priorisieren, falls mehrere Branchen plausibel erscheinen.
- Die Fallback-Logik für die zu verwendende Beschreibungsquelle (CRM-Beschreibung vs. Website-Zusammenfassung bei fehlenden Wiki-Daten) wurde aus der früheren Funktionsversion übernommen und verfeinert.
- Die API-Key-Handhabung wurde entfernt, da diese nun global über `Config.API_KEYS` und `call_openai_chat` erfolgt.
- `debug_print` Aufrufe wurden durch Standard-Logging (`logger.debug`) ersetzt.
- **Globale Variablen:** Neue globale Variablen für Fokusbranchen und deren Prompt-Teil wurden eingeführt.
**Ziel:**
- Erhöhung der Genauigkeit der Branchenklassifizierung, indem vordefinierte, strategisch wichtige Branchen bei der KI-gestützten Bewertung bevorzugt werden.
- Verbesserung der Flexibilität und Wartbarkeit der Fokusbranchen-Definition durch Auslagerung in die zentrale CSV-Datei.