- Feature Engineering: Dynamische Erstellung des Features 'is_part_of_group' in `prepare_data_for_modeling` und `_predict_technician_bucket` basierend auf Spalten D (Parent Account Name) sowie O (System Vorschlag Parent Account) und P (Parent Vorschlag Status). Dieses Feature wird nun für das ML-Training und die Vorhersage verwendet.
- Plausibilitäts-Logik erweitert: `_check_financial_plausibility` berücksichtigt jetzt nicht nur Spalte D, sondern auch einen bestätigten Parent-Vorschlag aus Spalte O (mit P='x'), um die `INFO_KONZERN_LOGIK` für die Abweichungsflags (BJ, BK) anzuwenden. Die aufrufenden Stellen in `_process_single_row` und `run_plausibility_checks_batch` wurden angepasst, um die notwendigen Daten (O, P) an die Plausi-Funktion zu übergeben.
- Bugfix: `UnboundLocalError` für die Variable `bonus` in `serp_wikipedia_lookup` durch korrekte Initialisierung behoben.
- Bugfix: `KeyError` für "Timestamp letzte Pruefung" in `_process_single_row` durch korrekte Schreibweise des Spaltennamens-Schlüssels (mit "ue") behoben.
- Bugfix: `NameError` für `source_of_wiki_data_origin` im Konsolidierungs-Log-String in `_process_single_row` durch Verwendung eines Fallback-Wertes behoben.
- Code-Struktur: Debug-Logausgabe für den Inhalt von `current_wiki_url_r` in `_process_single_row` vor der Parent-Prüfung hinzugefügt.
- Code-Struktur: Korrektur der Limit-Anwendung und Entfernung eines fehlerhaften Code-Blocks in `run_plausibility_checks_batch`.
- Korrektur eines NameError in `_process_single_row` durch Verwendung der korrekten Log-Variablen `grund_message_wiki_str`.
- Behebung eines IndentationError in `process_reevaluation_rows` bei der Initialisierung von `processed_count_actual`.
- Korrektur eines UnboundLocalError in `serp_wikipedia_lookup` durch korrekte Initialisierung der `bonus`-Variable.
- Anpassung der Logik in `_process_single_row` zur Priorisierung der Parent-Wiki-Suche (aus Spalte D, dann O), wenn Spalte R (Tochter-Wiki) leer ist, bevor die allgemeine Tochter-Wiki-Verarbeitung (inkl. `force_reeval`) greift.
- Korrektur von `KeyError`s in `_process_single_row` durch Verwendung der korrekten Schreibweise (ohne Umlaute) für Spaltennamen-Schlüssel aus `COLUMN_MAP` ("Chat Begruendung Wiki Inkonsistenz", "Begruendung bei Abweichung").
- Korrektur der Limit-Prüfung in `process_reevaluation_rows`, um das Limit vor dem Aufruf von `_process_single_row` anzuwenden.
- Entfernung eines fehlerhaften Code-Blocks in `run_plausibility_checks_batch`, der einen `NameError` (Variable `updates`) verursachte. Batch-Update-Logik für `all_sheet_updates` präzisiert.
- Hinzufügen einer Debug-Logausgabe für `current_wiki_url_r` in `_process_single_row` zur besseren Analyse des Inhalts von Spalte R.
- Neuer Modus 'suggest_parents' für die Generierung von Vorschlägen zu Muttergesellschaften.
- Nutzt ChatGPT zur Analyse von Unternehmensdaten (CRM, Wiki, Website-Zusammenfassung).
- Schreibt Vorschläge in Spalte O ('System Vorschlag Parent Account'), setzt Status P auf '?' und Timestamp Q.
- Implementiert parallele OpenAI-Anfragen für Batch-Verarbeitung.
- Automatische Startzeilenermittlung basierend auf leerer Spalte O.
- Optionale Neubewertung von Zeilen mit Status P = '?'.
- 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.