bugfix
This commit is contained in:
88
helpers.py
88
helpers.py
@@ -723,7 +723,95 @@ def load_target_schema(csv_filepath=BRANCH_MAPPING_FILE):
|
||||
if len(row) >= 3 and row[2].strip().upper() in ["X", "FOKUS", "JA", "TRUE", "1"]:
|
||||
focus_branches_set.add(target_branch)
|
||||
logger.debug(f" -> Fokusbranche gefunden: '{target_branch}'")
|
||||
except FileNotFoundError:def load_target_schema(csv_filepath=BRANCH_MAPPING_FILE):
|
||||
"""
|
||||
Lädt das Ziel-Branchenschema aus der definierten CSV-Datei.
|
||||
Gibt True bei Erfolg zurück, False bei einem Fehler.
|
||||
"""
|
||||
logger = logging.getLogger(__name__)
|
||||
from config import TARGET_SCHEMA_STRING, ALLOWED_TARGET_BRANCHES, FOCUS_TARGET_BRANCHES, FOCUS_BRANCHES_PROMPT_PART
|
||||
|
||||
allowed_branches_set = set()
|
||||
focus_branches_set = set()
|
||||
line_count = 0
|
||||
|
||||
logger.info(f"Lade Ziel-Schema und Fokus-Branchen aus '{csv_filepath}'...")
|
||||
|
||||
try:
|
||||
with open(csv_filepath, "r", encoding="utf-8-sig") as f:
|
||||
reader = csv.reader(f, delimiter=';')
|
||||
try:
|
||||
# Header lesen und überspringen
|
||||
header_row = next(reader)
|
||||
logger.debug(f"Ueberspringe Header-Zeile im Schema: {header_row}")
|
||||
except StopIteration:
|
||||
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'] = ""
|
||||
globals()['ALLOWED_TARGET_BRANCHES'] = []
|
||||
return False
|
||||
|
||||
# Iteriere über die verbleibenden Zeilen im Reader
|
||||
for row_num, row in enumerate(reader, 1):
|
||||
line_count = row_num
|
||||
# Überspringe leere Zeilen oder Zeilen mit zu wenigen Spalten
|
||||
if not row or len(row) < 2:
|
||||
logger.debug(f"Zeile {row_num} im Schema wird übersprungen (leer oder zu wenige Spalten).")
|
||||
continue
|
||||
|
||||
# Lese die Zielbranche aus der ZWEITEN Spalte (Index 1)
|
||||
target_branch = row[1].strip()
|
||||
if target_branch:
|
||||
allowed_branches_set.add(target_branch)
|
||||
# Prüfe optional die DRITTE Spalte (Index 2) für Fokus-Marker
|
||||
if len(row) >= 3 and row[2].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'] = ""
|
||||
globals()['ALLOWED_TARGET_BRANCHES'] = []
|
||||
return False
|
||||
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'] = ""
|
||||
globals()['ALLOWED_TARGET_BRANCHES'] = []
|
||||
return False
|
||||
|
||||
# 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)
|
||||
|
||||
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'] = ""
|
||||
return False
|
||||
|
||||
logger.info(f"Ziel-Schema geladen: {len(ALLOWED_TARGET_BRANCHES)} eindeutige Zielbranchen, davon {len(FOCUS_TARGET_BRANCHES)} Fokusbranchen.")
|
||||
|
||||
# Der Rest der Funktion, der den Prompt-String zusammenbaut, bleibt unverändert...
|
||||
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
|
||||
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'] = ""
|
||||
|
||||
Reference in New Issue
Block a user