Wiki verify update
This commit is contained in:
@@ -968,9 +968,10 @@ class DataProcessor:
|
||||
"""
|
||||
Iteriert durch die Zeilen und führt eine ChatGPT-basierte Verifizierung des
|
||||
in Spalte R ("Wiki URL") gefundenen Artikels durch.
|
||||
NEU: Arbeitet im Batch-Modus, sammelt alle Updates und schreibt sie am Ende.
|
||||
Arbeitet im Batch-Modus, schreibt alle BATCH_SIZE Zeilen ins Sheet.
|
||||
"""
|
||||
self.logger.info("Starte Modus: Wiki-Verifizierung via ChatGPT (Batch-Modus)...")
|
||||
BATCH_SIZE = 20 # Wie viele Zeilen verarbeiten, bevor geschrieben wird
|
||||
self.logger.info(f"Starte Modus: Wiki-Verifizierung via ChatGPT (Batch-Größe: {BATCH_SIZE})...")
|
||||
|
||||
if not self.sheet_handler.load_data():
|
||||
return
|
||||
@@ -984,13 +985,14 @@ class DataProcessor:
|
||||
rows_to_process = all_data[start_row_idx : end_row_idx + 1]
|
||||
|
||||
processed_count = 0
|
||||
all_updates = [] # Liste zum Sammeln aller Updates
|
||||
total_processed_since_start = 0
|
||||
all_updates = []
|
||||
|
||||
for idx, row_data in enumerate(rows_to_process):
|
||||
current_row_num = start_row_idx + idx + 1
|
||||
|
||||
if limit is not None and processed_count >= limit:
|
||||
self.logger.info(f"Limit von {limit} Zeilen erreicht. Stoppe Sammelphase.")
|
||||
if limit is not None and total_processed_since_start >= limit:
|
||||
self.logger.info(f"Globales Limit von {limit} Zeilen erreicht. Stoppe.")
|
||||
break
|
||||
|
||||
verif_timestamp = self._get_cell_value_safe(row_data, "Wiki Verif. Timestamp").strip()
|
||||
@@ -1004,37 +1006,45 @@ class DataProcessor:
|
||||
|
||||
try:
|
||||
verification_result = verify_wiki_article_chatgpt(
|
||||
company_name=company_name,
|
||||
website=website,
|
||||
wiki_url=wiki_url
|
||||
company_name=company_name, website=website, wiki_url=wiki_url
|
||||
)
|
||||
|
||||
now_timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
|
||||
if verification_result:
|
||||
all_updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Wiki Konsistenzpruefung"] + 1)}{current_row_num}', 'values': [[verification_result.get("consistency", "FEHLER")]]})
|
||||
all_updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Begründung Wiki Inkonsistenz"] + 1)}{current_row_num}', 'values': [[verification_result.get("justification", "")]]})
|
||||
all_updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Vorschlag Wiki Artikel"] + 1)}{current_row_num}', 'values': [[verification_result.get("suggested_url", "")]]})
|
||||
|
||||
all_updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Wiki Verif. Timestamp"] + 1)}{current_row_num}', 'values': [[now_timestamp]]})
|
||||
# Updates für diese eine Zeile sammeln
|
||||
updates_for_row = [
|
||||
{'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Wiki Konsistenzpruefung"] + 1)}{current_row_num}', 'values': [[verification_result.get("consistency")]]},
|
||||
{'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Begründung Wiki Inkonsistenz"] + 1)}{current_row_num}', 'values': [[verification_result.get("justification")]]},
|
||||
{'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Vorschlag Wiki Artikel"] + 1)}{current_row_num}', 'values': [[verification_result.get("suggested_url")]]},
|
||||
{'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Wiki Verif. Timestamp"] + 1)}{current_row_num}', 'values': [[now_timestamp]]}
|
||||
]
|
||||
all_updates.extend(updates_for_row)
|
||||
|
||||
processed_count += 1
|
||||
time.sleep(2)
|
||||
total_processed_since_start += 1
|
||||
|
||||
# Wenn Batch-Größe erreicht, schreiben und zurücksetzen
|
||||
if processed_count >= BATCH_SIZE:
|
||||
self.logger.info(f"Batch-Größe ({BATCH_SIZE}) erreicht. Schreibe {len(all_updates)} Zell-Updates...")
|
||||
self.sheet_handler.batch_update_cells(all_updates)
|
||||
self.logger.info("Batch erfolgreich geschrieben.")
|
||||
all_updates = [] # Liste für den nächsten Batch leeren
|
||||
processed_count = 0 # Zähler für den nächsten Batch zurücksetzen
|
||||
|
||||
time.sleep(1) # API-Pause
|
||||
|
||||
except Exception as e:
|
||||
self.logger.error(f"Fehler bei der Wiki-Verifizierung für Zeile {current_row_num}: {e}")
|
||||
self.logger.error(f"Unerwarteter Fehler bei Verarbeitung von Zeile {current_row_num}: {e}", exc_info=True)
|
||||
else:
|
||||
self.logger.debug(f"Zeile {current_row_num}: Übersprungen (Timestamp vorhanden oder keine URL).")
|
||||
|
||||
# Schreibe alle gesammelten Updates auf einmal ins Sheet
|
||||
# Schreibe die restlichen gesammelten Updates am Ende des Laufs
|
||||
if all_updates:
|
||||
self.logger.info(f"Sammelphase abgeschlossen. Schreibe {len(all_updates)} Zell-Updates für {processed_count} Zeilen ins Google Sheet...")
|
||||
self.logger.info(f"Schleife beendet. Schreibe die letzten {len(all_updates)} Zell-Updates für {processed_count} Zeilen...")
|
||||
self.sheet_handler.batch_update_cells(all_updates)
|
||||
self.logger.info("Batch-Update erfolgreich abgeschlossen.")
|
||||
else:
|
||||
self.logger.info("Keine Zeilen zur Verifizierung gefunden oder keine Updates generiert.")
|
||||
self.logger.info("Finaler Batch erfolgreich geschrieben.")
|
||||
|
||||
self.logger.info(f"Wiki-Verifizierung abgeschlossen. {processed_count} Zeilen verarbeitet.")
|
||||
self.logger.info(f"Wiki-Verifizierung abgeschlossen. {total_processed_since_start} Zeilen insgesamt verarbeitet.")
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user