diff --git a/data_processor.py b/data_processor.py index 52bf3708..65c22486 100644 --- a/data_processor.py +++ b/data_processor.py @@ -1023,10 +1023,10 @@ class DataProcessor: self.logger.info(f"Re-Evaluierung abgeschlossen. {processed_count_actual} Zeilen verarbeitet.") - def process_fsm_pitch_generation(self, start_sheet_row=None, end_sheet_row=None, limit=None): +def process_fsm_pitch(self, start_sheet_row=None, end_sheet_row=None, limit=None): """ - Generiert FSM-Pitches für alle Zeilen, bei denen dieser fehlt, aber die - notwendigen Daten vorhanden sind. + Generiert FSM-Pitches für alle Zeilen, bei denen der FSM Pitch Timestamp fehlt, + aber die notwendigen Daten vorhanden sind. """ self.logger.info(f"Starte Modus 'fsm_pitch'. Bereich: {start_sheet_row or 'Start'}-{end_sheet_row or 'Ende'}, Limit: {limit or 'Unbegrenzt'}") @@ -1048,10 +1048,10 @@ class DataProcessor: break row_data = all_data[i] - fsm_pitch = self._get_cell_value_safe(row_data, "FSM Pitch").strip() + # NEUE PRÜFUNG: Nur Zeilen ohne Timestamp verarbeiten + timestamp = self._get_cell_value_safe(row_data, "FSM Pitch Timestamp").strip() - # Bedingung: Pitch fehlt, aber Name und Branche sind vorhanden - if not fsm_pitch: + if not timestamp: company_name = self._get_cell_value_safe(row_data, "CRM Name").strip() branche = self._get_cell_value_safe(row_data, "Chat Vorschlag Branche").strip() or self._get_cell_value_safe(row_data, "CRM Branche").strip() @@ -1066,6 +1066,7 @@ class DataProcessor: all_sheet_updates = [] processed_count = 0 + now_timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") for task in tasks: row_num = task['row_num'] @@ -1074,7 +1075,7 @@ class DataProcessor: self.logger.debug(f"Verarbeite FSM-Pitch für Zeile {row_num}...") try: - # Extrahiere alle notwendigen Daten für den Pitch + # ... (Logik zur Extraktion der Daten für den Pitch bleibt gleich) ... company_name = self._get_cell_value_safe(row_data, "CRM Name") branche = self._get_cell_value_safe(row_data, "Chat Vorschlag Branche") or self._get_cell_value_safe(row_data, "CRM Branche") website_summary = self._get_cell_value_safe(row_data, "Website Zusammenfassung") @@ -1086,23 +1087,32 @@ class DataProcessor: company_name, branche, website_summary, wiki_absatz, final_ma_val, crm_techniker_val ) + # Update für den Pitch all_sheet_updates.append({ 'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["FSM Pitch"] + 1)}{row_num}', 'values': [[fsm_pitch_text]] }) - processed_count += 1 + except Exception as e: self.logger.error(f"FEHLER bei FSM-Pitch-Generierung für Zeile {row_num}: {e}") + # Update für den Pitch mit Fehlermeldung all_sheet_updates.append({ 'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["FSM Pitch"] + 1)}{row_num}', 'values': [['k.A. (Fehler bei Generierung)']] }) + + # IMMER den Timestamp setzen, um eine erneute Verarbeitung zu verhindern + all_sheet_updates.append({ + 'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["FSM Pitch Timestamp"] + 1)}{row_num}', + 'values': [[now_timestamp]] + }) + processed_count += 1 if all_sheet_updates: - self.logger.info(f"Sende Batch-Update für {processed_count} generierte FSM-Pitches...") + self.logger.info(f"Sende Batch-Update für {processed_count} generierte FSM-Pitches und Timestamps...") self.sheet_handler.batch_update_cells(all_sheet_updates) - self.logger.info(f"FSM-Pitch-Generierung abgeschlossen. {processed_count} Pitches erstellt.") + self.logger.info(f"FSM-Pitch-Generierung abgeschlossen. {processed_count} Zeilen bearbeitet.")