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.sheet_handler = sheet_handler
|
||||||
self.wiki_scraper = wiki_scraper
|
self.wiki_scraper = wiki_scraper
|
||||||
|
|
||||||
self.model = None
|
self.model = None
|
||||||
self.imputer = None
|
self.imputer = None
|
||||||
self._expected_features = None
|
self._expected_features = None
|
||||||
self.is_setup_complete = False
|
self.is_setup_complete = False
|
||||||
|
self.schema_data = None # NEUES Attribut
|
||||||
|
|
||||||
self.logger.info("DataProcessor-Instanz erstellt. Bereit für Setup.")
|
self.logger.info("DataProcessor-Instanz erstellt. Bereit für Setup.")
|
||||||
|
|
||||||
def setup(self):
|
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...")
|
self.logger.info("Führe DataProcessor-Setup durch...")
|
||||||
# Lade das Branchenschema explizit.
|
# Lade das Branchenschema und speichere es in der Instanz
|
||||||
schema_loaded = initialize_target_schema()
|
self.schema_data = initialize_target_schema()
|
||||||
if not schema_loaded:
|
if not self.schema_data:
|
||||||
self.logger.error("Setup fehlgeschlagen: Branchenschema konnte nicht geladen werden.")
|
self.logger.error("Setup fehlgeschlagen: Branchenschema konnte nicht geladen werden.")
|
||||||
self.is_setup_complete = False
|
self.is_setup_complete = False
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# Lade das ML-Modell.
|
|
||||||
self._load_ml_model(MODEL_FILE, IMPUTER_FILE)
|
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.is_setup_complete = True
|
||||||
self.logger.info("DataProcessor-Setup erfolgreich abgeschlossen.")
|
self.logger.info("DataProcessor-Setup erfolgreich abgeschlossen.")
|
||||||
return True
|
return True
|
||||||
@@ -196,13 +189,7 @@ class DataProcessor:
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def _process_single_row(
|
def _process_single_row(self, row_num_in_sheet, row_data, steps_to_run, force_reeval=False, clear_x_flag=False):
|
||||||
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
|
Verarbeitet die Daten fuer eine einzelne Zeile im Sheet. Fuehrt ausgewaehlte
|
||||||
Anreicherungs- und Analyseprozesse durch.
|
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})...")
|
f"Zeile {row_num_in_sheet}: Fuehre CHATGPT Evaluationen & Plausi aus (Grund: {grund_message_chat})...")
|
||||||
|
|
||||||
# 3a. Branchen-Einstufung
|
# 3a. Branchen-Einstufung
|
||||||
self.logger.info(
|
self.logger.info(f" Zeile {row_num_in_sheet}: Starte Branchen-Einstufung ueber ChatGPT...")
|
||||||
f" Zeile {row_num_in_sheet}: Starte Branchen-Einstufung ueber ChatGPT...")
|
try:
|
||||||
try:
|
branch_result = evaluate_branche_chatgpt(
|
||||||
branch_result = evaluate_branche_chatgpt(
|
crm_branche,
|
||||||
crm_branche,
|
crm_beschreibung,
|
||||||
crm_beschreibung,
|
final_wiki_data.get('branche', 'k.A.'),
|
||||||
final_wiki_data.get('branche', 'k.A.'),
|
final_wiki_data.get('categories', 'k.A.'),
|
||||||
final_wiki_data.get('categories', 'k.A.'),
|
website_summary,
|
||||||
website_summary
|
schema_data=self.schema_data # NEU: Schema als Argument übergeben
|
||||||
)
|
)
|
||||||
updates.append(
|
updates.append(
|
||||||
{
|
{
|
||||||
'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Vorschlag Branche"] + 1)}{row_num_in_sheet}',
|
'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