Pfade angepasst

This commit is contained in:
2025-06-30 06:11:15 +00:00
parent 77053c9019
commit 3fbac76956

View File

@@ -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: <Exakter Kurzname der Branche aus der Liste>")
schema_lines.append("Konfidenz: <Hoch, Mittel oder Niedrig>")
schema_lines.append("Uebereinstimmung: <ok oder X (Vergleich deines Vorschlags mit der extrahierten Kurzform der CRM-Referenz)>")
schema_lines.append("Begruendung: <Sehr kurze Begruendung fuer deinen Branchenvorschlag>")
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: <Exakter Kurzname der Branche aus der Liste>")
schema_lines.append("Konfidenz: <Hoch, Mittel oder Niedrig>")
schema_lines.append("Uebereinstimmung: <ok oder X (Vergleich deines Vorschlags mit der extrahierten Kurzform der CRM-Referenz)>")
schema_lines.append("Begruendung: <Sehr kurze Begruendung fuer deinen Branchenvorschlag>")
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}