diff --git a/brancheneinstufung.py b/brancheneinstufung.py index af39b998..b1d118cb 100644 --- a/brancheneinstufung.py +++ b/brancheneinstufung.py @@ -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}).")