diff --git a/brancheneinstufung.py b/brancheneinstufung.py index 41400ab1..41301210 100644 --- a/brancheneinstufung.py +++ b/brancheneinstufung.py @@ -109,34 +109,25 @@ PATTERNS_FILE_TXT = "technician_patterns.txt" # Alt (Optional beibehalten) PATTERNS_FILE_JSON = "technician_patterns.json" # Neu (Empfohlen) def load_branch_mapping(file_path='Branchen.csv'): - logger = logging.getLogger(__name__) # Logger holen, um sicherzugehen - - # +++ Zusätzlicher Debugging-Schritt: Pfad und Existenz prüfen +++ + logger = logging.getLogger(__name__) absolute_path = os.path.abspath(file_path) logger.info(f"Versuche Branchen-Mapping zu laden von: '{absolute_path}'") if not os.path.exists(file_path): logger.error(f"DATEI NICHT GEFUNDEN an Pfad: '{absolute_path}'") - return {} # Gib leeres Dict zurück, wenn Datei nicht existiert + return {} try: df_mapping = pd.read_csv(file_path, sep=';', encoding='utf-8-sig') logger.info(f"Datei '{file_path}' erfolgreich mit pandas gelesen. {len(df_mapping)} Zeilen gefunden.") - logger.debug(f"Gelesene Spaltennamen: {list(df_mapping.columns)}") - - # Spaltennamen bereinigen df_mapping.columns = [str(col).strip() for col in df_mapping.columns] - logger.debug(f"Bereinigte Spaltennamen: {list(df_mapping.columns)}") expected_cols = ['Branch Group', 'Branch'] if not all(col in df_mapping.columns for col in expected_cols): - logger.error(f"FEHLER: Erwartete Spalten {expected_cols} in '{file_path}' nicht gefunden. " - f"Gefundene Spalten nach Bereinigung: {list(df_mapping.columns)}") + logger.error(f"FEHLER: Erwartete Spalten {expected_cols} in '{file_path}' nicht gefunden. Gefundene Spalten: {list(df_mapping.columns)}") return {} - # Normalisierte Keys erstellen df_mapping['normalized_keys'] = df_mapping['Branch'].apply(normalize_for_mapping) - # Duplikate in den normalisierten Keys prüfen if df_mapping['normalized_keys'].duplicated().any(): duplicates = df_mapping[df_mapping['normalized_keys'].duplicated()]['normalized_keys'] logger.warning(f"WARNUNG: Duplikate in normalisierten Branchen-Keys gefunden! Dies kann zu inkonsistentem Mapping führen. Duplikate: {list(duplicates)}") @@ -151,7 +142,6 @@ def load_branch_mapping(file_path='Branchen.csv'): except Exception as e: logger.error(f"FATALER FEHLER beim Laden oder Verarbeiten der Branchen-Mapping-Datei '{file_path}':") - # Gib den vollständigen Traceback in das Log aus, um den genauen Fehlerort zu sehen logger.error(traceback.format_exc()) return {} @@ -517,6 +507,20 @@ def token_count(text, model=None): # --- Logging Helpers --- LOG_FILE = None # Initialisierung +def normalize_for_mapping(text): + """ + Normalisiert einen String aggressiv für Mapping-Zwecke. + Entfernt Leerzeichen, macht alles klein, ersetzt gängige Sonderzeichen. + """ + if not isinstance(text, str): + return "" + text = text.lower() + text = text.strip() + # Ersetze alle Nicht-Alphanumerischen Zeichen durch nichts + text = re.sub(r'[^a-z0-9]', '', text) + return text + + def create_log_filename(mode): """Erstellt einen zeitgestempelten Logdateinamen im LOG_DIR.""" logger = logging.getLogger(__name__) # Logger-Instanz holen