STABLE - Objektorientiertes Schema-Handling

- 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.
This commit is contained in:
2025-07-01 14:47:42 +00:00
parent a477a22656
commit dbf94f68b0

View File

@@ -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}',