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:
@@ -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}',
|
||||
|
||||
Reference in New Issue
Block a user