This commit is contained in:
2025-04-11 12:12:16 +00:00
parent 35d73fe2eb
commit 101718960c

View File

@@ -107,9 +107,7 @@ def process_wiki_batch(main_sheet, data, start_row, end_row):
"""
Batch-Prozess für Wikipedia-Verifizierung (Wiki-Modus):
- Verarbeitet alle Zeilen von start_row bis end_row in Gruppen (Batchgröße = Config.BATCH_SIZE).
- Für jeden Batch wird ein aggregierter Prompt erstellt und an ChatGPT geschickt.
- Die Aggregat-Ergebnisse werden zeilenweise in Spalte S (Wiki-Validierung), T (alternativer Wiki-Artikel),
U (Wiki-Erklärung) und VY (Platzhalter) geschrieben.
- Ergebnisse werden in den Spalten S bis Y geschrieben.
"""
batch_size = Config.BATCH_SIZE
batches = []
@@ -135,12 +133,14 @@ def process_wiki_batch(main_sheet, data, start_row, end_row):
_process_batch(main_sheet, batches, row_numbers)
debug_print("Wiki batch processing completed.")
def process_website_batch(main_sheet, data, start_row, end_row):
"""
Batch-Prozess für Website-Scraping (Website-Modus):
- Für jede Zeile von start_row bis end_row wird, falls eine CRM-Website vorhanden ist,
get_website_raw aufgerufen, um den Rohtext abzurufen, und summarize_website_content zur Zusammenfassung.
- Die Ergebnisse werden in Spalte AR (Website Rohtext) und AS (Website Zusammenfassung) geschrieben.
- Für jede Zeile von start_row bis end_row werden Website-Rohtext (get_website_raw) und
Zusammenfassung (summarize_website_content) abgerufen.
- Ergebnisse werden in Spalte AR (Rohtext) und AS (Zusammenfassung) geschrieben.
- Am Ende jeder Zeile wird der Zeitstempel (Spalte AO) und Version (Spalte AP) gesetzt.
"""
for i in range(start_row, end_row + 1):
row = data[i - 1]
@@ -153,19 +153,24 @@ def process_website_batch(main_sheet, data, start_row, end_row):
try:
main_sheet.update(values=[[raw_text]], range_name=f"AR{i}")
main_sheet.update(values=[[summary]], range_name=f"AS{i}")
debug_print(f"Zeile {i}: Website-Daten aktualisiert.")
current_timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
main_sheet.update(values=[[current_timestamp]], range_name=f"AO{i}")
main_sheet.update(values=[[Config.VERSION]], range_name=f"AP{i}")
debug_print(f"Zeile {i}: Website-Daten aktualisiert | Zeitstempel: {current_timestamp}, Version: {Config.VERSION}")
except Exception as e:
debug_print(f"Fehler beim Updaten der Website-Daten in Zeile {i}: {e}")
time.sleep(Config.RETRY_DELAY)
debug_print("Website batch processing completed.")
def process_branch_batch(main_sheet, data, start_row, end_row):
"""
Batch-Prozess für Brancheneinschätzung (Branch-Modus):
- Für jede Zeile von start_row bis end_row werden die relevanten Felder für die Brancheneinschätzung ausgelesen.
- Es werden evaluate_branche_chatgpt aufgerufen, die das Branchenergebnis als Dictionary zurückgibt.
- Die Ergebnisse werden in Spalte W (Chat Vorschlag Branche), X (Chat Konsistenz Branche)
und Y (Chat Begründung Abweichung Branche) geschrieben.
- Für jede Zeile von start_row bis end_row werden relevante Felder ausgelesen und
evaluate_branche_chatgpt aufgerufen.
- Das Ergebnis (Dictionary mit "branch", "consistency", "justification") wird in
Spalte W (Branch), X (Konsistenz) und Y (Begründung) geschrieben.
- Für jede verarbeitete Zeile werden zudem der Zeitstempel (Spalte AO) und Version (Spalte AP) gesetzt.
"""
for i in range(start_row, end_row + 1):
row = data[i - 1]
@@ -173,25 +178,30 @@ def process_branch_batch(main_sheet, data, start_row, end_row):
beschreibung = row[7] if len(row) > 7 else ""
wiki_branche = row[14] if len(row) > 14 else ""
wiki_kategorien = row[17] if len(row) > 17 else ""
# Website Zusammenfassung aus Spalte AS (Index 45, wenn vorhanden)
website_summary = row[44] if len(row) > 44 else ""
result = evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kategorien, website_summary)
try:
main_sheet.update(values=[[result["branch"]]], range_name=f"W{i}")
main_sheet.update(values=[[result["consistency"]]], range_name=f"X{i}")
main_sheet.update(values=[[result["justification"]]], range_name=f"Y{i}")
debug_print(f"Zeile {i}: Branch-Einschätzung aktualisiert: {result}")
current_timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
main_sheet.update(values=[[current_timestamp]], range_name=f"AO{i}")
main_sheet.update(values=[[Config.VERSION]], range_name=f"AP{i}")
debug_print(f"Zeile {i}: Branch-Einschätzung aktualisiert: {result} | Zeitstempel: {current_timestamp}, Version: {Config.VERSION}")
except Exception as e:
debug_print(f"Fehler beim Updaten der Branch-Daten in Zeile {i}: {e}")
time.sleep(Config.RETRY_DELAY)
debug_print("Branch batch processing completed.")
def run_dispatcher(mode, row_limit=None):
"""
Dispatcher-Funktion:
- Ermittelt aus dem Google Sheet ab Zeile 7 die erste Zeile, in der in Spalte AO (Index 41) kein Zeitstempel steht.
- Legt den zu verarbeitenden Bereich fest: ab diesem Startpunkt werden row_limit Zeilen (falls angegeben) verarbeitet.
- Basierend auf dem Modus-Parameter (wiki, website, branch, combined) werden die entsprechenden Batch-Prozesse gestartet.
- Ermittelt ab Zeile 7 die erste Zeile, in der in Spalte AO (Index 41) kein Zeitstempel steht.
- Legt den zu verarbeitenden Bereich fest: Ab diesem Startpunkt werden row_limit Zeilen (falls angegeben)
verarbeitet.
- Basierend auf dem mode-Parameter ("wiki", "website", "branch", "combined") werden die entsprechenden
Batch-Prozesse gestartet.
"""
debug_print(f"Starte Dispatcher im Modus '{mode}' mit row_limit={row_limit}.")
gc = gspread.authorize(ServiceAccountCredentials.from_json_keyfile_name(
@@ -749,7 +759,8 @@ def _process_batch(main_sheet, batches, row_numbers):
"""
Hilfsfunktion: Bearbeitet einen Batch, indem ein aggregierter Prompt erstellt und
die aggregierte Antwort zeilenweise den entsprechenden Zeilennummern zugeordnet wird.
Die Ergebnisse werden in Spalten S bis Y geschrieben.
Die Ergebnisse werden in den Spalten S bis Y geschrieben, und anschließend wird
für jede Zeile der aktuelle Zeitstempel (Spalte AO) sowie die Versionsnummer (Spalte AP) eingetragen.
"""
aggregated_prompt = (
"Du bist ein Experte in der Verifizierung von Wikipedia-Artikeln für Unternehmen. "
@@ -816,7 +827,11 @@ def _process_batch(main_sheet, batches, row_numbers):
main_sheet.update(values=[[alt_article]], range_name=f"T{current_row}")
main_sheet.update(values=[[wiki_explanation]], range_name=f"U{current_row}")
main_sheet.update(values=[["", "", "", ""]], range_name=f"V{current_row}:Y{current_row}")
debug_print(f"Zeile {current_row} verifiziert: Antwort: {answer}")
# Neu: Setze Zeitstempel in Spalte AO und Version in Spalte AP
current_timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
main_sheet.update(values=[[current_timestamp]], range_name=f"AO{current_row}")
main_sheet.update(values=[[Config.VERSION]], range_name=f"AP{current_row}")
debug_print(f"Zeile {current_row} verifiziert: Antwort: {answer} | Zeitstempel: {current_timestamp}, Version: {Config.VERSION}")
except Exception as e:
debug_print(f"Fehler beim Updaten der Zeile {current_row}: {e}")
time.sleep(Config.RETRY_DELAY)