- Refactoring der Funktion `prepare_data_for_modeling`:
- Neue Bucket-Einteilung: Die Anzahl der Zielklassen (Techniker-Buckets) wurde zur Verbesserung der Robustheit von 7 auf 3 Klassen reduziert ('Klein', 'Mittel', 'Gross').
- Feature Engineering: Zusätzliche Features (`Umsatz_pro_MA`, `Log_Umsatz`, `Log_Mitarbeiter`) werden nun dynamisch erstellt und für das Training verwendet, um die Vorhersagekraft zu erhöhen.
- Feature-Auswahl: Die finalen Features für das Modelltraining wurden auf die neuen, transformierten numerischen Features umgestellt.
- Datenfilterung: Filter für DACH-Region und Plausibilität (Ausschluss von `FEHLER`-Fällen) wurden direkt in die Datenvorbereitung integriert.
- Bugfix: Ein `NameError` in `prepare_data_for_modeling` wurde behoben. Der Code zur Erstellung des 'is_part_of_group'-Features greift nun korrekt auf die Spalten des Pandas DataFrames statt auf eine nicht existierende `row_data`-Variable zu.
- Bugfix: Ein `SyntaxError` im `col_keys_mapping`-Dictionary wurde durch ein fehlendes Komma behoben.
- Code-Struktur: Der gesamte Datenverarbeitungsfluss innerhalb von `prepare_data_for_modeling` wurde für bessere Lesbarkeit und Konsistenz überarbeitet.
- 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.
- Adds new mode/script functionality for "Family Shootings".
- Prompts user for event name and general event date for an initial info block.
- Saves/loads these inputs via `familien_shooting_last_input.json`.
- Reads 'familien_sample.csv' for scheduling data:
- Extracts 'Invitee First/Last Name', 'Start/End Date & Time',
'Response 1' (# Kids), 'Response 2' (Publish consent).
- Ignores rows with missing core participant or time data.
- Groups appointments by calendar date.
- For each day:
- Prints date as a section header.
- Generates a text-based table:
- Columns: Vorname, Nachname, Uhrzeit, # Kinder, Pub, Erledigt.
- 'Pub' column shows 'X' if 'Response 2' is "Ja, gerne".
- 'Erledigt' column shows '☐'.
- Sorts appointments chronologically within each day.
- Inserts a blank row in the table if a time gap exists between
consecutive appointments.
- Adds a page break between different dates.
- Document title now reflects the event name.
- Retains plain text output for manual "Text to Table" conversion in Docs.
- Frägt Datum, Kita-Namen und Ausgabemodus (intern/extern) vom Benutzer ab.
- Speichert letzte Eingaben für einfachere Wiederverwendung.
- Passt CSV-Spaltennamen für Vor-/Nachname Kind an.
- Interner Modus zeigt zusätzlich Spalten "E" (Einzelfotos) und "G" (Gruppenfotos)
mit "✓" für "Ja" und "Nein" für andere Werte.
- Dokumenttitel enthält nun Kita-Namen und Ausgabemodus.
- Fügt zwei Leerzeilen vor jeder Gruppenliste für besseren Abstand hinzu.