diff --git a/brancheneinstufung.py b/brancheneinstufung.py index a0567502..0055aca6 100644 --- a/brancheneinstufung.py +++ b/brancheneinstufung.py @@ -1067,7 +1067,7 @@ def evaluate_fsm_suitability(company_name, company_data): debug_print(f"Fehler beim Aufruf der ChatGPT API für FSM-Eignungsprüfung: {e}") return {"suitability": "k.A.", "justification": "k.A."} -def evaluate_branche_chatgpt(crm_branche, ext_branche, wiki_branche, wiki_kategorien): +def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kategorien): # Laden des Ziel-Branchenschemas def load_target_branches(): try: @@ -1080,7 +1080,7 @@ def evaluate_branche_chatgpt(crm_branche, ext_branche, wiki_branche, wiki_katego return [] target_branches = load_target_branches() - # Fokus-Branchen bleiben unverändert + # Fokus-Branchen, wie in der Ausgangsversion definiert focus_branches = [ "Gutachter / Versicherungen > Baugutachter", "Gutachter / Versicherungen > Technische Gutachten", @@ -1098,7 +1098,6 @@ def evaluate_branche_chatgpt(crm_branche, ext_branche, wiki_branche, wiki_katego "Service provider (Dienstleister) > Facility Management", "Versorger > Telekommunikation" ] - try: with open("api_key.txt", "r") as f: api_key = f.read().strip() @@ -1106,25 +1105,26 @@ def evaluate_branche_chatgpt(crm_branche, ext_branche, wiki_branche, wiki_katego 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 - - # Wenn kein Wikipedia-Artikel vorliegt (wiki_branche = "k.A."), - # verwende ausschließlich die CRM-Daten und die externe Branchenbeschreibung (ext_branche) + + # System-Prompt dynamisch wählen if wiki_branche.strip().lower() == "k.a.": + # Kein Wikipedia-Artikel gefunden: Nur CRM-Branche und externe Beschreibung verwenden. system_prompt = ( "Du bist ein Experte im Field Service Management. Ordne das Unternehmen basierend auf den folgenden Angaben exakt einer Branche zu.\n\n" - f"CRM-Branche (Spalte G): {crm_branche}\n" - f"Externe Branchenbeschreibung (Spalte H): {ext_branche}\n\n" - "Das Ziel-Branchenschema umfasst ALLE gültigen Branchen (inkl. Fokus-Branchen). " + f"CRM-Branche (Spalte F): {crm_branche}\n" + f"Externe Branchenbeschreibung (Spalte H): {beschreibung}\n\n" + "Das Ziel-Branchenschema umfasst ALLE gültigen Branchen (inkl. Fokusbranchen). Bitte wähle eine Branche aus.\n" "Antworte im Format:\nBranche: \nÜbereinstimmung: \nBegründung: ." ) else: + # Wikipedia-Daten vorhanden: Alle Angaben werden herangezogen. system_prompt = ( "Du bist ein Experte im Field Service Management. Ordne das Unternehmen basierend auf den folgenden Angaben exakt einer Branche zu.\n\n" - f"CRM-Branche (Spalte G): {crm_branche}\n" - f"Externe Branchenbeschreibung (Spalte H): {ext_branche}\n" + f"CRM-Branche (Spalte F): {crm_branche}\n" + f"Externe Branchenbeschreibung (Spalte H): {beschreibung}\n" f"Wikipedia-Branche (Spalte N): {wiki_branche}\n" f"Wikipedia-Kategorien (Spalte Q): {wiki_kategorien}\n\n" - "Das Ziel-Branchenschema umfasst ALLE gültigen Branchen (inkl. Fokus-Branchen). " + "Das Ziel-Branchenschema umfasst ALLE gültigen Branchen (inkl. Fokusbranchen). Bitte wähle eine Branche aus.\n" "Antworte im Format:\nBranche: \nÜbereinstimmung: \nBegründung: ." ) @@ -1147,12 +1147,13 @@ def evaluate_branche_chatgpt(crm_branche, ext_branche, wiki_branche, wiki_katego elif line.lower().startswith("begründung:"): justification = line.split(":", 1)[1].strip() - # Prüfe, ob der vorgeschlagene Branchentext exakt im Ziel-Branchenschema enthalten ist + # Überprüfung: Wenn der vorgeschlagene Branchentext nicht exakt im Ziel-Branchenschema enthalten ist, + # dann geben wir "k.A." mit Konsistenz "X" zurück. 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" - # Falls der Vorschlag exakt mit der in CRM (Spalte G) vorliegenden Branche übereinstimmt, ist keine Begründung nötig. + # Falls der Vorschlag exakt mit der in CRM festgelegten Branche übereinstimmt, brauchen wir keine Begründung. if crm_branche.strip() and branch.lower() == crm_branche.strip().lower(): justification = "" consistency = "ok"