From fce61fd4ddf55ebba3a776b34ca2a1b0803776c3 Mon Sep 17 00:00:00 2001 From: Floke Date: Mon, 30 Jun 2025 12:23:42 +0000 Subject: [PATCH] =?UTF-8?q?Fix=20Finale=20Stabilit=C3=A4t=20durch=20Single?= =?UTF-8?q?=20Source=20of=20Truth?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - REFACTOR: BRANCH_GROUP_MAPPING in `config.py` ist nun die einzige Quelle für gültige Branchen (Single Source of Truth). - CLEANUP: Redundante, hartcodierte Branchenliste und CSV-Ladelogik vollständig entfernt. - FIX: `initialize_target_schema` in `helpers.py` generiert erlaubte Branchen nun dynamisch aus dem Mapping. - FIX: `prepare_data_for_modeling` in `data_processor.py` nutzt nun konsistent die `CRM Branche` für das Mapping. --- data_processor.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/data_processor.py b/data_processor.py index 717c8b94..6ee3864d 100644 --- a/data_processor.py +++ b/data_processor.py @@ -5922,12 +5922,19 @@ class DataProcessor: f"FEHLER: Spalte '{branche_col_internal}' (aus 'Chat Vorschlag Branche') nicht im DataFrame gefunden.") return None - # Normalisiere die Branchennamen aus dem Sheet für das Mapping - normalized_sheet_branches = df_filtered[branche_col_internal].apply( - normalize_for_mapping) +# Verwende die CRM Branche als Basis für die Gruppierung + branche_col_internal = "branche_crm" # NEU: Wir verwenden die CRM-Branche als Feature + self.logger.info( + f"Verarbeite kategoriales Feature '{branche_col_internal}' und mappe es zu 'Branchen_Gruppe'...") - # Wende das hartcodierte Mapping aus der Config-Klasse an - df_filtered.loc[:, 'Branchen_Gruppe'] = normalized_sheet_branches.map( + if branche_col_internal not in df_filtered.columns: + self.logger.critical( + f"FEHLER: Spalte '{branche_col_internal}' nicht im DataFrame gefunden.") + return None + + # Wende das saubere Mapping aus der Config an. Die Schlüssel sind jetzt lesbar. + # Wir müssen die Eingabedaten aus dem Sheet NICHT MEHR normalisieren. + df_filtered.loc[:, 'Branchen_Gruppe'] = df_filtered[branche_col_internal].map( Config.BRANCH_GROUP_MAPPING).fillna('Sonstige') self.logger.info("Mapping zu 'Branchen_Gruppe' durchgeführt.")