This commit is contained in:
2025-04-24 05:59:51 +00:00
parent 76f1c72cc3
commit 43476983a4

View File

@@ -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)