This commit is contained in:
2025-06-19 14:27:34 +00:00
parent ac3735a7f6
commit 1c5300323c

View File

@@ -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()