diff --git a/data_processor.py b/data_processor.py index 6d6ef0c9..5a3f6ffe 100644 --- a/data_processor.py +++ b/data_processor.py @@ -469,6 +469,7 @@ class DataProcessor: f"Zeile {row_num_in_sheet}: Fuehre CHATGPT Evaluationen & Plausi aus (Grund: {grund_message_chat})...") # --- 3a. Branchen-Einstufung --- + branch_result = {} # Initialisiere das Dictionary als leer self.logger.info(f" Zeile {row_num_in_sheet}: Starte Branchen-Einstufung 2.0 ueber ChatGPT...") try: # Rufe die neue, kontextbasierte Funktion mit den korrekten Parametern auf @@ -498,6 +499,42 @@ class DataProcessor: 'range': f'{_get_col_letter(col_idx + 1)}{row_num_in_sheet}', 'values': [[item["value"]]] }) + # --- 3b. Parent-Account-Vorschlag (KI) --- + # Prüfen, ob ein Vorschlag benötigt wird (Spalte Q ist leer) + parent_timestamp = self._get_cell_value_safe(row_data, "Parent Vorschlag Timestamp").strip() + if not parent_timestamp: + self.logger.info(f" Zeile {row_num_in_sheet}: Starte Parent-Account-Vorschlag über ChatGPT...") + try: + # Sammle die Daten für die Task-Funktion + task_data = { + "row_num": row_num_in_sheet, + "crm_name": self._get_cell_value_safe(row_data, "CRM Name"), + "crm_website": self._get_cell_value_safe(row_data, "CRM Website"), + "crm_beschreibung": self._get_cell_value_safe(row_data, "CRM Beschreibung"), + "wiki_url": final_wiki_data.get('url', 'k.A.'), + "wiki_absatz": final_wiki_data.get('first_paragraph', 'k.A.'), + "wiki_kategorien": final_wiki_data.get('categories', 'k.A.'), + "website_summary": website_summary + } + + # Rufe die Logik der bestehenden Worker-Funktion auf + # Wir simulieren den Semaphore für den Einzelaufruf + temp_semaphore = threading.Semaphore(1) + parent_result = self._suggest_parent_account_openai_task(task_data, temp_semaphore) + + parent_val = parent_result.get('suggested_parent', 'k.A. (Fehler)') + status_val = "?" if parent_val and parent_val.lower() != "k.a." and not parent_val.startswith("FEHLER") else "" + + updates.append({'range': f'{_get_col_letter(get_col_idx("System Vorschlag Parent Account") + 1)}{row_num_in_sheet}', 'values': [[parent_val]]}) + updates.append({'range': f'{_get_col_letter(get_col_idx("Parent Vorschlag Status") + 1)}{row_num_in_sheet}', 'values': [[status_val]]}) + updates.append({'range': f'{_get_col_letter(get_col_idx("Parent Vorschlag Timestamp") + 1)}{row_num_in_sheet}', 'values': [[now_timestamp]]}) + + except Exception as e_parent_sugg: + self.logger.error(f"FEHLER bei Parent-Account-Vorschlag für Zeile {row_num_in_sheet}: {e_parent_sugg}", exc_info=True) + updates.append({'range': f'{_get_col_letter(get_col_idx("System Vorschlag Parent Account") + 1)}{row_num_in_sheet}', 'values': [['FEHLER_CALL']]}) + + + # --- NEUER SCHRITT: FSM Pitch generieren --- if 'fsm_pitch' in chat_steps_to_run and self._needs_fsm_pitch(row_data, force_reeval):