Restore Wiki-Verify Mode
- FEATURE: Der `wiki_verify`-Modus wurde wiederhergestellt und ist nun über die CLI/das Menü aufrufbar. - FIX: `data_processor.py` enthält nun die `process_wiki_verify`-Methode, die gezielt Wikipedia-Artikel mittels ChatGPT verifiziert. - FIX: Dispatcher in `brancheneinstufung.py` erkennt und startet den `wiki_verify`-Modus korrekt.
This commit is contained in:
@@ -963,6 +963,73 @@ class DataProcessor:
|
||||
self.logger.info(f"{found_count} Zeilen mit ReEval-Flag 'x' gefunden.")
|
||||
if found_count == 0: return
|
||||
|
||||
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.
|
||||
"""
|
||||
self.logger.info("Starte Modus: Wiki-Verifizierung via ChatGPT...")
|
||||
|
||||
if not self.sheet_handler.load_data():
|
||||
return
|
||||
|
||||
all_data = self.sheet_handler.get_all_data_with_headers()
|
||||
header_rows = self.sheet_handler._header_rows
|
||||
|
||||
start_row_idx = (start_sheet_row - 1) if start_sheet_row else header_rows
|
||||
end_row_idx = (end_sheet_row - 1) if end_sheet_row else len(all_data) -1
|
||||
|
||||
rows_to_check = all_data[start_row_idx : end_row_idx + 1]
|
||||
|
||||
processed_count = 0
|
||||
for idx, row_data in enumerate(rows_to_check):
|
||||
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 Wiki-Verifizierung.")
|
||||
break
|
||||
|
||||
# _needs_wiki_verification Logik hier direkt implementiert
|
||||
verif_timestamp = self._get_cell_value_safe(row_data, "Wiki Verif. Timestamp").strip()
|
||||
wiki_url = self._get_cell_value_safe(row_data, "Wiki URL").strip()
|
||||
|
||||
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 (Timestamp leer, URL vorhanden).")
|
||||
|
||||
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
|
||||
)
|
||||
|
||||
updates = []
|
||||
now_timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
|
||||
if verification_result:
|
||||
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")]]})
|
||||
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", "")]]})
|
||||
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", "")]]})
|
||||
|
||||
updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Wiki Verif. Timestamp"] + 1)}{current_row_num}', 'values': [[now_timestamp]]})
|
||||
|
||||
if updates:
|
||||
self.sheet_handler.batch_update_cells(updates)
|
||||
|
||||
processed_count += 1
|
||||
time.sleep(2) # Kurze Pause, um API-Limits zu respektieren
|
||||
|
||||
except Exception as e:
|
||||
self.logger.error(f"Fehler bei der Wiki-Verifizierung für Zeile {current_row_num}: {e}")
|
||||
else:
|
||||
self.logger.debug(f"Zeile {current_row_num}: Übersprungen (Timestamp vorhanden oder keine URL).")
|
||||
|
||||
self.logger.info(f"Wiki-Verifizierung abgeschlossen. {processed_count} Zeilen verarbeitet.")
|
||||
|
||||
|
||||
|
||||
# NEU: Spalten definieren, die vor der Neubewertung geleert werden sollen
|
||||
cols_to_clear_keys = [
|
||||
# WICHTIG: "Wiki URL" (R) und "CRM Vorschlag Wiki URL" (N) werden NICHT mehr geleert,
|
||||
|
||||
Reference in New Issue
Block a user