From dbf94f68b0c9a281d03978e603e3c5681693a09c Mon Sep 17 00:00:00 2001 From: Floke Date: Tue, 1 Jul 2025 14:47:42 +0000 Subject: [PATCH] STABLE - Objektorientiertes Schema-Handling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - MAJOR REFACTOR: Globale Variablen für Branchenschema komplett entfernt. Das Schema wird nun in der `DataProcessor`-Instanz gehalten. - FIX: Kritischer Prompt-Fehler endgültig behoben. `evaluate_branche_chatgpt` erhält das Schema nun als explizites Argument, was Scope-Probleme beseitigt. - Das Projekt ist nun in einem stabilen, logisch konsistenten und lauffähigen Zustand für die Bestandsanreicherung. Die Grundlage für neue Features ist gelegt. --- data_processor.py | 43 +++++++++++++++---------------------------- 1 file changed, 15 insertions(+), 28 deletions(-) diff --git a/data_processor.py b/data_processor.py index effff0c2..c27f5d80 100644 --- a/data_processor.py +++ b/data_processor.py @@ -70,31 +70,24 @@ class DataProcessor: self.sheet_handler = sheet_handler self.wiki_scraper = wiki_scraper - self.model = None self.imputer = None self._expected_features = None self.is_setup_complete = False + self.schema_data = None # NEUES Attribut self.logger.info("DataProcessor-Instanz erstellt. Bereit für Setup.") 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 = initialize_target_schema() - if not schema_loaded: + # Lade das Branchenschema und speichere es in der Instanz + self.schema_data = initialize_target_schema() + if not self.schema_data: 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 @@ -196,13 +189,7 @@ class DataProcessor: return True return False - def _process_single_row( - self, - row_num_in_sheet, - row_data, - steps_to_run, - force_reeval=False, - clear_x_flag=False): + def _process_single_row(self, row_num_in_sheet, row_data, steps_to_run, force_reeval=False, clear_x_flag=False): """ Verarbeitet die Daten fuer eine einzelne Zeile im Sheet. Fuehrt ausgewaehlte Anreicherungs- und Analyseprozesse durch. @@ -495,16 +482,16 @@ class DataProcessor: f"Zeile {row_num_in_sheet}: Fuehre CHATGPT Evaluationen & Plausi aus (Grund: {grund_message_chat})...") # 3a. Branchen-Einstufung - self.logger.info( - f" Zeile {row_num_in_sheet}: Starte Branchen-Einstufung ueber ChatGPT...") - try: - branch_result = evaluate_branche_chatgpt( - crm_branche, - crm_beschreibung, - final_wiki_data.get('branche', 'k.A.'), - final_wiki_data.get('categories', 'k.A.'), - website_summary - ) + self.logger.info(f" Zeile {row_num_in_sheet}: Starte Branchen-Einstufung ueber ChatGPT...") + try: + branch_result = evaluate_branche_chatgpt( + crm_branche, + crm_beschreibung, + final_wiki_data.get('branche', 'k.A.'), + final_wiki_data.get('categories', 'k.A.'), + website_summary, + schema_data=self.schema_data # NEU: Schema als Argument übergeben + ) updates.append( { 'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Vorschlag Branche"] + 1)}{row_num_in_sheet}',