From c7c3c818ba7778a3f5a3f4800490dc6ee2029c4e Mon Sep 17 00:00:00 2001 From: Floke Date: Fri, 18 Jul 2025 12:47:46 +0000 Subject: [PATCH] data_processor.py aktualisiert --- data_processor.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/data_processor.py b/data_processor.py index 26647de4..582a6233 100644 --- a/data_processor.py +++ b/data_processor.py @@ -1027,9 +1027,9 @@ class DataProcessor: """ Iteriert durch die Zeilen und führt eine ChatGPT-basierte Verifizierung des in Spalte R ("Wiki URL") gefundenen Artikels durch. - Arbeitet im Batch-Modus, schreibt alle BATCH_SIZE Zeilen ins Sheet. + Validiert von der KI vorgeschlagene URLs auf Existenz. """ - BATCH_SIZE = 20 # Wie viele Zeilen verarbeiten, bevor geschrieben wird + BATCH_SIZE = 20 self.logger.info(f"Starte Modus: Wiki-Verifizierung via ChatGPT (Batch-Größe: {BATCH_SIZE})...") if not self.sheet_handler.load_data(): @@ -1068,12 +1068,24 @@ class DataProcessor: company_name=company_name, website=website, wiki_url=wiki_url ) + # +++ START: NEUER VALIDIERUNGS-BLOCK +++ + final_suggested_url = verification_result.get("suggested_url", "") + # Prüfe nur, wenn der Vorschlag wie eine Wikipedia-URL aussieht + if final_suggested_url and "wikipedia.org" in final_suggested_url.lower(): + if not is_valid_wikipedia_article_url(final_suggested_url): + self.logger.warning(f" -> KI-Vorschlag '{final_suggested_url}' ist eine halluzinierte/ungültige URL. Markiere als ungültig.") + final_suggested_url = f"Vorschlag (ungültig): {final_suggested_url}" + else: + self.logger.info(f" -> KI-Vorschlag '{final_suggested_url}' ist eine gültige, erreichbare URL.") + # +++ ENDE: NEUER VALIDIERUNGS-BLOCK +++ + now_timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") updates_for_row = [ {'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Wiki Konsistenzpruefung"]["index"] + 1)}{current_row_num}', 'values': [[verification_result.get("consistency")]]}, {'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Begründung Wiki Inkonsistenz"]["index"] + 1)}{current_row_num}', 'values': [[verification_result.get("justification")]]}, - {'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Vorschlag Wiki Artikel"]["index"] + 1)}{current_row_num}', 'values': [[verification_result.get("suggested_url")]]}, + # Verwende die validierte URL + {'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Vorschlag Wiki Artikel"]["index"] + 1)}{current_row_num}', 'values': [[final_suggested_url]]}, {'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Wiki Verif. Timestamp"]["index"] + 1)}{current_row_num}', 'values': [[now_timestamp]]} ] all_updates.extend(updates_for_row) @@ -1092,7 +1104,7 @@ class DataProcessor: except KeyError as ke: self.logger.critical(f"FATALER KEY_ERROR in Zeile {current_row_num}: Die Spalte '{ke}' existiert nicht im COLUMN_MAP in config.py! Breche Verarbeitung dieser Zeile ab.", exc_info=False) - continue # Mache mit der nächsten Zeile weiter + continue except Exception as e: self.logger.error(f"Unerwarteter Fehler bei Verarbeitung von Zeile {current_row_num}: {e}", exc_info=True) else: