bugfix
This commit is contained in:
@@ -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 V–Y (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)
|
||||
|
||||
Reference in New Issue
Block a user