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:
@@ -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."))
|
||||
|
||||
Reference in New Issue
Block a user