v1.2.4: Added ChatGPT API Umsatz evaluation and CRM vs. Wikipedia Umsatz comparison in Spalte AG

ChatGPT API Integration:

Die Funktion evaluate_umsatz_chatgpt liest den API-Key aus api_key.txt und fragt ChatGPT zur Schätzung des Umsatzes in Mio. € basierend auf dem Firmennamen und Wikipedia-Umsatz.

Das Ergebnis wird in Spalte AF ("Schätzung Umsatz ChatGPT") geschrieben.

Umsatz-Vergleich:

Die Funktion compare_umsatz_values vergleicht den CRM-Umsatz (Spalte I) mit dem Wikipedia-Umsatz (Spalte O).

Das Vergleichsergebnis ("OK" oder eine Abweichungsangabe) wird in Spalte AG ("Begründung für Abweichung Umsatz") eingetragen.

Spaltenzuordnung & Alignment:

Das neue Spaltenschema wird weiterhin über den Alignment-Demo-Modus (Modus 3) getestet.
This commit is contained in:
2025-04-01 17:36:38 +00:00
parent 1a2a81fa4b
commit 634905018b

View File

@@ -14,7 +14,7 @@ import csv
# ==================== KONFIGURATION ====================
class Config:
VERSION = "v1.2.4" # v1.2.4: Integriert ChatGPT API zur Umsatzbewertung in Spalte AF
VERSION = "v1.2.4" # v1.2.4: Integriert ChatGPT API zur Umsatzbewertung, neuer Vergleich CRM vs. Wikipedia Umsatz
LANG = "de"
CREDENTIALS_FILE = "service_account.json"
SHEET_URL = "https://docs.google.com/spreadsheets/d/1u_gHr9JUfmV1-iviRzbSe3575QEp7KLhK5jFV_gJcgo"
@@ -106,12 +106,22 @@ def extract_numeric_value(raw_value, is_umsatz=False):
else:
return str(int(round(num)))
def compare_umsatz_values(crm, wiki):
try:
crm_val = float(crm)
wiki_val = float(wiki)
except Exception:
return "Daten unvollständig"
if crm_val == 0:
return "CRM Umsatz 0"
diff = abs(crm_val - wiki_val) / crm_val
if diff < 0.1:
return "OK"
else:
diff_mio = abs(crm_val - wiki_val)
return f"Abweichung: {int(round(diff_mio))} Mio €"
def evaluate_umsatz_chatgpt(company_name, wiki_umsatz):
"""
Sendet einen strukturierten Prompt an die ChatGPT API, um den Umsatz (in Mio. €) zu evaluieren.
Liest den API-Token aus der Datei "api_key.txt".
Erwartet als Antwort eine Zahl (Mio. €).
"""
try:
with open("api_key.txt", "r") as f:
api_key = f.read().strip()
@@ -388,17 +398,18 @@ class DataProcessor:
if i >= self.sheet_handler.get_start_index():
self._process_single_row(i, row)
def _process_single_row(self, row_num, row_data):
# Im neuen Schema: Firmenname in Spalte B (Index 1), Website in Spalte C (Index 2).
# Wikipedia-Daten werden in Spalten K bis Q geschrieben:
# K: Vorschlag Wiki URL (Platzhalter "k.A.")
# L: Wikipedia URL, M: Wikipedia Absatz, N: Wikipedia Branche,
# O: Wikipedia Umsatz, P: Wikipedia Mitarbeiter, Q: Wikipedia Kategorien.
# ChatGPT Umsatz wird in Spalte AF geschrieben.
# Neues Schema:
# B: Firmenname, C: Website
# Wikipedia-Daten: Spalten K bis Q
# ChatGPT Umsatz: Spalte AF
# CRM Umsatz (bestehend) in Spalte I (Index 8)
# Umsatz-Abgleich: Ergebnis in Spalte AG
# Timestamp in Spalte AH, Version in Spalte AI.
company_name = row_data[1] if len(row_data) > 1 else ""
website = row_data[2] if len(row_data) > 2 else ""
wiki_update_range = f"K{row_num}:Q{row_num}"
chatgpt_range = f"AF{row_num}"
abgleich_range = f"AG{row_num}"
dt_range = f"AH{row_num}"
ver_range = f"AI{row_num}"
print(f"\n[{datetime.now().strftime('%H:%M:%S')}] Verarbeite Zeile {row_num}: {company_name}")
@@ -432,13 +443,17 @@ class DataProcessor:
else:
chatgpt_umsatz = "k.A."
self.sheet_handler.sheet.update(values=[[chatgpt_umsatz]], range_name=chatgpt_range)
# Umsatz-Abgleich zwischen CRM-Umsatz (Spalte I) und Wikipedia-Umsatz (aus company_data)
crm_umsatz = row_data[8] if len(row_data) > 8 else "k.A."
abgleich_result = compare_umsatz_values(crm_umsatz, company_data.get('umsatz', 'k.A.'))
self.sheet_handler.sheet.update(values=[[abgleich_result]], range_name=abgleich_range)
current_dt = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
self.sheet_handler.sheet.update(values=[[current_dt]], range_name=dt_range)
self.sheet_handler.sheet.update(values=[[Config.VERSION]], range_name=ver_range)
print(f"✅ Aktualisiert: URL: {company_data.get('url', 'k.A.')}, Absatz: {company_data.get('first_paragraph', 'k.A.')[:30]}..., "
f"Branche: {company_data.get('branche', 'k.A.')}, Wikipedia Umsatz: {company_data.get('umsatz', 'k.A.')}, "
f"Mitarbeiter: {company_data.get('mitarbeiter', 'k.A.')}, Kategorien: {company_data.get('categories', 'k.A.')}, "
f"ChatGPT Umsatz: {chatgpt_umsatz}")
f"ChatGPT Umsatz: {chatgpt_umsatz}, Umsatz-Abgleich: {abgleich_result}")
if MODE == "2":
print("----- Vollständiger Infobox-Inhalt -----")
print(company_data.get("full_infobox", "k.A."))