From 353453296a7608d4b38d8f29afb3080b36f5ae6f Mon Sep 17 00:00:00 2001 From: Floke Date: Tue, 15 Apr 2025 12:16:29 +0000 Subject: [PATCH] bugfix --- brancheneinstufung.py | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/brancheneinstufung.py b/brancheneinstufung.py index 6050cc8f..f18c8409 100644 --- a/brancheneinstufung.py +++ b/brancheneinstufung.py @@ -1552,11 +1552,11 @@ def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kateg Falls der Vorschlag nicht validiert werden kann, erfolgt ein Fallback auf den CRM-Wert. Args: - crm_branche (str): Branche laut CRM. - beschreibung (str): Unternehmensbeschreibung (CRM). - wiki_branche (str): Branche aus Wikipedia (falls vorhanden). - wiki_kategorien (str): Wikipedia-Kategorien. - website_summary (str): Zusammenfassung des Website-Inhalts. + crm_branche (str): Branche laut CRM + beschreibung (str): Unternehmensbeschreibung (CRM) + wiki_branche (str): Branche aus Wikipedia (falls vorhanden) + wiki_kategorien (str): Wikipedia-Kategorien + website_summary (str): Zusammenfassung des Website-Inhalts Returns: dict: Enthält "branch", "consistency" (ok oder X) und "justification". @@ -1564,14 +1564,14 @@ def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kateg # Lade Mapping und Liste der erlaubten Ziel-Branchen mapping, allowed_branches = load_target_branches() - # Baue den Text für das Ziel-Branchenschema, der im System-Prompt an ChatGPT übergeben wird. + # Baue den Text für das Ziel-Branchenschema, der im System-Prompt an ChatGPT übergeben wird schema_lines = ["Ziel-Branchenschema: Folgende Branchenbereiche sind gültig:"] for branch in allowed_branches: schema_lines.append(f"- {branch}") target_schema_info = "\n".join(schema_lines) - # Erstelle den System-Prompt inklusive der Zielvorgaben. - # Hier wird das Zielbranchenschema aus der CSV-Datei (via load_target_schema) eingebunden. + # Erstelle den System-Prompt inklusive der Zielvorgaben. Hier wird das Zielbranchenschema aus der CSV-Datei + # (via load_target_schema) eingebunden. target_mapping, target_schema_string, allowed_targets = load_target_schema() prompt = ( @@ -1616,31 +1616,30 @@ def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kateg consistency = "" explanation = "" for line in lines: - lower_line = line.lower() - if lower_line.startswith("branche:"): + if line.lower().startswith("branche:"): suggestion = line.split(":", 1)[1].strip() - elif lower_line.startswith("übereinstimmung:"): + elif line.lower().startswith("übereinstimmung:"): consistency = line.split(":", 1)[1].strip() - elif lower_line.startswith("begründung:"): + elif line.lower().startswith("begründung:"): explanation = line.split(":", 1)[1].strip() - # Bereinige den Vorschlag: Entferne unnötige Satzzeichen und konvertiere in Kleinbuchstaben. + # Bereinige den Vorschlag: entferne unnötige Satzzeichen und konvertiere in Kleinbuchstaben clean_suggestion = re.sub(r'[^\w\s/&-]', '', suggestion).strip().lower() - # Falls der bereinigte Vorschlag kein Hierarchie-Trennzeichen ">" enthält, übernehme den Präfix aus der CRM-Branche. + # Falls der bereinigte Vorschlag kein Hierarchie-Trennzeichen ">" enthält, übernehme den Präfix aus der CRM-Branche if ">" not in clean_suggestion and ">" in crm_branche: prefix = crm_branche.split(">")[0].strip().lower() clean_suggestion = prefix + " > " + clean_suggestion - # Prüfe, ob der bereinigte Vorschlag mit einem erlaubten Eintrag (Fuzzy Matching) übereinstimmt. + # Prüfe, ob der bereinigte Vorschlag mit einem erlaubten Eintrag (Fuzzy Matching) übereinstimmt valid = False for allowed in allowed_branches: sim = fuzzy_similarity(clean_suggestion, allowed) - if sim > 0.95: # Sehr hoher Ähnlichkeitswert (anpassbar) + if sim > 0.95: # sehr hoher Ähnlichkeitswert (kann angepasst werden) valid = True - clean_suggestion = allowed # Setze exakte Übereinstimmung + # Setze den Vorschlag exakt auf den Zielwert + clean_suggestion = allowed break - if not valid: debug_print(f"Mapping ungültig für Vorschlag: '{clean_suggestion}'. Fallback: CRM-Branche ('{crm_branche}') verwendet.") return {"branch": crm_branche, "consistency": consistency, "justification": "Fallback: CRM-Wert verwendet aufgrund ungültiger ChatGPT-Zuweisung."} @@ -1648,6 +1647,7 @@ def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kateg return {"branch": clean_suggestion, "consistency": consistency, "justification": explanation} + def evaluate_servicetechnicians_estimate(company_name, company_data): try: with open("serpApiKey.txt", "r") as f: