diff --git a/data_processor.py b/data_processor.py index bf5e7e75..67ffbd52 100644 --- a/data_processor.py +++ b/data_processor.py @@ -963,9 +963,11 @@ class DataProcessor: self.logger.info(f"{found_count} Zeilen mit ReEval-Flag 'x' gefunden.") if found_count == 0: return - # Spalten definieren, die vor der Neubewertung geleert werden sollen +# NEU: Spalten definieren, die vor der Neubewertung geleert werden sollen cols_to_clear_keys = [ - "Wiki URL", "Wiki Sitz Stadt", "Wiki Sitz Land", "Wiki Absatz", "Wiki Branche", + # WICHTIG: "Wiki URL" (R) und "CRM Vorschlag Wiki URL" (N) werden NICHT mehr geleert, + # um manuelle Einträge zu schützen. + "Wiki Sitz Stadt", "Wiki Sitz Land", "Wiki Absatz", "Wiki Branche", "Wiki Umsatz", "Wiki Mitarbeiter", "Wiki Kategorien", "Wikipedia Timestamp", "Wiki Verif. Timestamp", "SerpAPI Wiki Search Timestamp", "Chat Wiki Konsistenzpruefung", "Chat Begruendung Wiki Inkonsistenz", "Chat Vorschlag Wiki Artikel", "Begruendung bei Abweichung", @@ -974,7 +976,9 @@ class DataProcessor: "Chat Begruendung Abweichung Branche", "Finaler Umsatz (Wiki>CRM)", "Finaler Mitarbeiter (Wiki>CRM)", "Geschaetzter Techniker Bucket", "Plausibilität Umsatz", "Plausibilität Mitarbeiter", "Plausibilität Umsatz/MA Ratio", "Abweichung Umsatz CRM/Wiki", "Abweichung MA CRM/Wiki", - "Plausibilität Begründung", "Plausibilität Prüfdatum", "Timestamp letzte Pruefung", "Version", "Tokens" + "Plausibilität Begründung", "Plausibilität Prüfdatum", "Timestamp letzte Pruefung", "Version", "Tokens", + # Der FSM Pitch und sein Timestamp sollten auch geleert werden + "FSM Pitch", "FSM Pitch Timestamp" ] clear_updates = [] @@ -1075,26 +1079,45 @@ class DataProcessor: self.logger.debug(f"Verarbeite FSM-Pitch für Zeile {row_num}...") + # --- NEUE PRÜFUNG --- + # Extrahiere die Beschreibungen VOR dem API-Call + website_summary = self._get_cell_value_safe(row_data, "Website Zusammenfassung") + wiki_absatz = self._get_cell_value_safe(row_data, "Wiki Absatz") + beschreibung = website_summary if website_summary and website_summary.lower() not in ['k.a.', ''] else wiki_absatz + + # Wenn keine sinnvolle Beschreibung vorhanden ist, überspringe den API-Call + if not beschreibung or beschreibung.lower() in ['k.a.', '']: + self.logger.warning(f"Zeile {row_num}: Überspringe FSM-Pitch-Generierung, da keine Beschreibung vorhanden ist.") + all_sheet_updates.append({ + 'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["FSM Pitch"] + 1)}{row_num}', + 'values': [['k.A. (Beschreibung fehlt)']] + }) + # Wichtig: Trotzdem den Timestamp setzen, um diese Zeile nicht erneut zu versuchen + 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 + continue # Springe zum nächsten Task in der Schleife + # --- ENDE NEUE PRÜFUNG --- + + try: - # Extrahiere alle notwendigen Daten für den Pitch + # Extrahiere die restlichen 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_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, + website_summary, # Wir übergeben die bereits ermittelten Werte wiki_absatz, final_ma_val_str, crm_techniker_val_str ) - # 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]] @@ -1102,13 +1125,12 @@ class DataProcessor: 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 + # IMMER den Timestamp setzen all_sheet_updates.append({ 'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["FSM Pitch Timestamp"] + 1)}{row_num}', 'values': [[now_timestamp]]