diff --git a/brancheneinstufung.py b/brancheneinstufung.py index c8d6a337..4056cef9 100644 --- a/brancheneinstufung.py +++ b/brancheneinstufung.py @@ -4319,8 +4319,8 @@ class DataProcessor: self.logger.info(f"Zeile {row_num_in_sheet}: Fuehre CHATGPT Evaluationen aus (Grund: {grund_message})...") - # --- 3a. Branchen-Einstufung (AH, AI, AJ, AK) --- NEUE SPALTENBUCHSTABEN BEACHTEN! - self.logger.debug(" -> Starte Branchen-Einstufung ueber ChatGPT...") + # --- 3a. Branchen-Einstufung (AH, AI, AJ, AK) --- + self.logger.info(f"Zeile {row_num_in_sheet}: Starte Branchen-Einstufung ueber ChatGPT...") # Log-Level auf INFO geändert try: branch_result = evaluate_branche_chatgpt( crm_branche, @@ -4330,68 +4330,96 @@ class DataProcessor: website_summary ) - updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Vorschlag Branche"] + 1)}{row_num_in_sheet}', 'values': [[branch_result.get("branch", "FEHLER")]]}) + self.logger.debug(f"Zeile {row_num_in_sheet}: branch_result von evaluate_branche_chatgpt: {branch_result}") # DEBUG 1 + + # Update für "Chat Vorschlag Branche" + vorschlag_key = "Chat Vorschlag Branche" + vorschlag_col_idx = COLUMN_MAP.get(vorschlag_key) + if vorschlag_col_idx is not None: + range_str_vorschlag = f'{self.sheet_handler._get_col_letter(vorschlag_col_idx + 1)}{row_num_in_sheet}' + wert_vorschlag = branch_result.get("branch", "FEHLER BRANCH") + updates.append({'range': range_str_vorschlag, 'values': [[wert_vorschlag]]}) + self.logger.debug(f"Zeile {row_num_in_sheet}: Update vorbereitet für {vorschlag_key} ({range_str_vorschlag}): '{wert_vorschlag}'") + else: + self.logger.error(f"Zeile {row_num_in_sheet}: Schlüssel '{vorschlag_key}' nicht in COLUMN_MAP gefunden!") + # NEU: Konfidenz-Score speichern - updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Branche Konfidenz"] + 1)}{row_num_in_sheet}', 'values': [[branch_result.get("confidence", "N/A")]]}) - updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Konsistenz Branche"] + 1)}{row_num_in_sheet}', 'values': [[branch_result.get("consistency", "error")]]}) - updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Begruendung Abweichung Branche"] + 1)}{row_num_in_sheet}', 'values': [[branch_result.get("justification", "Keine Begruendung")]]}) + konfidenz_key = "Chat Branche Konfidenz" + konfidenz_col_idx = COLUMN_MAP.get(konfidenz_key) + if konfidenz_col_idx is not None: + range_str_konfidenz = f'{self.sheet_handler._get_col_letter(konfidenz_col_idx + 1)}{row_num_in_sheet}' + wert_konfidenz = branch_result.get("confidence", "N/A CONF") + updates.append({'range': range_str_konfidenz, 'values': [[wert_konfidenz]]}) + self.logger.debug(f"Zeile {row_num_in_sheet}: Update vorbereitet für {konfidenz_key} ({range_str_konfidenz}): '{wert_konfidenz}'") + else: + self.logger.error(f"Zeile {row_num_in_sheet}: Schlüssel '{konfidenz_key}' nicht in COLUMN_MAP gefunden!") + + # Update für "Chat Konsistenz Branche" + konsistenz_key = "Chat Konsistenz Branche" + konsistenz_col_idx = COLUMN_MAP.get(konsistenz_key) + if konsistenz_col_idx is not None: + range_str_konsistenz = f'{self.sheet_handler._get_col_letter(konsistenz_col_idx + 1)}{row_num_in_sheet}' + wert_konsistenz = branch_result.get("consistency", "error CONS") + updates.append({'range': range_str_konsistenz, 'values': [[wert_konsistenz]]}) + self.logger.debug(f"Zeile {row_num_in_sheet}: Update vorbereitet für {konsistenz_key} ({range_str_konsistenz}): '{wert_konsistenz}'") + else: + self.logger.error(f"Zeile {row_num_in_sheet}: Schlüssel '{konsistenz_key}' nicht in COLUMN_MAP gefunden!") + + # Update für "Chat Begruendung Abweichung Branche" + begruendung_key = "Chat Begruendung Abweichung Branche" + begruendung_col_idx = COLUMN_MAP.get(begruendung_key) + if begruendung_col_idx is not None: + range_str_begruendung = f'{self.sheet_handler._get_col_letter(begruendung_col_idx + 1)}{row_num_in_sheet}' + wert_begruendung = branch_result.get("justification", "Keine Begruendung JUST") + updates.append({'range': range_str_begruendung, 'values': [[wert_begruendung]]}) + self.logger.debug(f"Zeile {row_num_in_sheet}: Update vorbereitet für {begruendung_key} ({range_str_begruendung}): '{str(wert_begruendung)[:50]}...'") + else: + self.logger.error(f"Zeile {row_num_in_sheet}: Schlüssel '{begruendung_key}' nicht in COLUMN_MAP gefunden!") except Exception as e_branch_eval: self.logger.error(f"FEHLER bei Branchen-Einstufung ueber ChatGPT fuer Zeile {row_num_in_sheet}: {e_branch_eval}") self.logger.debug(traceback.format_exc()) - error_msg = f"Fehler: {str(e_branch_eval)[:100]}..." - updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Vorschlag Branche"] + 1)}{row_num_in_sheet}', 'values': [['FEHLER']]}) - updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Branche Konfidenz"] + 1)}{row_num_in_sheet}', 'values': [['N/A']]}) # NEU - updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Konsistenz Branche"] + 1)}{row_num_in_sheet}', 'values': [['error']]}) - updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Begruendung Abweichung Branche"] + 1)}{row_num_in_sheet}', 'values': [[error_msg]]}) + error_msg = f"Fehler Eval: {str(e_branch_eval)[:100]}..." + # Fehlerwerte für alle relevanten Spalten schreiben + if COLUMN_MAP.get("Chat Vorschlag Branche") is not None: + updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Vorschlag Branche"] + 1)}{row_num_in_sheet}', 'values': [['FEHLER']]}) + if COLUMN_MAP.get("Chat Branche Konfidenz") is not None: + updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Branche Konfidenz"] + 1)}{row_num_in_sheet}', 'values': [['N/A (Eval Fehler)']]}) + if COLUMN_MAP.get("Chat Konsistenz Branche") is not None: + updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Konsistenz Branche"] + 1)}{row_num_in_sheet}', 'values': [['error']]}) + if COLUMN_MAP.get("Chat Begruendung Abweichung Branche") is not None: + updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Begruendung Abweichung Branche"] + 1)}{row_num_in_sheet}', 'values': [[error_msg]]}) pass - # --- 3b. FSM Relevanz Bewertung (AL, AM) --- (Platzhalter wie gehabt) - self.logger.debug(" -> Starte FSM Relevanz Bewertung (Platzhalter)...") - # ... (Ihr Platzhalter-Code für FSM) ... - - # --- 3c. Mitarbeiterzahl Schaetzung (AN, AO, AP) --- (Platzhalter wie gehabt) - self.logger.debug(" -> Starte Mitarbeiterzahl Schaetzung (Platzhalter)...") - # ... (Ihr Platzhalter-Code für Mitarbeiter) ... - - # --- 3d. Umsatz Schaetzung (AS, AT) --- (Platzhalter wie gehabt) - self.logger.debug(" -> Starte Umsatz Schaetzung (Platzhalter)...") - # ... (Ihr Platzhalter-Code für Umsatz) ... - - # --- 3e. Konsolidierung Umsatz/Mitarbeiter (AY, AZ) --- NEUE SPALTENBUCHSTABEN! - # Diese Logik wird jetzt direkt hier ausgeführt. + # --- 3e. Konsolidierung Umsatz/Mitarbeiter (AY, AZ) --- + # (Dieser Block bleibt wie im vorherigen Vorschlag, da er gut aussah) self.logger.debug(" -> Konsolidiere Umsatz (AY) und Mitarbeiter (AZ) (Wiki > CRM Logik)...") try: + # ... (Logik für Konsolidierung wie gehabt) ... crm_umsatz_val = self._get_cell_value_safe(row_data, "CRM Umsatz") wiki_umsatz_val = final_wiki_data.get('umsatz', 'k.A.') - crm_ma_val = self._get_cell_value_safe(row_data, "CRM Anzahl Mitarbeiter") wiki_ma_val = final_wiki_data.get('mitarbeiter', 'k.A.') - num_crm_umsatz = get_numeric_filter_value(crm_umsatz_val, is_umsatz=True) num_wiki_umsatz = get_numeric_filter_value(wiki_umsatz_val, is_umsatz=True) - num_crm_ma = get_numeric_filter_value(crm_ma_val, is_umsatz=False) num_wiki_ma = get_numeric_filter_value(wiki_ma_val, is_umsatz=False) - final_num_umsatz = num_wiki_umsatz if num_wiki_umsatz > 0 else num_crm_umsatz final_num_ma = num_wiki_ma if num_wiki_ma > 0 else num_crm_ma - final_umsatz_str = str(int(round(final_num_umsatz))) if final_num_umsatz > 0 else 'k.A.' final_ma_str = str(int(round(final_num_ma))) if final_num_ma > 0 else 'k.A.' updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Finaler Umsatz (Wiki>CRM)"] + 1)}{row_num_in_sheet}', 'values': [[final_umsatz_str]]}) updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Finaler Mitarbeiter (Wiki>CRM)"] + 1)}{row_num_in_sheet}', 'values': [[final_ma_str]]}) self.logger.debug(f" -> Konsolidiert: Umsatz={final_umsatz_str}, MA={final_ma_str}") - except Exception as e_consolidate: self.logger.error(f"FEHLER bei Konsolidierung Umsatz/Mitarbeiter fuer Zeile {row_num_in_sheet}: {e_consolidate}") self.logger.debug(traceback.format_exc()) - updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Finaler Umsatz (Wiki>CRM)"] + 1)}{row_num_in_sheet}', 'values': [['FEHLER']]}) - updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Finaler Mitarbeiter (Wiki>CRM)"] + 1)}{row_num_in_sheet}', 'values': [['FEHLER']]}) + updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Finaler Umsatz (Wiki>CRM)"] + 1)}{row_num_in_sheet}', 'values': [['FEHLER KONSO']]}) # Deutlicherer Fehler + updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Finaler Mitarbeiter (Wiki>CRM)"] + 1)}{row_num_in_sheet}', 'values': [['FEHLER KONSO']]}) pass - # Setze den Timestamp letzte Pruefung (BC - vorher BB), da die ChatGPT-Evaluationen liefen + # Setze den Timestamp letzte Pruefung (BC), da die ChatGPT-Evaluationen liefen updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Timestamp letzte Pruefung"] + 1)}{row_num_in_sheet}', 'values': [[now_timestamp]]})