data_processor.py aktualisiert

This commit is contained in:
2025-07-20 06:03:11 +00:00
parent 148267b8ba
commit 6f21ab9eb1

View File

@@ -1021,7 +1021,7 @@ class DataProcessor:
self.logger.info(f"Re-Evaluierung abgeschlossen. {processed_count_actual} Zeilen verarbeitet.") self.logger.info(f"Re-Evaluierung abgeschlossen. {processed_count_actual} Zeilen verarbeitet.")
def process_wiki_verify(self, limit=None, start_sheet_row=None, end_sheet_row=None): def process_wiki_verify(self, limit=None, start_sheet_row=None, end_sheet_row=None):
""" """
Iteriert durch die Zeilen und führt eine ChatGPT-basierte Verifizierung des Iteriert durch die Zeilen und führt eine ChatGPT-basierte Verifizierung des
in Spalte R ("Wiki URL") gefundenen Artikels durch. in Spalte R ("Wiki URL") gefundenen Artikels durch.
@@ -1058,33 +1058,47 @@ class DataProcessor:
if not verif_timestamp and wiki_url and "wikipedia.org" in wiki_url.lower(): if not verif_timestamp and wiki_url and "wikipedia.org" in wiki_url.lower():
self.logger.info(f"Zeile {current_row_num}: Verifizierung nötig, füge zur Queue hinzu.") self.logger.info(f"Zeile {current_row_num}: Verifizierung nötig, füge zur Queue hinzu.")
company_name = self._get_cell_value_safe(row_data, "CRM Name")
website = self._get_cell_value_safe(row_data, "CRM Website")
try: try:
verification_result = verify_wiki_article_chatgpt( # --- START KORREKTURBLOCK ---
company_name=company_name, website=website, wiki_url=wiki_url # 1. Sammle alle notwendigen Daten für den neuen, kontextreichen Aufruf
) company_name = self._get_cell_value_safe(row_data, "CRM Name")
website = self._get_cell_value_safe(row_data, "CRM Website")
parent_name = self._get_cell_value_safe(row_data, "System Vorschlag Parent Account")
# 2. Lade den Artikel-Kontext
self.logger.debug(f" Lade Kontext für Artikel: {wiki_url}")
page_content = self.wiki_scraper.extract_company_data(wiki_url)
if not page_content or 'FEHLER' in str(page_content.get('title')):
self.logger.error(f" Konnte Kontext für URL {wiki_url} nicht laden. Überspringe KI-Verifizierung für diese Zeile.")
continue # Gehe zur nächsten Zeile
# +++ START: NEUER VALIDIERUNGS-BLOCK +++ # 3. Rufe die neue, korrekte Funktion auf
final_suggested_url = verification_result.get("suggested_url", "") verification_result = verify_wiki_article_chatgpt(
# Prüfe nur, wenn der Vorschlag wie eine Wikipedia-URL aussieht company_name=company_name,
parent_name=parent_name,
website=website,
wiki_title=page_content.get('title', 'k.A.'),
wiki_summary=page_content.get('first_paragraph', 'k.A.')
)
# --- ENDE KORREKTURBLOCK ---
# Ihre bestehende Logik zur Validierung der vorgeschlagenen URL bleibt erhalten
final_suggested_url = verification_result.get("suggestion", "") # Geändert von "suggested_url"
if final_suggested_url and "wikipedia.org" in final_suggested_url.lower(): if final_suggested_url and "wikipedia.org" in final_suggested_url.lower():
if not is_valid_wikipedia_article_url(final_suggested_url): 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.") self.logger.warning(f" -> KI-Vorschlag '{final_suggested_url}' ist eine ungültige URL.")
final_suggested_url = f"Vorschlag (ungültig): {final_suggested_url}" final_suggested_url = f"Vorschlag (ungültig): {final_suggested_url}"
else: else:
self.logger.info(f" -> KI-Vorschlag '{final_suggested_url}' ist eine gültige, erreichbare URL.") self.logger.info(f" -> KI-Vorschlag '{final_suggested_url}' ist eine gültige URL.")
# +++ ENDE: NEUER VALIDIERUNGS-BLOCK +++
now_timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") now_timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# Ihre bestehende Update-Logik, aber mit der sicheren get_col_idx Funktion
updates_for_row = [ updates_for_row = [
{'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Chat Wiki Konsistenzpruefung")["index"] + 1)}{current_row_num}', 'values': [[verification_result.get("consistency")]]}, {'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Chat Wiki Konsistenzpruefung") + 1)}{current_row_num}', 'values': [[verification_result.get("consistency")]]},
{'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Chat Begründung Wiki Inkonsistenz")["index"] + 1)}{current_row_num}', 'values': [[verification_result.get("justification")]]}, {'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Chat Begründung Wiki Inkonsistenz") + 1)}{current_row_num}', 'values': [[verification_result.get("justification")]]},
# Verwende die validierte URL {'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Chat Vorschlag Wiki Artikel") + 1)}{current_row_num}', 'values': [[final_suggested_url]]},
{'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Chat Vorschlag Wiki Artikel")["index"] + 1)}{current_row_num}', 'values': [[final_suggested_url]]}, {'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Wiki Verif. Timestamp") + 1)}{current_row_num}', 'values': [[now_timestamp]]}
{'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Wiki Verif. Timestamp")["index"] + 1)}{current_row_num}', 'values': [[now_timestamp]]}
] ]
all_updates.extend(updates_for_row) all_updates.extend(updates_for_row)
@@ -1100,16 +1114,13 @@ class DataProcessor:
time.sleep(1) time.sleep(1)
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
except Exception as e: except Exception as e:
self.logger.error(f"Unerwarteter Fehler bei Verarbeitung von Zeile {current_row_num}: {e}", exc_info=True) self.logger.error(f"Unerwarteter Fehler bei Verarbeitung von Zeile {current_row_num}: {e}", exc_info=True)
else: else:
self.logger.debug(f"Zeile {current_row_num}: Übersprungen (Timestamp vorhanden oder keine URL).") self.logger.debug(f"Zeile {current_row_num}: Übersprungen (Timestamp vorhanden oder keine URL).")
if all_updates: if all_updates:
self.logger.info(f"Schleife beendet. Schreibe die letzten {len(all_updates)} Zell-Updates für {processed_count_in_batch} Zeilen...") self.logger.info(f"Schleife beendet. Schreibe die letzten {len(all_updates)} Zell-Updates...")
self.sheet_handler.batch_update_cells(all_updates) self.sheet_handler.batch_update_cells(all_updates)
self.logger.info("Finaler Batch erfolgreich geschrieben.") self.logger.info("Finaler Batch erfolgreich geschrieben.")