bugfix
This commit is contained in:
@@ -2259,42 +2259,89 @@ class DataProcessor:
|
||||
|
||||
wiki_confirm = ""; alt_article = ""; wiki_explanation = ""
|
||||
|
||||
if chat_response:
|
||||
match = re.match(r"Antwort: (.*)", chat_response.strip())
|
||||
if match:
|
||||
answer_text = match.group(1).strip()
|
||||
logging.debug(f"Zeile {row_num_in_sheet} Verifizierungsantwort: '{answer_text}'")
|
||||
if answer_text.upper() == "OK": wiki_confirm = "OK"
|
||||
elif answer_text.startswith("X |"):
|
||||
parts = answer_text.split("|", 2)
|
||||
wiki_confirm = "X"
|
||||
if len(parts) > 1: detail = parts[1].strip();
|
||||
if len(parts) > 2: wiki_explanation = parts[2].split(":", 1)[1].strip() if parts[2].strip().startswith("Begründung:") else parts[2].strip()
|
||||
# Anpassung: T ist Begründung, U ist Vorschlag
|
||||
if detail.startswith("Alternativer Artikel:"): alt_article = detail.split(":", 1)[1].strip()
|
||||
elif detail == "Kein passender Artikel gefunden": alt_article = detail
|
||||
else: wiki_explanation = f"Unerwartetes X-Detail: {detail}" # Wenn Detail nicht URL/Kein gefunden, setze als Begründung
|
||||
alt_article = alt_article or "" # Sicherstellen, dass alt_article ein String ist
|
||||
wiki_explanation = wiki_explanation or "" # Sicherstellen, dass explanation String ist
|
||||
if chat_response: # <= ZEILE 2262
|
||||
match = re.match(r"Antwort: (.*)", chat_response.strip()) # <= ZEILE 2263
|
||||
if match: # <= ZEILE 2264
|
||||
answer_text = match.group(1).strip() # <= ZEILE 2265
|
||||
logging.debug(f"Zeile {row_num_in_sheet} Verifizierungsantwort: '{answer_text}'") # <= ZEILE 2266
|
||||
|
||||
else: wiki_confirm, wiki_explanation = "?", f"Unerwartetes Format: {answer_text[:100]}"; alt_article = ""
|
||||
else: wiki_confirm = "?"; wiki_explanation = f"Parsing Fehler: {chat_response[:100]}"; alt_article = ""
|
||||
logging.error(f"Zeile {row_num_in_sheet}: Parsing Fehler für Verifizierungsantwort: {chat_response}")
|
||||
else: wiki_confirm = "Fehler"; wiki_explanation = "API Fehler oder keine Antwort"; alt_article = ""
|
||||
logging.error(f"Zeile {row_num_in_sheet}: API Fehler oder keine Antwort für Verifizierungs-Prompt.")
|
||||
if answer_text.upper() == "OK": # <= ZEILE 2267
|
||||
wiki_confirm = "OK"
|
||||
elif answer_text.startswith("X |"): # <= ZEILE 2268
|
||||
parts = answer_text.split("|", 2) # <= ZEILE 2269
|
||||
wiki_confirm = "X" # <= ZEILE 2270
|
||||
alt_article = "" # Initialisieren (oder "" von oben nutzen)
|
||||
wiki_explanation = "" # Initialisieren
|
||||
|
||||
if len(parts) > 1: # <= ZEILE 2271
|
||||
detail = parts[1].strip() # <= ZEILE 2272
|
||||
# Annahme: wiki_explanation kann von parts[2] gesetzt werden
|
||||
if len(parts) > 2: # <= ZEILE 2273
|
||||
# wiki_explanation = parts[2].split(":", 1)[1].strip() if parts[2].strip().startswith("Begründung:") else parts[2].strip() # Alte Logik
|
||||
reason_part = parts[2].strip() # <= ZEILE 2274
|
||||
if reason_part.lower().startswith("begründung:"): # <= ZEILE 2275
|
||||
wiki_explanation = reason_part.split(":", 1)[1].strip() # <= ZEILE 2276
|
||||
else:
|
||||
# Wenn es nicht mit "Begründung:" anfängt, nehmen wir den ganzen Rest als Begründung
|
||||
wiki_explanation = reason_part # <= ZEILE 2277
|
||||
|
||||
# Verarbeite den Detail-Teil (parts[1]) unabhängig von len(parts)>2
|
||||
if detail.lower().startswith("alternativer artikel:"): # <= ZEILE 2274 (im Screenshot falsch eingerückt?)
|
||||
alt_article = detail.split(":", 1)[1].strip() # <= ZEILE 2275 (im Screenshot falsch eingerückt?)
|
||||
elif detail.lower() == "kein passender artikel gefunden": # <= ZEILE 2276 (im Screenshot falsch eingerückt?)
|
||||
alt_article = detail # Der Text selbst ist der Vorschlag
|
||||
else:
|
||||
# Wenn der Detail-Teil weder URL noch "Kein passender Artikel" ist, behandeln wir ihn als Begründung,
|
||||
# falls noch keine Begründung aus parts[2] gefunden wurde.
|
||||
# Oder loggen wir es als unerwartet? Loggen ist sicherer.
|
||||
logging.warning(f"Zeile {row_num_in_sheet}: Unerwartetes Detail-Format nach 'X |': '{detail}'")
|
||||
# Setze es als Begründung nur, wenn parts[2] nicht existierte oder leer war?
|
||||
# Vereinfacht: Wenn Detail-Teil nicht URL/Kein gefunden, füge ihn ZUR Begründung hinzu.
|
||||
if wiki_explanation: wiki_explanation += f" | Unerw. Detail: {detail}"
|
||||
else: wiki_explanation = f"Unerw. Detail: {detail}"
|
||||
|
||||
|
||||
# ELSE für if answer_text.upper() == "OK": und elif answer_text.startswith("X |"):
|
||||
# Dies wird erreicht, wenn die Antwort kein "OK" und kein "X |" Format hat.
|
||||
else: # <= ZEILE 2280
|
||||
# Korrigierte Einrückung für diesen Block: muss unter das 'else:' gehören
|
||||
wiki_confirm = "?" # <= ZEILE 2281 (korrekt eingerückt)
|
||||
wiki_explanation = f"Unerwartetes Format: {answer_text[:100]}..." # <= ZEILE 2281 (als separate Zeile)
|
||||
alt_article = "" # <= ZEILE 2281 (als separate Zeile)
|
||||
# Loggen Sie den unerwarteten Fall
|
||||
logging.error(f"Zeile {row_num_in_sheet}: Unerwartetes Verifizierungs-Antwortformat: '{answer_text}'.") # <= ZEILE 2282 (korrekt eingerückt)
|
||||
|
||||
|
||||
# ELSE für if match: (wenn der Regex "Antwort: (.*)" nicht matchte)
|
||||
else: # <= ZEILE 2284
|
||||
# Korrigierte Einrückung für diesen Block: muss unter das 'else:' gehören
|
||||
wiki_confirm = "?" # <= ZEILE 2285 (korrekt eingerückt)
|
||||
wiki_explanation = f"Parsing Fehler: {chat_response[:100]}..." # <= ZEILE 2285 (als separate Zeile)
|
||||
alt_article = "" # <= ZEILE 2285 (als separate Zeile)
|
||||
logging.error(f"Zeile {row_num_in_sheet}: Parsing Fehler für Verifizierungsantwort (Regex Match fehlgeschlagen): {chat_response}.") # <= ZEILE 2286 (korrekt eingerückt)
|
||||
|
||||
|
||||
# ELSE für if chat_response: (wenn call_openai_chat None zurückgab)
|
||||
else: # <= ZEILE 2284 (anderes else, gehört zu if chat_response:)
|
||||
# Korrigierte Einrückung für diesen Block: muss unter das 'else:' gehören
|
||||
wiki_confirm = "Fehler" # <= ZEILE 2285 (korrekt eingerückt)
|
||||
wiki_explanation = "API Fehler oder keine Antwort" # <= ZEILE 2285 (als separate Zeile)
|
||||
alt_article = "" # <= ZEILE 2285 (als separate Zeile)
|
||||
logging.error(f"Zeile {row_num_in_sheet}: API Fehler oder keine Antwort für Verifizierungs-Prompt.") # <= ZEILE 2286 (korrekt eingerückt)
|
||||
|
||||
|
||||
# Füge Updates für S, T, U hinzu (basierend auf Spaltenbeschreibung: S=Konstistenz, T=Begründung, U=Vorschlag)
|
||||
updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Wiki Konsistenzprüfung"] + 1)}{row_num_in_sheet}', 'values': [[wiki_confirm]]})
|
||||
updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Begründung Wiki Inkonsistenz"] + 1)}{row_num_in_sheet}', 'values': [[wiki_explanation]]}) # T ist Begründung
|
||||
updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Vorschlag Wiki Artikel"] + 1)}{row_num_in_sheet}', 'values': [[alt_article]]}) # U ist Vorschlag
|
||||
updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Wiki Konsistenzprüfung"] + 1)}{row_num_in_sheet}', 'values': [[wiki_confirm]]}) # <= ZEILE 2288
|
||||
updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Begründung Wiki Inkonsistenz"] + 1)}{row_num_in_sheet}', 'values': [[wiki_explanation]]}) # T ist Begründung <= ZEILE 2289
|
||||
updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Vorschlag Wiki Artikel"] + 1)}{row_num_in_sheet}', 'values': [[alt_article]]}) # U ist Vorschlag <= ZEILE 2290
|
||||
|
||||
# Setze AX Timestamp, wenn dieser Schritt gemacht wurde
|
||||
updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Wiki Verif. Timestamp"] + 1)}{row_num_in_sheet}', 'values': [[now_timestamp]]})
|
||||
updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Wiki Verif. Timestamp"] + 1)}{row_num_in_sheet}', 'values': [[now_timestamp]]}) # <= ZEILE 2293
|
||||
|
||||
|
||||
# --- 4. ChatGPT Evaluationen (Branch W-Y, FSM Z-AA, MA AB-AD, Umsatz AG-AH) ---
|
||||
# Dieser Block wird nur ausgeführt, wenn die GRUPPE "ChatGPT" ausgewählt ist
|
||||
# --- 4. ChatGPT Evaluationen (Branch W-Y, FSM Z-AA, MA AB-AD, Umsatz AG-AH) ---
|
||||
# Dieser Block wird nur ausgeführt, wenn die GRUPPE "ChatGPT" ausgewählt ist
|
||||
# ... (Rest der _process_single_row Methode, wie in Teil 4/6 von 18:55 Uhr) ...
|
||||
if process_chatgpt:
|
||||
|
||||
# Branch Evaluation (W-Y) ist nötig, wenn: (_is_step_processing_needed für AO ODER Inputs (Wiki/Web) wurden aktualisiert)
|
||||
|
||||
Reference in New Issue
Block a user