data_processor.py aktualisiert

This commit is contained in:
2025-07-20 06:03:11 +00:00
parent 09c9bf3090
commit c3434c03aa

View File

@@ -1021,7 +1021,7 @@ class DataProcessor:
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
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():
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:
verification_result = verify_wiki_article_chatgpt(
company_name=company_name, website=website, wiki_url=wiki_url
)
# --- START KORREKTURBLOCK ---
# 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 +++
final_suggested_url = verification_result.get("suggested_url", "")
# Prüfe nur, wenn der Vorschlag wie eine Wikipedia-URL aussieht
# 3. Rufe die neue, korrekte Funktion auf
verification_result = verify_wiki_article_chatgpt(
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 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}"
else:
self.logger.info(f" -> KI-Vorschlag '{final_suggested_url}' ist eine gültige, erreichbare URL.")
# +++ ENDE: NEUER VALIDIERUNGS-BLOCK +++
self.logger.info(f" -> KI-Vorschlag '{final_suggested_url}' ist eine gültige URL.")
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 = [
{'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 Begründung Wiki Inkonsistenz")["index"] + 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")["index"] + 1)}{current_row_num}', 'values': [[final_suggested_url]]},
{'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Wiki Verif. Timestamp")["index"] + 1)}{current_row_num}', 'values': [[now_timestamp]]}
{'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") + 1)}{current_row_num}', 'values': [[verification_result.get("justification")]]},
{'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("Wiki Verif. Timestamp") + 1)}{current_row_num}', 'values': [[now_timestamp]]}
]
all_updates.extend(updates_for_row)
@@ -1100,16 +1114,13 @@ class DataProcessor:
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:
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).")
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.logger.info("Finaler Batch erfolgreich geschrieben.")