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:
@@ -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.")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user