This commit is contained in:
2025-04-08 11:55:23 +00:00
parent f40d8d8a4f
commit 2f4333e0e5

View File

@@ -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}") debug_print(f"Fehler beim Aufruf der ChatGPT API für FSM-Eignungsprüfung: {e}")
return {"suitability": "k.A.", "justification": "k.A."} 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 # Laden des Ziel-Branchenschemas
def load_target_branches(): def load_target_branches():
try: try:
@@ -1080,7 +1080,7 @@ def evaluate_branche_chatgpt(crm_branche, ext_branche, wiki_branche, wiki_katego
return [] return []
target_branches = load_target_branches() target_branches = load_target_branches()
# Fokus-Branchen bleiben unverändert # Fokus-Branchen, wie in der Ausgangsversion definiert
focus_branches = [ focus_branches = [
"Gutachter / Versicherungen > Baugutachter", "Gutachter / Versicherungen > Baugutachter",
"Gutachter / Versicherungen > Technische Gutachten", "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", "Service provider (Dienstleister) > Facility Management",
"Versorger > Telekommunikation" "Versorger > Telekommunikation"
] ]
try: try:
with open("api_key.txt", "r") as f: with open("api_key.txt", "r") as f:
api_key = f.read().strip() 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}") debug_print(f"Fehler beim Lesen des API-Tokens (Branche): {e}")
return {"branch": "k.A.", "consistency": "k.A.", "justification": "k.A."} return {"branch": "k.A.", "consistency": "k.A.", "justification": "k.A."}
openai.api_key = api_key openai.api_key = api_key
# Wenn kein Wikipedia-Artikel vorliegt (wiki_branche = "k.A."), # System-Prompt dynamisch wählen
# verwende ausschließlich die CRM-Daten und die externe Branchenbeschreibung (ext_branche)
if wiki_branche.strip().lower() == "k.a.": if wiki_branche.strip().lower() == "k.a.":
# Kein Wikipedia-Artikel gefunden: Nur CRM-Branche und externe Beschreibung verwenden.
system_prompt = ( system_prompt = (
"Du bist ein Experte im Field Service Management. Ordne das Unternehmen basierend auf den folgenden Angaben exakt einer Branche zu.\n\n" "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"CRM-Branche (Spalte F): {crm_branche}\n"
f"Externe Branchenbeschreibung (Spalte H): {ext_branche}\n\n" f"Externe Branchenbeschreibung (Spalte H): {beschreibung}\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: <vorgeschlagene Branche>\nÜbereinstimmung: <ok oder X>\nBegründung: <kurze Begründung>." "Antworte im Format:\nBranche: <vorgeschlagene Branche>\nÜbereinstimmung: <ok oder X>\nBegründung: <kurze Begründung>."
) )
else: else:
# Wikipedia-Daten vorhanden: Alle Angaben werden herangezogen.
system_prompt = ( system_prompt = (
"Du bist ein Experte im Field Service Management. Ordne das Unternehmen basierend auf den folgenden Angaben exakt einer Branche zu.\n\n" "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"CRM-Branche (Spalte F): {crm_branche}\n"
f"Externe Branchenbeschreibung (Spalte H): {ext_branche}\n" f"Externe Branchenbeschreibung (Spalte H): {beschreibung}\n"
f"Wikipedia-Branche (Spalte N): {wiki_branche}\n" f"Wikipedia-Branche (Spalte N): {wiki_branche}\n"
f"Wikipedia-Kategorien (Spalte Q): {wiki_kategorien}\n\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: <vorgeschlagene Branche>\nÜbereinstimmung: <ok oder X>\nBegründung: <kurze Begründung>." "Antworte im Format:\nBranche: <vorgeschlagene Branche>\nÜbereinstimmung: <ok oder X>\nBegründung: <kurze Begründung>."
) )
@@ -1147,12 +1147,13 @@ def evaluate_branche_chatgpt(crm_branche, ext_branche, wiki_branche, wiki_katego
elif line.lower().startswith("begründung:"): elif line.lower().startswith("begründung:"):
justification = line.split(":", 1)[1].strip() 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]: if branch.lower() not in [tb.lower() for tb in target_branches]:
justification = "Vorgeschlagene Branche entspricht nicht dem Ziel-Branchenschema." justification = "Vorgeschlagene Branche entspricht nicht dem Ziel-Branchenschema."
branch = "k.A." branch = "k.A."
consistency = "X" 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(): if crm_branche.strip() and branch.lower() == crm_branche.strip().lower():
justification = "" justification = ""
consistency = "ok" consistency = "ok"