v1.2.5: Added 1s pause after sheet update & enhanced debug output for Umsatz comparison
1-Sekunden-Pause: Nach dem Update der Wikipedia-Daten in Google Sheets wird eine 1-Sekunden-Pause eingefügt, um sicherzustellen, dass die Zellen aktualisiert wurden, bevor der Umsatzvergleich erfolgt. Zusätzliche Debug-Ausgabe: Vor dem Vergleich werden die CRM-Umsatz- und Wikipedia-Umsatzwerte im Debug-Log ausgegeben, um besser nachvollziehen zu können, welche Werte verglichen werden. Umsatz-Abgleich: Die Funktion compare_umsatz_values vergleicht den in Spalte I (CRM) hinterlegten Umsatz mit dem aus Wikipedia extrahierten Umsatz. Bei Abweichungen wird eine entsprechende Meldung in Spalte AG ausgegeben.
This commit is contained in:
@@ -14,7 +14,7 @@ import csv
|
|||||||
|
|
||||||
# ==================== KONFIGURATION ====================
|
# ==================== KONFIGURATION ====================
|
||||||
class Config:
|
class Config:
|
||||||
VERSION = "v1.2.4" # v1.2.4: Integriert ChatGPT API zur Umsatzbewertung, neuer Vergleich CRM vs. Wikipedia Umsatz
|
VERSION = "v1.2.5" # v1.2.5: Umsatzvergleich verbessert; 1 Sekunde Pause + zusätzliche Debug-Ausgabe
|
||||||
LANG = "de"
|
LANG = "de"
|
||||||
CREDENTIALS_FILE = "service_account.json"
|
CREDENTIALS_FILE = "service_account.json"
|
||||||
SHEET_URL = "https://docs.google.com/spreadsheets/d/1u_gHr9JUfmV1-iviRzbSe3575QEp7KLhK5jFV_gJcgo"
|
SHEET_URL = "https://docs.google.com/spreadsheets/d/1u_gHr9JUfmV1-iviRzbSe3575QEp7KLhK5jFV_gJcgo"
|
||||||
@@ -75,6 +75,8 @@ def extract_numeric_value(raw_value, is_umsatz=False):
|
|||||||
raw_value = raw_value.strip()
|
raw_value = raw_value.strip()
|
||||||
if not raw_value:
|
if not raw_value:
|
||||||
return "k.A."
|
return "k.A."
|
||||||
|
# Entferne gängige Zusätze wie "ca.", "circa", "über" etc.
|
||||||
|
raw_value = re.sub(r'\b(ca\.?|circa|über)\b', '', raw_value, flags=re.IGNORECASE)
|
||||||
raw = raw_value.lower().replace("\xa0", " ")
|
raw = raw_value.lower().replace("\xa0", " ")
|
||||||
match = re.search(r'([\d.,]+)', raw, flags=re.UNICODE)
|
match = re.search(r'([\d.,]+)', raw, flags=re.UNICODE)
|
||||||
if not match or not match.group(1).strip():
|
if not match or not match.group(1).strip():
|
||||||
@@ -107,10 +109,12 @@ def extract_numeric_value(raw_value, is_umsatz=False):
|
|||||||
return str(int(round(num)))
|
return str(int(round(num)))
|
||||||
|
|
||||||
def compare_umsatz_values(crm, wiki):
|
def compare_umsatz_values(crm, wiki):
|
||||||
|
debug_print(f"Vergleich CRM Umsatz: '{crm}' mit Wikipedia Umsatz: '{wiki}'")
|
||||||
try:
|
try:
|
||||||
crm_val = float(crm)
|
crm_val = float(crm)
|
||||||
wiki_val = float(wiki)
|
wiki_val = float(wiki)
|
||||||
except Exception:
|
except Exception as e:
|
||||||
|
debug_print(f"Fehler beim Umwandeln der Werte: CRM='{crm}', Wiki='{wiki}': {e}")
|
||||||
return "Daten unvollständig"
|
return "Daten unvollständig"
|
||||||
if crm_val == 0:
|
if crm_val == 0:
|
||||||
return "CRM Umsatz 0"
|
return "CRM Umsatz 0"
|
||||||
@@ -139,6 +143,7 @@ def evaluate_umsatz_chatgpt(company_name, wiki_umsatz):
|
|||||||
temperature=0.0
|
temperature=0.0
|
||||||
)
|
)
|
||||||
result = response.choices[0].message.content.strip()
|
result = response.choices[0].message.content.strip()
|
||||||
|
debug_print(f"ChatGPT Antwort: '{result}'")
|
||||||
try:
|
try:
|
||||||
value = float(result.replace(',', '.'))
|
value = float(result.replace(',', '.'))
|
||||||
return str(int(round(value)))
|
return str(int(round(value)))
|
||||||
@@ -398,12 +403,12 @@ class DataProcessor:
|
|||||||
if i >= self.sheet_handler.get_start_index():
|
if i >= self.sheet_handler.get_start_index():
|
||||||
self._process_single_row(i, row)
|
self._process_single_row(i, row)
|
||||||
def _process_single_row(self, row_num, row_data):
|
def _process_single_row(self, row_num, row_data):
|
||||||
# Neues Schema:
|
# Neues Schema:
|
||||||
# B: Firmenname, C: Website
|
# B: Firmenname, C: Website
|
||||||
# Wikipedia-Daten: Spalten K bis Q
|
# Wikipedia-Daten: Spalten K bis Q
|
||||||
# ChatGPT Umsatz: Spalte AF
|
# ChatGPT Umsatz: Spalte AF
|
||||||
# CRM Umsatz (bestehend) in Spalte I (Index 8)
|
# CRM Umsatz in Spalte I (Index 8)
|
||||||
# Umsatz-Abgleich: Ergebnis in Spalte AG
|
# Umsatz-Abgleich: Spalte AG
|
||||||
# Timestamp in Spalte AH, Version in Spalte AI.
|
# Timestamp in Spalte AH, Version in Spalte AI.
|
||||||
company_name = row_data[1] if len(row_data) > 1 else ""
|
company_name = row_data[1] if len(row_data) > 1 else ""
|
||||||
website = row_data[2] if len(row_data) > 2 else ""
|
website = row_data[2] if len(row_data) > 2 else ""
|
||||||
@@ -436,6 +441,8 @@ class DataProcessor:
|
|||||||
company_data.get('categories', 'k.A.')
|
company_data.get('categories', 'k.A.')
|
||||||
]
|
]
|
||||||
self.sheet_handler.sheet.update(values=[wiki_values], range_name=wiki_update_range)
|
self.sheet_handler.sheet.update(values=[wiki_values], range_name=wiki_update_range)
|
||||||
|
# Pause einbauen, damit die Werte in Google Sheets aktualisiert werden.
|
||||||
|
time.sleep(1)
|
||||||
# ChatGPT API: Umsatzbewertung basierend auf Firmenname und Wikipedia-Umsatz
|
# ChatGPT API: Umsatzbewertung basierend auf Firmenname und Wikipedia-Umsatz
|
||||||
wiki_umsatz = company_data.get('umsatz', 'k.A.')
|
wiki_umsatz = company_data.get('umsatz', 'k.A.')
|
||||||
if wiki_umsatz != "k.A.":
|
if wiki_umsatz != "k.A.":
|
||||||
@@ -443,7 +450,7 @@ class DataProcessor:
|
|||||||
else:
|
else:
|
||||||
chatgpt_umsatz = "k.A."
|
chatgpt_umsatz = "k.A."
|
||||||
self.sheet_handler.sheet.update(values=[[chatgpt_umsatz]], range_name=chatgpt_range)
|
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)
|
# Umsatz-Abgleich: CRM-Umsatz aus Spalte I und Wikipedia-Umsatz
|
||||||
crm_umsatz = row_data[8] if len(row_data) > 8 else "k.A."
|
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.'))
|
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)
|
self.sheet_handler.sheet.update(values=[[abgleich_result]], range_name=abgleich_range)
|
||||||
|
|||||||
Reference in New Issue
Block a user