From 1c5300323c04d6c6e76b085a4eb01151fab404fe Mon Sep 17 00:00:00 2001 From: Floke Date: Thu, 19 Jun 2025 14:27:34 +0000 Subject: [PATCH] bugfix --- brancheneinstufung.py | 52 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/brancheneinstufung.py b/brancheneinstufung.py index 5b21bc43..1a825999 100644 --- a/brancheneinstufung.py +++ b/brancheneinstufung.py @@ -4288,6 +4288,23 @@ class DataProcessor: # Spezifischere Batch-Modi (Block 26-32) haben oft ihre eigene Zeilenauswahl-Logik, # die nicht unbedingt diese Methoden verwendet. + def __init__(self, sheet_handler, wiki_scraper, ziel_schema, fokus_branchen, branch_mapping): # Neue Parameter + self.logger = logging.getLogger(self.__class__.__name__) + self.logger.info("Initialisiere DataProcessor...") + self.sheet_handler = sheet_handler + self.wiki_scraper = wiki_scraper + + # +++ NEUE INSTANZATTRIBUTE +++ + self.ziel_schema = ziel_schema + self.fokus_branchen = fokus_branchen + self.branch_mapping = branch_mapping + + # Laden von Modell/Imputer bleibt wie es ist + self.model = None + self.imputer = None + self._expected_features = None + + self.logger.info("DataProcessor initialisiert mit Handlern und Konfigurationsdaten.") def _needs_website_processing(self, row_data, force_reeval): """ @@ -9183,9 +9200,9 @@ class DataProcessor: # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # +++ FINALER DEBUGGING-BLOCK ZUR PRÜFUNG DES MAPPING-DICTIONARIES ++++++ # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - self.logger.info(f"PRÜFE MAPPING-DICT: Das BRANCH_MAPPING Dictionary hat {len(BRANCH_MAPPING)} Einträge.") - if len(BRANCH_MAPPING) < 5: - self.logger.error("ALARM: Das BRANCH_MAPPING Dictionary ist fast oder komplett leer! Das Laden der Branchen.csv ist fehlgeschlagen.") + self.logger.info(f"PRÜFE MAPPING-DICT: Das self.branch_mapping Dictionary hat {len(self.branch_mapping)} Einträge.") + if len(self.branch_mapping) < 1: + self.logger.error("ALARM: Das self.branch_mapping Dictionary ist leer!") else: # Zeige die ersten 5 Schlüssel-Wert-Paare aus dem Dictionary, um zu sehen, ob es korrekt ist. self.logger.info("PRÜFE MAPPING-DICT: Die ersten 5 Einträge sind:") @@ -9216,7 +9233,7 @@ class DataProcessor: # Sicherere Methode: # Erstelle eine normalisierte Version des Mapping-Dictionaries - mapping_lower = {k.lower(): v for k, v in BRANCH_MAPPING.items()} + mapping_lower = {str(k).strip().lower(): v for k, v in self.branch_mapping.items()} # self.branch_mapping verwenden # Wende dieses normalisierte Mapping auf die normalisierte Branchenspalte an df_filtered.loc[:, 'Branchen_Gruppe'] = normalized_sheet_branches.map(BRANCH_MAPPING).fillna('Sonstige') @@ -10283,6 +10300,33 @@ def main(): # handlers=[] verhindert default Console Handler, wir fuegen ihn manuell hinzu fuer mehr Kontrolle logging.basicConfig(level=log_level, format=log_format, handlers=[]) # log_format wird hier bereits verwendet + logger.info("Lade Konfigurationsdaten...") + + # Lade die Schemata und Mappings NACH dem Logging-Setup + ziel_schema, fokus_branchen = load_target_schema() + branch_mapping_dict = load_branch_mapping() + + # Wenn das Laden fehlschlägt, können wir hier sicher abbrechen + if not ziel_schema: + logger.critical("Ziel-Branchenschema konnte nicht geladen werden. Skriptabbruch.") + return + if not branch_mapping_dict: + logger.critical("Branchen-Mapping konnte nicht geladen werden. Skriptabbruch.") + return + + args = parse_arguments() + + # Initialisiere den DataProcessor und übergebe ihm die geladenen Daten + sheet_handler = GoogleSheetHandler(Config.SHEET_ID, Config.SERVICE_ACCOUNT_FILE, Config.TOKEN_FILE) + wiki_scraper = WikipediaScraper() + + # +++ WICHTIGE ÄNDERUNG HIER +++ + # Wir übergeben die Daten an den Konstruktor + data_processor = DataProcessor(sheet_handler, wiki_scraper, ziel_schema, fokus_branchen, branch_mapping_dict) + + logger.info("DataProcessor erfolgreich initialisiert.") + + ZIEL_BRANCHENSCHEMA, FOKUS_BRANCHEN = load_target_schema() # Zeile 10277 BRANCH_MAPPING = load_branch_mapping()