diff --git a/brancheneinstufung.py b/brancheneinstufung.py index eb542e60..904db609 100644 --- a/brancheneinstufung.py +++ b/brancheneinstufung.py @@ -994,22 +994,6 @@ class WikipediaScraper: # ==================== NEUE FUNKTION: Angepasste evaluate_branche_chatgpt ==================== def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kategorien, website_summary): - """ - Ordnet basierend auf den angegebenen Daten das Unternehmen exakt einer Branche aus dem Ziel-Branchenschema zu. - Falls kein passender Wikipedia-Artikel vorliegt bzw. die Kategorien nicht aussagekräftig sind - (d.h. das Stichwort 'unternehmen' fehlt), wird die Website-Zusammenfassung als Fallback genutzt. - - Args: - crm_branche (str): Branche aus CRM-Daten (Spalte F). - beschreibung (str): Externe oder CRM-Beschreibung (Spalte G). - wiki_branche (str): Wikipedia-Branche (Spalte N). - wiki_kategorien (str): Wikipedia-Kategorien (Spalte Q). - website_summary (str): Zusammenfassung des Website-Contents als Fallback. - - Returns: - dict: {"branch": , "consistency": <"ok" oder "X">, "justification": } - """ - # Hilfsfunktion zum Laden des Ziel-Branchenschemas def load_target_branches(): try: with open("ziel_Branchenschema.csv", "r", encoding="utf-8") as csvfile: @@ -1019,7 +1003,6 @@ def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kateg except Exception as e: debug_print(f"Fehler beim Laden des Ziel-Branchenschemas: {e}") return [] - target_branches = load_target_branches() target_branches_str = "\n".join(target_branches) focus_branches = [ @@ -1040,10 +1023,17 @@ def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kateg "Versorger > Telekommunikation" ] focus_branches_str = "\n".join(focus_branches) - - # Wenn kein Wikipedia-Artikel vorhanden oder die Kategorien nicht aussagekräftig sind, fallback auf die Website-Zusammenfassung. - if wiki_branche.strip().lower() == "k.a." or not is_valid_company_article(wiki_kategorien): - debug_print("Keine aussagekräftigen Wikipedia-Kategorien – verwende Website-Zusammenfassung als Fallback.") + try: + with open("api_key.txt", "r") as f: + api_key = f.read().strip() + except Exception as e: + debug_print(f"Fehler beim Lesen des API-Tokens (Branche): {e}") + return {"branch": "k.A.", "consistency": "k.A.", "justification": "k.A."} + openai.api_key = api_key + + # Falls kein Wikipedia-Artikel vorliegt, nutze die Website-Zusammenfassung als Fallback für die Branchenbeschreibung + if wiki_branche.strip().lower() == "k.a.": + debug_print("Kein Wikipedia-Artikel vorhanden – verwende Website-Zusammenfassung als Branchenbeschreibung-Fallback.") used_description = website_summary else: used_description = beschreibung @@ -1087,13 +1077,23 @@ def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kateg consistency = line.split(":", 1)[1].strip() elif line.lower().startswith("begründung:"): justification = line.split(":", 1)[1].strip() + + # Zuerst prüfen, ob der ChatGPT-Vorschlag überhaupt zum Ziel-Branchenschema gehört if branch.lower() not in [tb.lower() for tb in target_branches]: justification = "Vorgeschlagene Branche entspricht nicht dem Ziel-Branchenschema." branch = "k.A." consistency = "X" - if crm_branche.strip() and branch.lower() == crm_branche.strip().lower(): - justification = "" - consistency = "ok" + else: + # Vergleiche die normierten Werte der CRM-Branche und des ChatGPT-Vorschlags + norm_crm = normalize_company_name(crm_branche) + norm_branch = normalize_company_name(branch) + debug_print(f"Vergleich normierter Werte: CRM='{norm_crm}' vs. ChatGPT='{norm_branch}'") + if norm_crm and norm_branch == norm_crm: + justification = "" + consistency = "ok" + else: + consistency = "X" + debug_print(f"Endergebnis Branchenbewertung: Branche='{branch}', Übereinstimmung='{consistency}', Begründung='{justification}'") return {"branch": branch, "consistency": consistency, "justification": justification} except Exception as e: @@ -1102,6 +1102,7 @@ def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kateg + def evaluate_servicetechnicians_estimate(company_name, company_data): try: with open("serpApiKey.txt", "r") as f: