Optimized Batching & Advanced Model for FSM Pitch

- FEATURE: FSM-Pitch-Generierung in `data_processor.py` schreibt Ergebnisse nun in regelmäßigen Batches, um den Fortschritt sichtbar zu machen.
- UPGRADE: FSM-Pitch-Funktion in `helpers.py` verwendet nun explizit ein fortschrittlicheres GPT-4-Modell für qualitativ hochwertigere und spezifischere Ergebnisse.
- Dies finalisiert die FSM-Pitch-Funktionalität für den produktiven Einsatz.
This commit is contained in:
2025-07-01 19:48:36 +00:00
parent bd91672a24
commit 0b724d15a2

View File

@@ -1064,27 +1064,34 @@ class DataProcessor:
self.logger.info(f"{len(tasks)} Zeilen für FSM-Pitch-Generierung identifiziert. Starte Verarbeitung...")
all_sheet_updates = []
all_sheet_updates = []
processed_count = 0
update_batch_size = getattr(Config, 'UPDATE_BATCH_ROW_LIMIT', 50)
now_timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
for task in tasks:
for idx, task in enumerate(tasks):
row_num = task['row_num']
row_data = task['data']
self.logger.debug(f"Verarbeite FSM-Pitch für Zeile {row_num}...")
try:
# ... (Logik zur Extraktion der Daten für den Pitch bleibt gleich) ...
# Extrahiere alle notwendigen Daten für den Pitch
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")
wiki_absatz = self._get_cell_value_safe(row_data, "Wiki Absatz")
final_ma_val = self._get_cell_value_safe(row_data, "Finaler Mitarbeiter (Wiki>CRM)")
crm_techniker_val = self._get_cell_value_safe(row_data, "CRM Anzahl Techniker")
final_ma_val_str = self._get_cell_value_safe(row_data, "Finaler Mitarbeiter (Wiki>CRM)")
crm_techniker_val_str = self._get_cell_value_safe(row_data, "CRM Anzahl Techniker")
fsm_pitch_text = generate_fsm_argument(
company_name, branche, website_summary, wiki_absatz, final_ma_val, crm_techniker_val
company_name,
branche,
website_summary,
wiki_absatz,
final_ma_val_str,
crm_techniker_val_str
)
# Update für den Pitch
@@ -1107,10 +1114,16 @@ class DataProcessor:
'values': [[now_timestamp]]
})
processed_count += 1
if all_sheet_updates:
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)
# NEU: Batch-Update, wenn die Größe erreicht ist oder es der letzte Task ist
if (idx + 1) % update_batch_size == 0 or (idx + 1) == len(tasks):
if all_sheet_updates:
# Die Anzahl der bearbeiteten Zeilen in diesem Batch ist len(all_sheet_updates) / 2
num_rows_in_batch = len(all_sheet_updates) // 2
self.logger.info(f"Sende Batch-Update für {num_rows_in_batch} FSM-Pitches (Verarbeitet bisher: {processed_count}/{len(tasks)})...")
self.sheet_handler.batch_update_cells(all_sheet_updates)
all_sheet_updates = [] # Liste für den nächsten Batch leeren
time.sleep(1) # Kurze Pause nach jedem Schreibvorgang
self.logger.info(f"FSM-Pitch-Generierung abgeschlossen. {processed_count} Zeilen bearbeitet.")