Bugfix
This commit is contained in:
@@ -584,6 +584,16 @@ class DataProcessor:
|
|||||||
total_tokens = 0
|
total_tokens = 0
|
||||||
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[3] if len(row_data) > 3 else ""
|
website = row_data[3] if len(row_data) > 3 else ""
|
||||||
|
# Default-Initialisierung für company_data, falls Wiki-Auswertung übersprungen wird
|
||||||
|
company_data = {
|
||||||
|
'url': 'k.A.',
|
||||||
|
'first_paragraph': 'k.A.',
|
||||||
|
'branche': 'k.A.',
|
||||||
|
'umsatz': 'k.A.',
|
||||||
|
'mitarbeiter': 'k.A.',
|
||||||
|
'categories': 'k.A.',
|
||||||
|
'full_infobox': 'k.A.'
|
||||||
|
}
|
||||||
# Wiki-Daten werden in Spalten L bis R abgelegt
|
# Wiki-Daten werden in Spalten L bis R abgelegt
|
||||||
wiki_update_range = f"L{row_num}:R{row_num}"
|
wiki_update_range = f"L{row_num}:R{row_num}"
|
||||||
dt_wiki_range = f"AN{row_num}"
|
dt_wiki_range = f"AN{row_num}"
|
||||||
@@ -629,17 +639,14 @@ class DataProcessor:
|
|||||||
debug_print(f"Zeile {row_num}: Wikipedia-Timestamp bereits gesetzt – überspringe Wiki-Auswertung.")
|
debug_print(f"Zeile {row_num}: Wikipedia-Timestamp bereits gesetzt – überspringe Wiki-Auswertung.")
|
||||||
# ChatGPT-Verarbeitung
|
# ChatGPT-Verarbeitung
|
||||||
if process_chatgpt:
|
if process_chatgpt:
|
||||||
# Umsatzvergleich: Ergebnis in "Chat Wiki Konsistenzprüfung" (Spalte S)
|
|
||||||
crm_umsatz = row_data[9] if len(row_data) > 9 else "k.A."
|
crm_umsatz = row_data[9] if len(row_data) > 9 else "k.A."
|
||||||
consistency_result = compare_umsatz_values(crm_umsatz, company_data.get('umsatz', 'k.A.'))
|
consistency_result = compare_umsatz_values(crm_umsatz, company_data.get('umsatz', 'k.A.'))
|
||||||
self.sheet_handler.sheet.update(values=[[consistency_result]], range_name=f"S{row_num}")
|
self.sheet_handler.sheet.update(values=[[consistency_result]], range_name=f"S{row_num}")
|
||||||
# Validierung Wikipedia-Artikel: Ergebnis wird aufgeteilt in "Chat Begründung Wiki Inkonsistenz" (T) und
|
|
||||||
# "Chat Vorschlag Wiki Artikel" (U)
|
|
||||||
crm_data = ";".join(row_data[1:10])
|
crm_data = ";".join(row_data[1:10])
|
||||||
wiki_data_str = ";".join(row_data[11:18])
|
wiki_data_str = ";".join(row_data[11:18])
|
||||||
prompt = ("Bitte überprüfe, ob die folgenden beiden Datensätze grundsätzlich zum gleichen Unternehmen gehören. "
|
prompt = ("Bitte überprüfe, ob die folgenden beiden Datensätze grundsätzlich zum gleichen Unternehmen gehören. "
|
||||||
f"CRM-Daten: {crm_data} | Wikipedia-Daten: {wiki_data_str}")
|
f"CRM-Daten: {crm_data} | Wikipedia-Daten: {wiki_data_str}")
|
||||||
valid_result, tokens = safe_chatgpt_call(prompt, crm_data + " " + wiki_data_str, row_data[10] if len(row_data)>10 else "k.A.")
|
valid_result, tokens = safe_chatgpt_call(prompt, crm_data + " " + wiki_data_str, row_data[10] if len(row_data) > 10 else "k.A.")
|
||||||
total_tokens += tokens
|
total_tokens += tokens
|
||||||
if valid_result.strip().upper() == "OK":
|
if valid_result.strip().upper() == "OK":
|
||||||
wiki_consistency = "OK"
|
wiki_consistency = "OK"
|
||||||
@@ -649,31 +656,28 @@ class DataProcessor:
|
|||||||
wiki_article_suggestion = valid_result
|
wiki_article_suggestion = valid_result
|
||||||
self.sheet_handler.sheet.update(values=[[wiki_consistency]], range_name=f"T{row_num}")
|
self.sheet_handler.sheet.update(values=[[wiki_consistency]], range_name=f"T{row_num}")
|
||||||
self.sheet_handler.sheet.update(values=[[wiki_article_suggestion]], range_name=f"U{row_num}")
|
self.sheet_handler.sheet.update(values=[[wiki_article_suggestion]], range_name=f"U{row_num}")
|
||||||
# FSM-Relevanz: Ergebnisse in "Chat Prüfung FSM Relevanz" (Z) und "Chat Begründung für FSM Relevanz" (AA)
|
|
||||||
prompt_fsm = f"Bitte bewerte, ob das Unternehmen '{company_name}' für den Einsatz einer Field Service Management Lösung geeignet ist. Antworte mit 'Ja' oder 'Nein' und begründe kurz."
|
prompt_fsm = f"Bitte bewerte, ob das Unternehmen '{company_name}' für den Einsatz einer Field Service Management Lösung geeignet ist. Antworte mit 'Ja' oder 'Nein' und begründe kurz."
|
||||||
fsm_result, tokens = safe_chatgpt_call(prompt_fsm, company_name, row_data[10] if len(row_data)>10 else "k.A.")
|
fsm_result, tokens = safe_chatgpt_call(prompt_fsm, company_name, row_data[10] if len(row_data) > 10 else "k.A.")
|
||||||
total_tokens += tokens
|
total_tokens += tokens
|
||||||
parts = fsm_result.split("-", 1)
|
parts = fsm_result.split("-", 1)
|
||||||
fsm_suitability = parts[0].strip() if parts else fsm_result
|
fsm_suitability = parts[0].strip() if parts else fsm_result
|
||||||
fsm_justification = parts[1].strip() if len(parts) > 1 else ""
|
fsm_justification = parts[1].strip() if len(parts) > 1 else ""
|
||||||
self.sheet_handler.sheet.update(values=[[fsm_suitability]], range_name=f"Z{row_num}")
|
self.sheet_handler.sheet.update(values=[[fsm_suitability]], range_name=f"Z{row_num}")
|
||||||
self.sheet_handler.sheet.update(values=[[fsm_justification]], range_name=f"AA{row_num}")
|
self.sheet_handler.sheet.update(values=[[fsm_justification]], range_name=f"AA{row_num}")
|
||||||
# Servicetechniker-Schätzung: Ergebnisse in "Chat Einschätzung Anzahl Servicetechniker" (AE) und "Chat Begründung Abweichung Servicetechniker" (AF)
|
|
||||||
prompt_st = f"Bitte schätze die Anzahl der Servicetechniker für das Unternehmen '{company_name}' ein. Antwortoptionen: '<50 Techniker', '>100 Techniker', '>200 Techniker', '>500 Techniker'."
|
prompt_st = f"Bitte schätze die Anzahl der Servicetechniker für das Unternehmen '{company_name}' ein. Antwortoptionen: '<50 Techniker', '>100 Techniker', '>200 Techniker', '>500 Techniker'."
|
||||||
st_estimate, tokens = safe_chatgpt_call(prompt_st, company_name, row_data[10] if len(row_data)>10 else "k.A.")
|
st_estimate, tokens = safe_chatgpt_call(prompt_st, company_name, row_data[10] if len(row_data) > 10 else "k.A.")
|
||||||
total_tokens += tokens
|
total_tokens += tokens
|
||||||
self.sheet_handler.sheet.update(values=[[st_estimate]], range_name=f"AE{row_num}")
|
self.sheet_handler.sheet.update(values=[[st_estimate]], range_name=f"AE{row_num}")
|
||||||
internal_value = row_data[7] if len(row_data) > 7 else "k.A."
|
internal_value = row_data[7] if len(row_data) > 7 else "k.A."
|
||||||
internal_category = map_internal_technicians(internal_value) if internal_value != "k.A." else "k.A."
|
internal_category = map_internal_technicians(internal_value) if internal_value != "k.A." else "k.A."
|
||||||
if internal_category != "k.A." and st_estimate != internal_category:
|
if internal_category != "k.A." and st_estimate != internal_category:
|
||||||
prompt_st_expl = f"Bitte erkläre, warum du für das Unternehmen '{company_name}' die Anzahl der Servicetechniker als '{st_estimate}' geschätzt hast."
|
prompt_st_expl = f"Bitte erkläre, warum du für das Unternehmen '{company_name}' die Anzahl der Servicetechniker als '{st_estimate}' geschätzt hast."
|
||||||
st_explanation, tokens = safe_chatgpt_call(prompt_st_expl, company_name, row_data[10] if len(row_data)>10 else "k.A.")
|
st_explanation, tokens = safe_chatgpt_call(prompt_st_expl, company_name, row_data[10] if len(row_data) > 10 else "k.A.")
|
||||||
total_tokens += tokens
|
total_tokens += tokens
|
||||||
technician_explanation = st_explanation
|
technician_explanation = st_explanation
|
||||||
else:
|
else:
|
||||||
technician_explanation = "ok"
|
technician_explanation = "ok"
|
||||||
self.sheet_handler.sheet.update(values=[[technician_explanation]], range_name=f"AF{row_num}")
|
self.sheet_handler.sheet.update(values=[[technician_explanation]], range_name=f"AF{row_num}")
|
||||||
# Mitarbeiter Konsistenzprüfung: Ergebnisse in "Chat Schätzung Anzahl Mitarbeiter" (AB)
|
|
||||||
crm_mitarbeiter = row_data[10] if len(row_data) > 10 else "k.A."
|
crm_mitarbeiter = row_data[10] if len(row_data) > 10 else "k.A."
|
||||||
wiki_mitarbeiter = company_data.get('mitarbeiter', "k.A.")
|
wiki_mitarbeiter = company_data.get('mitarbeiter', "k.A.")
|
||||||
try:
|
try:
|
||||||
@@ -685,12 +689,10 @@ class DataProcessor:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
mitarbeiter_result = "k.A."
|
mitarbeiter_result = "k.A."
|
||||||
self.sheet_handler.sheet.update(values=[[mitarbeiter_result]], range_name=f"AB{row_num}")
|
self.sheet_handler.sheet.update(values=[[mitarbeiter_result]], range_name=f"AB{row_num}")
|
||||||
# Umsatz-Schätzung: Ergebnisse in "Chat Schätzung Umsatz" (AG) und "Chat Begründung Abweichung Umsatz" (AH)
|
|
||||||
prompt_umsatz = f"Bitte schätze den Jahresumsatz (in Mio. €) für das Unternehmen '{company_name}' ein basierend auf den Daten: CRM: {crm_umsatz}, Wikipedia: {company_data.get('umsatz', 'k.A.')}. Antworte nur mit der Zahl."
|
prompt_umsatz = f"Bitte schätze den Jahresumsatz (in Mio. €) für das Unternehmen '{company_name}' ein basierend auf den Daten: CRM: {crm_umsatz}, Wikipedia: {company_data.get('umsatz', 'k.A.')}. Antworte nur mit der Zahl."
|
||||||
umsatz_estimate, tokens = safe_chatgpt_call(prompt_umsatz, company_name, row_data[10] if len(row_data)>10 else "k.A.")
|
umsatz_estimate, tokens = safe_chatgpt_call(prompt_umsatz, company_name, row_data[10] if len(row_data) > 10 else "k.A.")
|
||||||
total_tokens += tokens
|
total_tokens += tokens
|
||||||
self.sheet_handler.sheet.update(values=[[umsatz_estimate]], range_name=f"AG{row_num}")
|
self.sheet_handler.sheet.update(values=[[umsatz_estimate]], range_name=f"AG{row_num}")
|
||||||
# Gesamt-Tokens in Spalte "Tokens" (AQ) speichern
|
|
||||||
self.sheet_handler.sheet.update(values=[[str(total_tokens)]], range_name=f"AQ{row_num}")
|
self.sheet_handler.sheet.update(values=[[str(total_tokens)]], range_name=f"AQ{row_num}")
|
||||||
self.sheet_handler.sheet.update(values=[[current_dt]], range_name=dt_chat_range)
|
self.sheet_handler.sheet.update(values=[[current_dt]], range_name=dt_chat_range)
|
||||||
self.sheet_handler.sheet.update(values=[[current_dt]], range_name=ver_range)
|
self.sheet_handler.sheet.update(values=[[current_dt]], range_name=ver_range)
|
||||||
|
|||||||
Reference in New Issue
Block a user