This commit is contained in:
2025-07-18 11:21:25 +00:00
parent 427f87f753
commit b29b546eed

View File

@@ -934,7 +934,7 @@ class DataProcessor:
process_ml_steps=True):
"""
Verarbeitet nur Zeilen, die in Spalte A mit 'x' markiert sind.
NEU: Leert zuerst alle abgeleiteten Spalten für eine saubere Neubewertung.
Leert zuerst alle abgeleiteten Spalten für eine saubere Neubewertung.
"""
self.logger.info(
f"Starte Re-Evaluierungsmodus (Spalte A = 'x'). Max. Zeilen: {row_limit if row_limit is not None else 'Unbegrenzt'}")
@@ -964,6 +964,66 @@ class DataProcessor:
self.logger.info(f"{found_count} Zeilen mit ReEval-Flag 'x' gefunden.")
if found_count == 0: return
# --- AB HIER BEGINNT DER FEHLENDE TEIL ---
# Spalten definieren, die vor der Neubewertung geleert werden sollen
cols_to_clear_keys = [
"Wiki Sitz Stadt", "Wiki Sitz Land", "Wiki Absatz", "Wiki Branche",
"Wiki Umsatz", "Wiki Mitarbeiter", "Wiki Kategorien", "Wikipedia Timestamp",
"Wiki Verif. Timestamp", "SerpAPI Wiki Search Timestamp", "Chat Wiki Konsistenzpruefung",
"Chat Begründung Wiki Inkonsistenz", "Chat Vorschlag Wiki Artikel", "Begründung bei Abweichung",
"Website Rohtext", "Website Zusammenfassung", "Website Meta-Details", "Website Scrape Timestamp", "URL Prüfstatus",
"Chat Vorschlag Branche", "Chat Branche Konfidenz", "Chat Konsistenz Branche",
"Chat Begruendung Abweichung Branche", "Finaler Umsatz (Wiki>CRM)", "Finaler Mitarbeiter (Wiki>CRM)",
"Geschaetzter Techniker Bucket", "Plausibilität Umsatz", "Plausibilität Mitarbeiter",
"Plausibilität Umsatz/MA Ratio", "Abweichung Umsatz CRM/Wiki", "Abweichung MA CRM/Wiki",
"Plausibilität Begründung", "Plausibilität Prüfdatum", "Timestamp letzte Pruefung", "Version", "Tokens",
"FSM Pitch", "FSM Pitch Timestamp"
]
clear_updates = []
for task in rows_to_process:
row_num = task['row_num']
for key in cols_to_clear_keys:
col_idx = COLUMN_MAP.get(key)
if col_idx is not None:
col_letter = self.sheet_handler._get_col_letter(col_idx + 1)
clear_updates.append({'range': f'{col_letter}{row_num}', 'values': [['']]})
if clear_updates:
self.logger.info(f"Leere {len(clear_updates)} Zellen für {found_count} Re-Eval-Zeilen zur Vorbereitung...")
self.sheet_handler.batch_update_cells(clear_updates)
self.logger.info("Vorbereitung abgeschlossen. Starte eigentliche Verarbeitung...")
time.sleep(2)
self.sheet_handler.load_data()
# Verarbeitung der Zeilen nach dem Leeren
processed_count_actual = 0
steps_to_run_set = set(key for key, value in {'wiki': process_wiki_steps, 'chat': process_chatgpt_steps, 'web': process_website_steps, 'ml_predict': process_ml_steps}.items() if value)
fresh_data = self.sheet_handler.get_all_data_with_headers()
for task in rows_to_process:
if row_limit is not None and processed_count_actual >= row_limit:
self.logger.info(f"Zeilenlimit ({row_limit}) fuer Re-Evaluation erreicht.")
break
current_row_data = fresh_data[task['row_num'] - 1]
self.logger.info(f"Bearbeite Re-Eval Zeile {task['row_num']}...")
processed_count_actual += 1
try:
self._process_single_row(
row_num_in_sheet=task['row_num'],
row_data=current_row_data,
steps_to_run=steps_to_run_set,
force_reeval=True,
clear_x_flag=clear_flag
)
except Exception as e_proc_reval:
self.logger.exception(f"FEHLER bei Re-Evaluation von Zeile {task['row_num']}: {e_proc_reval}")
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):
"""
Iteriert durch die Zeilen und führt eine ChatGPT-basierte Verifizierung des