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...")
|
self.logger.info(f"{len(tasks)} Zeilen für FSM-Pitch-Generierung identifiziert. Starte Verarbeitung...")
|
||||||
|
|
||||||
all_sheet_updates = []
|
all_sheet_updates = []
|
||||||
processed_count = 0
|
processed_count = 0
|
||||||
|
update_batch_size = getattr(Config, 'UPDATE_BATCH_ROW_LIMIT', 50)
|
||||||
now_timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
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_num = task['row_num']
|
||||||
row_data = task['data']
|
row_data = task['data']
|
||||||
|
|
||||||
self.logger.debug(f"Verarbeite FSM-Pitch für Zeile {row_num}...")
|
self.logger.debug(f"Verarbeite FSM-Pitch für Zeile {row_num}...")
|
||||||
|
|
||||||
try:
|
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")
|
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")
|
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")
|
website_summary = self._get_cell_value_safe(row_data, "Website Zusammenfassung")
|
||||||
wiki_absatz = self._get_cell_value_safe(row_data, "Wiki Absatz")
|
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(
|
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
|
# Update für den Pitch
|
||||||
@@ -1107,10 +1114,16 @@ class DataProcessor:
|
|||||||
'values': [[now_timestamp]]
|
'values': [[now_timestamp]]
|
||||||
})
|
})
|
||||||
processed_count += 1
|
processed_count += 1
|
||||||
|
|
||||||
if all_sheet_updates:
|
# NEU: Batch-Update, wenn die Größe erreicht ist oder es der letzte Task ist
|
||||||
self.logger.info(f"Sende Batch-Update für {processed_count} generierte FSM-Pitches und Timestamps...")
|
if (idx + 1) % update_batch_size == 0 or (idx + 1) == len(tasks):
|
||||||
self.sheet_handler.batch_update_cells(all_sheet_updates)
|
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.")
|
self.logger.info(f"FSM-Pitch-Generierung abgeschlossen. {processed_count} Zeilen bearbeitet.")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user