This commit is contained in:
2025-04-04 16:12:21 +00:00
parent 30abd4d4ac
commit b347d898ae

View File

@@ -202,15 +202,45 @@ def validate_article_with_chatgpt(crm_data, wiki_data):
debug_print(f"Fehler beim Validierungs-API-Aufruf: {e}")
return "k.A."
def load_target_branches():
try:
with open("ziel_Branchenschema.csv", "r", encoding="utf-8") as csvfile:
reader = csv.reader(csvfile)
branches = [row[0] for row in reader if row and row[0].strip() != ""]
return branches
except Exception as e:
debug_print(f"Fehler beim Laden des Ziel-Branchenschemas: {e}")
return [
"Gutachter / Versicherungen > Baugutachter",
"Gutachter / Versicherungen > Technische Gutachten",
"Gutachter / Versicherungen > Versicherungsgutachten",
"Gutachter / Versicherungen > Medizinische Gutachten",
"Hersteller / Produzenten > Anlagenbau",
"Hersteller / Produzenten > Automaten (Vending, Slot)",
"Hersteller / Produzenten > Gebäudetechnik Allgemein",
"Hersteller / Produzenten > Gebäudetechnik Heizung, Lüftung, Klima",
"Hersteller / Produzenten > Maschinenbau",
"Hersteller / Produzenten > Medizintechnik",
"Service provider (Dienstleister) > Aufzüge und Rolltreppen",
"Service provider (Dienstleister) > Feuer- und Sicherheitssysteme",
"Service provider (Dienstleister) > Servicedienstleister / Reparatur ohne Produktion",
"Service provider (Dienstleister) > Facility Management",
"Versorger > Telekommunikation"
]
def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kategorien):
target_branches = load_target_branches()
target_branches_str = "\n".join(target_branches)
prompt_text = (
"Du bist ein Experte im Field Service Management. Analysiere die folgenden Branchenangaben und ordne das Unternehmen einer der gültigen Branchen zu. "
"Nutze ausschließlich die vorhandenen Informationen.\n\n"
"Du bist ein Experte im Field Service Management. Hier ist das gültige Ziel-Branchenschema:\n"
f"{target_branches_str}\n\n"
"Ordne anhand der folgenden Informationen das Unternehmen genau einer der oben genannten Branchen zu. "
"Wenn keine der Informationen passt, antworte mit 'k.A.'. Verwende dabei exakt die Schreibweise aus dem Ziel-Branchenschema.\n\n"
f"CRM-Branche: {crm_branche}\n"
f"Beschreibung Branche extern: {beschreibung}\n"
f"Wikipedia-Branche: {wiki_branche}\n"
f"Wikipedia-Kategorien: {wiki_kategorien}\n\n"
"Gib aus:\n"
"Gib aus im exakten Format (ohne zusätzliche Erklärungen):\n"
"Branche: <vorgeschlagene Branche>\n"
"Konsistenz: <OK oder X>\n"
"Begründung: <Begründung bei Abweichung (leer, wenn OK)>"
@@ -233,6 +263,23 @@ def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kateg
branch = "k.A."
consistency = "k.A."
justification = ""
for line in result.split("\n"):
if line.lower().startswith("branche:"):
branch = line.split(":", 1)[1].strip()
elif line.lower().startswith("konsistenz:"):
consistency = line.split(":", 1)[1].strip()
elif line.lower().startswith("begründung:"):
justification = line.split(":", 1)[1].strip()
if branch not in target_branches:
debug_print(f"Vorgeschlagene Branche '{branch}' nicht im Ziel-Branchenschema enthalten.")
branch = "k.A."
return {"branch": branch, "consistency": consistency, "justification": justification}
except Exception as e:
debug_print(f"Fehler beim Aufruf der ChatGPT API für Branchenabgleich: {e}")
return {"branch": "k.A.", "consistency": "k.A.", "justification": "k.A."}
branch = "k.A."
consistency = "k.A."
justification = ""
for line in result.split("\n"):
if line.lower().startswith("branche:"):
branch = line.split(":", 1)[1].strip()