This commit is contained in:
2025-04-09 10:00:03 +00:00
parent c8b9d0e4e9
commit 599881adbe

View File

@@ -427,12 +427,22 @@ def process_verification_only():
data = main_sheet.get_all_values()
batch_entries = []
row_indices = []
# Sammle Einträge, bei denen noch keine ChatGPT-Auswertung erfolgt ist (z.B. leeres Feld in Spalte AO)
for i, row in enumerate(data[1:], start=2):
# Überspringe Zeilen, bei denen bereits in Spalte AO (Index 40) ein Timestamp steht
if len(row) > 40 and row[40].strip() != "":
continue
# Hier wird angenommen, dass der relevante Vergleichswert (z.B. Wikipedia-Daten) in Spalte Y oder AO erwartet wird.
# Passen Sie die Bedingung ggf. an.
if len(row) <= 25 or row[24].strip() == "":
entry_text = f"Eintrag {i}:\nFirmenname: {row[1] if len(row)>1 else ''}\nCRM-Beschreibung: {row[7] if len(row)>7 else ''}\nWikipedia-URL: {row[11] if len(row)>11 and row[11].strip() not in ['', 'k.A.'] else 'k.A.'}\nWiki-Absatz: {row[12] if len(row)>12 else 'k.A.'}\nWiki-Kategorien: {row[16] if len(row)>16 else 'k.A.'}\n-----\n"
entry_text = (
f"Eintrag {i}:\n"
f"Firmenname: {row[1] if len(row) > 1 else ''}\n"
f"CRM-Beschreibung: {row[7] if len(row) > 7 else ''}\n"
f"Wikipedia-URL: {row[11] if len(row) > 11 and row[11].strip() not in ['', 'k.A.'] else 'k.A.'}\n"
f"Wiki-Absatz: {row[12] if len(row) > 12 else 'k.A.'}\n"
f"Wiki-Kategorien: {row[16] if len(row) > 16 else 'k.A.'}\n"
"-----\n"
)
batch_entries.append(entry_text)
row_indices.append(i)
if len(batch_entries) == rows_limit:
@@ -440,10 +450,16 @@ def process_verification_only():
if not batch_entries:
debug_print("Keine Einträge für die Verifizierung gefunden.")
return
aggregated_prompt = ("Du bist ein Experte in der Verifizierung von Wikipedia-Artikeln für Unternehmen. "
"Für jeden der folgenden Einträge prüfe, ob der vorhandene Wikipedia-Artikel (URL, Absatz, Kategorien) plausibel passt. "
"Gib das Ergebnis für jeden Eintrag im Format aus:\nEintrag <Zeilennummer>: <Antwort>\n"
"Regeln:\n- Bei Übereinstimmung: 'OK'\n- Bei Nichtübereinstimmung: 'Alternativer Wikipedia-Artikel vorgeschlagen: <URL> | X | <Begründung>'\n- Falls kein Artikel gefunden wurde: 'Kein Wikipedia-Eintrag vorhanden.'\n\n")
aggregated_prompt = (
"Du bist ein Experte in der Verifizierung von Wikipedia-Artikeln für Unternehmen. "
"Für jeden der folgenden Einträge prüfe, ob der vorhandene Wikipedia-Artikel (URL, Absatz, Kategorien) plausibel passt. "
"Gib das Ergebnis für jeden Eintrag im Format aus:\n"
"Eintrag <Zeilennummer>: <Antwort>\n"
"Regeln:\n"
"- Bei Übereinstimmung: 'OK'\n"
"- Bei Nichtübereinstimmung: 'Alternativer Wikipedia-Artikel vorgeschlagen: <URL> | X | <Begründung>'\n"
"- Falls kein Artikel gefunden wurde: 'Kein Wikipedia-Eintrag vorhanden.'\n\n"
)
aggregated_prompt += "\n".join(batch_entries)
debug_print("Aggregierter Prompt für Verifizierungs-Batch erstellt.")
agg_token_count = "n.v."
@@ -479,6 +495,7 @@ def process_verification_only():
if line.strip().startswith(f"Eintrag {row_num}:"):
answer = line.split(":", 1)[1].strip()
break
if answer.upper() == "OK":
wiki_confirm = "OK"
alt_article = ""
@@ -496,29 +513,53 @@ def process_verification_only():
wiki_confirm = ""
alt_article = answer
wiki_explanation = answer
# Update Wiki-Validierungsergebnisse
main_sheet.update(values=[[wiki_confirm]], range_name=f"S{row_num}")
main_sheet.update(values=[[alt_article]], range_name=f"U{row_num}")
main_sheet.update(values=[[wiki_explanation]], range_name=f"V{row_num}")
# Branchenbewertung (Spalte W)
# *** Neuer Abschnitt: Website-Daten auslesen und in Spalte AR/AS schreiben ***
website_url = data[row_num-1][3] if len(data[row_num-1]) > 3 else "k.A."
website_raw = "k.A."
website_summary = "k.A."
if website_url.strip() != "" and website_url.strip().lower() != "k.a.":
website_raw = get_website_raw(website_url)
website_summary = summarize_website_content(website_raw)
try:
main_sheet.update(values=[[website_raw]], range_name=f"AR{row_num}")
debug_print(f"Zeile {row_num}: Spalte AR (Website Rohtext) aktualisiert: {website_raw[:100]}...")
except Exception as e:
debug_print(f"Zeile {row_num}: Fehler beim Update von Spalte AR: {e}")
try:
main_sheet.update(values=[[website_summary]], range_name=f"AS{row_num}")
debug_print(f"Zeile {row_num}: Spalte AS (Website Zusammenfassung) aktualisiert: {website_summary}")
except Exception as e:
debug_print(f"Zeile {row_num}: Fehler beim Update von Spalte AS: {e}")
else:
debug_print(f"Zeile {row_num}: Kein gültiger Website-URL vorhanden, Website-Scraping wird übersprungen.")
# Branchenbewertung (Spalte W, X, Y)
crm_branch = data[row_num-1][6] if len(data[row_num-1]) > 6 else "k.A."
ext_branch = data[row_num-1][7] if len(data[row_num-1]) > 7 else "k.A."
wiki_branch = data[row_num-1][14] if len(data[row_num-1]) > 14 else "k.A."
wiki_cats = data[row_num-1][17] if len(data[row_num-1]) > 17 else "k.A."
website_url = data[row_num-1][3] if len(data[row_num-1]) > 3 else "k.A."
website_raw = get_website_raw(website_url)
website_summary = summarize_website_content(website_raw)
branch_result = evaluate_branche_chatgpt(crm_branch, ext_branch, wiki_branch, wiki_cats, website_summary)
main_sheet.update(values=[[branch_result["branch"]]], range_name=f"W{row_num}")
main_sheet.update(values=[[branch_result["consistency"]]], range_name=f"X{row_num}")
main_sheet.update(values=[[branch_result["justification"]]], range_name=f"Y{row_num}")
# Aktualisiere Timestamps und Versionen
current_dt = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
main_sheet.update(values=[[current_dt]], range_name=f"AO{row_num}")
main_sheet.update(values=[[Config.VERSION]], range_name=f"AP{row_num}")
main_sheet.update(values=[[str(agg_token_count)]], range_name=f"AQ{row_num}")
debug_print(f"Zeile {row_num} verifiziert: Antwort: {answer}")
time.sleep(Config.RETRY_DELAY)
debug_print("Verifizierungs-Batch abgeschlossen.")
# ==================== List Metatitel, Description und Überschriften aus Websiten aus ====================
def scrape_website_details(url):
"""