Fix Finale Stabilität durch Single Source of Truth

- 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.
This commit is contained in:
2025-06-30 12:23:42 +00:00
parent 0dfcb55d63
commit fce61fd4dd

View File

@@ -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.")