bugfix
This commit is contained in:
@@ -58,20 +58,15 @@ class DataProcessor:
|
||||
def __init__(self, sheet_handler, wiki_scraper):
|
||||
"""
|
||||
Initialisiert den DataProcessor mit Instanzen von Handler-Klassen.
|
||||
Die eigentliche Konfiguration erfolgt in der setup() Methode.
|
||||
"""
|
||||
self.logger = logging.getLogger(__name__ + ".DataProcessor")
|
||||
self.logger.info("Initialisiere DataProcessor...")
|
||||
|
||||
if not isinstance(sheet_handler, GoogleSheetHandler):
|
||||
self.logger.critical(
|
||||
"DataProcessor Init FEHLER: Kein gueltiger GoogleSheetHandler uebergeben!")
|
||||
raise ValueError(
|
||||
"DataProcessor benoetigt eine gueltige GoogleSheetHandler Instanz.")
|
||||
raise ValueError("DataProcessor benötigt eine gültige GoogleSheetHandler Instanz.")
|
||||
if not isinstance(wiki_scraper, WikipediaScraper):
|
||||
self.logger.critical(
|
||||
"DataProcessor Init FEHLER: Kein gueltiger WikipediaScraper uebergeben!")
|
||||
raise ValueError(
|
||||
"DataProcessor benoetigt eine gueltige WikipediaScraper Instanz.")
|
||||
raise ValueError("DataProcessor benötigt eine gültige WikipediaScraper Instanz.")
|
||||
|
||||
self.sheet_handler = sheet_handler
|
||||
self.wiki_scraper = wiki_scraper
|
||||
@@ -79,18 +74,30 @@ class DataProcessor:
|
||||
self.model = None
|
||||
self.imputer = None
|
||||
self._expected_features = None
|
||||
self.is_setup_complete = False
|
||||
|
||||
self.logger.info("DataProcessor initialisiert mit Handlern.")
|
||||
self.logger.info("DataProcessor-Instanz erstellt. Bereit für Setup.")
|
||||
|
||||
self._step_status_map = {
|
||||
'wiki_verify': "Wiki Verif. Timestamp",
|
||||
'website_scrape': "Website Scrape Timestamp",
|
||||
'summarize_website': "Website Scrape Timestamp",
|
||||
'branch_eval': "Timestamp letzte Pruefung",
|
||||
'find_wiki_serp': "SerpAPI Wiki Search Timestamp",
|
||||
'contact_search': "Contact Search Timestamp",
|
||||
'wiki_updates_from_chatgpt': "Chat Wiki Konsistenzpruefung",
|
||||
}
|
||||
def setup(self):
|
||||
"""
|
||||
Führt die notwendigen Initialisierungen durch, die von externen Konfigurationen abhängen.
|
||||
Muss nach Config.load_api_keys() aufgerufen werden.
|
||||
"""
|
||||
self.logger.info("Führe DataProcessor-Setup durch...")
|
||||
# Lade das Branchenschema explizit.
|
||||
schema_loaded = load_target_schema()
|
||||
if not schema_loaded:
|
||||
self.logger.error("Setup fehlgeschlagen: Branchenschema konnte nicht geladen werden.")
|
||||
self.is_setup_complete = False
|
||||
return False
|
||||
|
||||
# Lade das ML-Modell.
|
||||
self._load_ml_model(MODEL_FILE, IMPUTER_FILE)
|
||||
# Überprüfen, ob das Modell geladen wurde, ist optional, da _load_ml_model bereits loggt.
|
||||
|
||||
self.is_setup_complete = True
|
||||
self.logger.info("DataProcessor-Setup erfolgreich abgeschlossen.")
|
||||
return True
|
||||
|
||||
def _get_cell_value_safe(self, row, column_key):
|
||||
"""
|
||||
@@ -5417,13 +5424,10 @@ class DataProcessor:
|
||||
self.logger.debug(
|
||||
f"Versuche ML-Schaetzung fuer Zeile ({company_name[:50]}...)")
|
||||
|
||||
if self.model is None or self.imputer is None or self._expected_features is None:
|
||||
self.logger.info("Lade ML-Modell, Imputer und Feature-Spalten...")
|
||||
self._load_ml_model(MODEL_FILE, IMPUTER_FILE)
|
||||
if self.model is None or self.imputer is None or self._expected_features is None:
|
||||
self.logger.error(
|
||||
"Laden von Modell, Imputer oder Feature-Spalten fehlgeschlagen.")
|
||||
return "FEHLER Schaetzung (Modell-Laden)"
|
||||
# Die Überprüfung findet jetzt in der setup() Methode statt.
|
||||
if not self.is_setup_complete or self.model is None:
|
||||
self.logger.error("ML-Modell nicht initialisiert. Setup nicht ausgeführt oder fehlgeschlagen. Überspringe Vorhersage.")
|
||||
return "FEHLER Schaetzung (Setup fehlt)"
|
||||
try:
|
||||
# === Feature Erstellung (muss exakt zum Training passen!) ===
|
||||
|
||||
|
||||
Reference in New Issue
Block a user