From 3fbac76956e74664e2b981f916135e0e0ceeb98a Mon Sep 17 00:00:00 2001 From: Floke Date: Mon, 30 Jun 2025 06:11:15 +0000 Subject: [PATCH] Pfade angepasst --- helpers.py | 81 +++++++++++++++++++++++++----------------------------- 1 file changed, 38 insertions(+), 43 deletions(-) diff --git a/helpers.py b/helpers.py index a3c24bea..b4b48ed8 100644 --- a/helpers.py +++ b/helpers.py @@ -672,22 +672,11 @@ def get_email_address(firstname, lastname, website): def load_target_schema(csv_filepath=BRANCH_MAPPING_FILE): """ Lädt das Ziel-Branchenschema aus der definierten CSV-Datei. - Befüllt die globalen Variablen in config.py: - - ALLOWED_TARGET_BRANCHES - - FOCUS_TARGET_BRANCHES - - TARGET_SCHEMA_STRING - - FOCUS_BRANCHES_PROMPT_PART + Gibt True bei Erfolg zurück, False bei einem Fehler. """ logger = logging.getLogger(__name__) - - # Importiere die globalen Variablen, die hier modifiziert werden - # Da sie im selben Modul sind, können wir direkt darauf zugreifen, aber zur Klarheit ist dies gut from config import TARGET_SCHEMA_STRING, ALLOWED_TARGET_BRANCHES, FOCUS_TARGET_BRANCHES, FOCUS_BRANCHES_PROMPT_PART - - # Besser ist, direkt auf die importierte Config zu referenzieren, um Seiteneffekte zu vermeiden. - # Da die Variablen aber in config.py als globale Variablen definiert wurden, müssen wir sie so modifizieren. - # Wir verwenden `globals()` um die globalen Variablen dieses Moduls zu ändern. - + allowed_branches_set = set() focus_branches_set = set() line_count = 0 @@ -704,7 +693,8 @@ def load_target_schema(csv_filepath=BRANCH_MAPPING_FILE): logger.warning(f"Schema-Datei '{csv_filepath}' ist leer oder hat keinen Header.") globals()['TARGET_SCHEMA_STRING'] = "Ziel-Branchenschema nicht verfuegbar (Datei leer)." globals()['FOCUS_BRANCHES_PROMPT_PART'] = "" - return + globals()['ALLOWED_TARGET_BRANCHES'] = [] + return False # WICHTIG: Rückgabe bei Fehler for row_num, row in enumerate(reader, 1): line_count = row_num @@ -716,46 +706,49 @@ def load_target_schema(csv_filepath=BRANCH_MAPPING_FILE): allowed_branches_set.add(target_branch) if len(row) >= 2 and row[1].strip().upper() in ["X", "FOKUS", "JA", "TRUE", "1"]: focus_branches_set.add(target_branch) - logger.debug(f" -> Fokusbranche gefunden: '{target_branch}'") except FileNotFoundError: logger.critical(f"FEHLER: Schema-Datei '{csv_filepath}' nicht gefunden.") globals()['TARGET_SCHEMA_STRING'] = "Ziel-Branchenschema nicht verfuegbar (Datei nicht gefunden)." globals()['FOCUS_BRANCHES_PROMPT_PART'] = "" - return + globals()['ALLOWED_TARGET_BRANCHES'] = [] + return False # WICHTIG: Rückgabe bei Fehler except Exception as e: logger.critical(f"FEHLER beim Laden des Ziel-Schemas aus '{csv_filepath}' (Zeile {line_count}): {e}") globals()['TARGET_SCHEMA_STRING'] = "Ziel-Branchenschema nicht verfuegbar (Fehler beim Lesen)." globals()['FOCUS_BRANCHES_PROMPT_PART'] = "" - return + globals()['ALLOWED_TARGET_BRANCHES'] = [] + return False # WICHTIG: Rückgabe bei Fehler - # Update der globalen Variablen globals()['ALLOWED_TARGET_BRANCHES'] = sorted(list(allowed_branches_set), key=str.lower) globals()['FOCUS_TARGET_BRANCHES'] = sorted(list(focus_branches_set), key=str.lower) - logger.info(f"Ziel-Schema geladen: {len(ALLOWED_TARGET_BRANCHES)} eindeutige Zielbranchen, davon {len(FOCUS_TARGET_BRANCHES)} Fokusbranchen.") - - if ALLOWED_TARGET_BRANCHES: - schema_lines = ["Ziel-Branchenschema: Folgende Branchenbereiche sind gueltig (Kurzformen):"] - schema_lines.extend(f"- {branch}" for branch in ALLOWED_TARGET_BRANCHES) - schema_lines.append("\nBitte ordne das Unternehmen ausschliesslich in einen dieser Bereiche ein. Gib NUR den exakten Kurznamen der Branche zurueck (keine Praefixe oder zusaetzliche Erklaerungen ausser im 'Begruendung'-Feld).") - schema_lines.append("Antworte ausschliesslich im folgenden Format (keine Einleitung, kein Schlusssatz):") - schema_lines.append("Branche: ") - schema_lines.append("Konfidenz: ") - schema_lines.append("Uebereinstimmung: ") - schema_lines.append("Begruendung: ") - globals()['TARGET_SCHEMA_STRING'] = "\n".join(schema_lines) - - if FOCUS_TARGET_BRANCHES: - focus_prompt_lines = ["\nZusätzlicher Hinweis: Wenn die Wahl zwischen mehreren passenden Branchen besteht, priorisiere bitte, wenn möglich, eine der folgenden Fokusbranchen:"] - focus_prompt_lines.extend(f"- {branch}" for branch in FOCUS_TARGET_BRANCHES) - globals()['FOCUS_BRANCHES_PROMPT_PART'] = "\n".join(focus_prompt_lines) - else: - globals()['FOCUS_BRANCHES_PROMPT_PART'] = "" - logger.info("Keine Fokusbranchen im Schema definiert.") - else: + if not ALLOWED_TARGET_BRANCHES: + logger.warning("Keine gueltigen Zielbranchen im Schema gefunden. Branchenbewertung ist nicht moeglich.") globals()['TARGET_SCHEMA_STRING'] = "Ziel-Branchenschema nicht verfuegbar (Keine gueltigen Branchen in Datei gefunden)." globals()['FOCUS_BRANCHES_PROMPT_PART'] = "" - logger.warning("Keine gueltigen Zielbranchen im Schema gefunden. Branchenbewertung ist nicht moeglich.") + return False # WICHTIG: Rückgabe bei Fehler + + logger.info(f"Ziel-Schema geladen: {len(ALLOWED_TARGET_BRANCHES)} eindeutige Zielbranchen, davon {len(FOCUS_TARGET_BRANCHES)} Fokusbranchen.") + + schema_lines = ["Ziel-Branchenschema: Folgende Branchenbereiche sind gueltig (Kurzformen):"] + schema_lines.extend(f"- {branch}" for branch in ALLOWED_TARGET_BRANCHES) + schema_lines.append("\nBitte ordne das Unternehmen ausschliesslich in einen dieser Bereiche ein. Gib NUR den exakten Kurznamen der Branche zurueck (keine Praefixe oder zusaetzliche Erklaerungen ausser im 'Begruendung'-Feld).") + schema_lines.append("Antworte ausschliesslich im folgenden Format (keine Einleitung, kein Schlusssatz):") + schema_lines.append("Branche: ") + schema_lines.append("Konfidenz: ") + schema_lines.append("Uebereinstimmung: ") + schema_lines.append("Begruendung: ") + globals()['TARGET_SCHEMA_STRING'] = "\n".join(schema_lines) + + if FOCUS_TARGET_BRANCHES: + focus_prompt_lines = ["\nZusätzlicher Hinweis: Wenn die Wahl zwischen mehreren passenden Branchen besteht, priorisiere bitte, wenn möglich, eine der folgenden Fokusbranchen:"] + focus_prompt_lines.extend(f"- {branch}" for branch in FOCUS_TARGET_BRANCHES) + globals()['FOCUS_BRANCHES_PROMPT_PART'] = "\n".join(focus_prompt_lines) + else: + globals()['FOCUS_BRANCHES_PROMPT_PART'] = "" + logger.info("Keine Fokusbranchen im Schema definiert.") + + return True # WICHTIG: Rückgabe bei Erfolg # ============================================================================== # 8. OPENAI API WRAPPERS (CHAT & SUMMARY) @@ -961,14 +954,16 @@ def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kateg # Importiere die globalen Variablen, die hier benötigt werden from config import TARGET_SCHEMA_STRING, FOCUS_BRANCHES_PROMPT_PART, ALLOWED_TARGET_BRANCHES - + + # NEU: Überprüfung, ob das Laden des Schemas überhaupt erfolgreich war. + # Die globale Variable wird von load_target_schema befüllt (oder geleert). if not ALLOWED_TARGET_BRANCHES: - logger.critical("FEHLER in evaluate_branche_chatgpt: Ziel-Branchenschema nicht geladen.") + logger.critical("FEHLER in evaluate_branche_chatgpt: Ziel-Branchenschema ist nicht geladen oder leer. Breche Evaluation ab.") return { "branch": "FEHLER - SCHEMA FEHLT", "confidence": "N/A", "consistency": "error_schema_missing", - "justification": "Fehler: Ziel-Schema nicht geladen" + "justification": "Fehler: Ziel-Branchenschema konnte nicht geladen werden oder ist leer." } allowed_branches_lookup = {b.lower(): b for b in ALLOWED_TARGET_BRANCHES}