This commit is contained in:
2025-05-06 06:52:01 +00:00
parent 1e61c16936
commit bc028371d2

View File

@@ -2778,7 +2778,7 @@ class DataProcessor:
# Diese Methode gehört in die Klasse DataProcessor.
# @retry_on_failure # Nicht sinnvoll auf dieser Orchestrierungsebene
def _process_single_row(self, row_num_in_sheet, row_data,
steps_to_run, force_reeval=False):
steps_to_run, force_reeval=False, clear_x_flag=False): # NEUES ARGUMENT hinzugefügt
"""
Verarbeitet die Daten für eine einzelne Zeile im Sheet, führt ausgewählte
Anreicherungs- und Analyseprozesse durch, basierend auf Timestamps/Status
@@ -3348,6 +3348,27 @@ class DataProcessor:
# else: self.logger.error("FEHLER: Spaltenschlüssel 'Tokens' nicht in COLUMN_MAP gefunden.")
pass # Token-Zählung Implementierung verschoben
# --- 5b. ReEval Flag (A) löschen (nur wenn im Re-Eval Modus und gewünscht) ---
# Dieses Update wird am Ende hinzugefügt, wenn die Verarbeitung erfolgreich (oder zumindest versucht) wurde
# und der Aufrufer (process_reevaluation_rows) dies angefordert hat.
if force_reeval and clear_x_flag:
# Ermitteln Sie den Index der ReEval Flag Spalte
reeval_col_idx = COLUMN_MAP.get("ReEval Flag")
if reeval_col_idx is not None:
flag_col_letter = self.sheet_handler._get_col_letter(reeval_col_idx + 1)
if flag_col_letter:
# Fügen Sie das Update zum Löschen des 'x'-Flags zur Liste hinzu
# Es wird nur gelöscht, wenn die Zeile ansonsten erfolgreich bis hierhin kam.
# Wenn eine schwere Exception in _process_single_row auftrat, wird diese Zeile nicht erreicht.
updates.append({'range': f'{flag_col_letter}{row_num_in_sheet}', 'values': [['']]})
self.logger.debug(f" -> Update zum Löschen des ReEval-Flags (A{row_num_in_sheet}) vorgemerkt.")
else:
self.logger.error(f"FEHLER: Konnte Spaltenbuchstaben für 'ReEval Flag' ({reeval_col_idx+1}) nicht ermitteln. Flag kann nicht gelöscht werden.")
else:
self.logger.error("FEHLER: 'ReEval Flag' Spaltenindex nicht in COLUMN_MAP gefunden. Flag kann nicht gelöscht werden.")
# --- 6. Batch Update für diese Zeile ---
# Führen Sie das Batch-Update für alle gesammelten Änderungen dieser Zeile durch.
@@ -3459,7 +3480,7 @@ class DataProcessor:
# Verarbeitung der markierten Zeilen
processed_count = 0
updates_clear_flag = [] # Updates zum Löschen des 'x'-Flags
#updates_clear_flag = [] # Updates zum Löschen des 'x'-Flags
rows_actually_processed = [] # Liste der Zeilen, die tatsächlich verarbeitet wurden
for task in rows_to_process:
@@ -3478,18 +3499,19 @@ class DataProcessor:
row_num_in_sheet = row_num,
row_data = row_data,
steps_to_run = steps_to_run_set, # <-- Übergibt die ausgewählten Schritte
force_reeval = True # <-- Erzwingt Re-Evaluation unabhängig von Timestamps
force_reeval = True, # <-- Erzwingt Re-Evaluation unabhängig von Timestamps
clear_x_flag = clear_flag # <-- ÜBERGIBT, OB DAS FLAG GELÖSCHT WERDEN SOLL
)
processed_count += 1 # Nur zählen, wenn _process_single_row keine Exception geworfen hat
rows_actually_processed.append(row_num) # Nur Zeilen hinzufügen, die erfolgreich an _process_single_row übergeben wurden
# Vorbereiten des Updates zum Löschen des 'x'-Flags (falls gewünscht)
if clear_flag:
flag_col_letter = self.sheet_handler._get_col_letter(reeval_col_idx + 1)
if flag_col_letter:
updates_clear_flag.append({'range': f'{flag_col_letter}{row_num}', 'values': [['']]})
else:
self.logger.error(f"Fehler: Konnte Spaltenbuchstaben für 'ReEval Flag' ({reeval_col_idx+1}) nicht ermitteln.")
#if clear_flag:
# flag_col_letter = self.sheet_handler._get_col_letter(reeval_col_idx + 1)
# if flag_col_letter:
# updates_clear_flag.append({'range': f'{flag_col_letter}{row_num}', 'values': [['']]})
# else:
# self.logger.error(f"Fehler: Konnte Spaltenbuchstaben für 'ReEval Flag' ({reeval_col_idx+1}) nicht ermitteln.")
except Exception as e_proc:
# Wenn _process_single_row einen Fehler wirft, fangen wir ihn hier, loggen ihn
@@ -3498,14 +3520,14 @@ class DataProcessor:
# Hier könnten Sie einen Fehlerindikator in eine spezielle Spalte schreiben
# Lösche Flags am Ende in einem Batch-Update
if clear_flag and updates_clear_flag:
self.logger.info(f"Lösche ReEval-Flags für {len(updates_clear_flag)} erfolgreich verarbeitete Zeilen ({rows_actually_processed})...")
# Nutzen Sie die batch_update_cells Methode des Sheet Handlers
success = self.sheet_handler.batch_update_cells(updates_clear_flag)
if success:
self.logger.info("ReEval-Flags erfolgreich gelöscht.")
else:
self.logger.error("FEHLER beim Löschen der ReEval-Flags nach Re-Evaluation.")
#if clear_flag and updates_clear_flag:
# self.logger.info(f"Lösche ReEval-Flags für {len(updates_clear_flag)} erfolgreich verarbeitete Zeilen ({rows_actually_processed})...")
# # Nutzen Sie die batch_update_cells Methode des Sheet Handlers
# success = self.sheet_handler.batch_update_cells(updates_clear_flag)
# if success:
# self.logger.info("ReEval-Flags erfolgreich gelöscht.")
# else:
# self.logger.error("FEHLER beim Löschen der ReEval-Flags nach Re-Evaluation.")
self.logger.info(f"Re-Evaluierung abgeschlossen. {processed_count} Zeilen verarbeitet (Gefunden: {found_count}, Limit: {row_limit}).")