data_processor.py aktualisiert
This commit is contained in:
@@ -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.")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user