This commit is contained in:
2025-04-10 10:37:06 +00:00
parent 57f1039d12
commit c49e66f2f1

View File

@@ -533,11 +533,10 @@ class DataProcessor:
# ==================== NEUE FUNKTION: process_verification_only ====================
def process_verification_only():
"""
Überarbeiteter BatchProzess (Version 1.5.7, Modus 51):
- Fragt in der Konsole ab, wie viele Zeilen insgesamt verarbeitet werden sollen.
- Ermittelt die Gesamtzahl der Zeilen (exkl. Header) und protokolliert diesen Wert.
- Alle Zeilen, bei denen Spalte AO (Index 40) entweder gar nicht vorhanden oder leer ist, werden verarbeitet.
- Diese Zeilen werden in Paketen der Größe Config.BATCH_SIZE (z.B. 10 Zeilen) gebündelt.
Überarbeiteter BatchProzess (Version 1.5.8, Modus 51):
- Ermittelt zunächst die letzte Zeile, in der in Spalte AO (Index 40) ein Zeitstempel steht.
- Beginnt die Verarbeitung ab der nächsten Zeile.
- Verarbeitet alle Zeilen ab diesem Startpunkt in Paketen der Größe Config.BATCH_SIZE (z.B. 10 Zeilen).
- Für jedes Batch wird ein aggregierter Prompt erstellt, an ChatGPT gesendet und die Antwort
zeilenweise geparst.
- Die Ergebnisse werden in den Spalten S bis Y geschrieben:
@@ -545,9 +544,24 @@ def process_verification_only():
T: Alternativer Wiki-Artikel (URL oder "Kein Wikipedia-Eintrag vorhanden.")
U: Wiki-Erklärung / Begründung
VY: Platzhalter (leer)
- Umfangreiche Log-Ausgaben unterstützen die Fehlerdiagnose.
- Umfassende Log-Ausgaben unterstützen die Fehlerdiagnose.
"""
debug_print("Starte Verifizierungsmodus (Modus 51) im Batch-Prozess (Version 1.5.7)...")
debug_print("Starte Verifizierungsmodus (Modus 51) im Batch-Prozess (Version 1.5.8)...")
# Bestimme, in welcher Zeile in Spalte AO zuletzt ein Zeitstempel vorhanden ist
try:
col_ao = main_sheet.col_values(41) # Spalte AO (1-basierter Index)
except Exception as e:
debug_print(f"Fehler beim Auslesen von Spalte AO: {e}")
col_ao = []
last_filled_row = 1 # Header wird angenommen in Zeile 1
for idx, cell in enumerate(col_ao, start=1):
if cell.strip() != "":
last_filled_row = idx
start_row = last_filled_row + 1
debug_print(f"Letzter Zeitstempel in Spalte AO in Zeile {last_filled_row}. Verarbeitung startet ab Zeile {start_row}.")
# Abfrage: Wie viele Zeilen sollen insgesamt verarbeitet werden?
try:
total_rows = int(input("Wie viele Zeilen sollen insgesamt bearbeitet werden? "))
except Exception as e:
@@ -560,28 +574,25 @@ def process_verification_only():
main_sheet = sh.sheet1
data = main_sheet.get_all_values()
available_total = len(data) - 1 # ohne Header
debug_print(f"Anzahl Zeilen (exkl. Header): {available_total}")
# Begrenze die zu verarbeitenden Zeilen, falls total_rows vorgegeben ist
if total_rows is not None:
available_rows = min(total_rows, available_total)
else:
available_rows = available_total
if available_rows <= 0:
debug_print("Keine Zeilen zum Verarbeiten gefunden.")
if start_row > available_rows + 1:
debug_print("Es gibt keine Zeilen ohne Zeitstempel, daher wird nichts verarbeitet.")
return
batch_size = Config.BATCH_SIZE # z. B. 10, einstellbar in der Config
batch_size = Config.BATCH_SIZE # z. B. 10, einstellbar in Config
batches = []
row_numbers = []
for i, row in enumerate(data[1:], start=2):
# Iteriere ab start_row bis available_rows
for i, row in enumerate(data[start_row - 1:], start=start_row):
if i > available_rows + 1:
break
# Wenn die Zeile mindestens 41 Spalten hat und in Spalte AO (Index 40) bereits ein Wert steht, überspringe sie.
if len(row) >= 41 and row[40].strip() != "":
debug_print(f"Zeile {i} wird übersprungen, da Spalte AO bereits gefüllt ist.")
continue
# Aufnahme der Zeile in das aktuelle Batch (unabhängig von weiteren Bedingungen)
# Hier wird davon ausgegangen, dass ab start_row keine Zeitstempel in AO vorliegen.
entry_text = (
f"Eintrag {i}:\n"
f"Firmenname: {row[1] if len(row) > 1 else ''}\n"
@@ -665,7 +676,6 @@ def process_verification_only():
time.sleep(Config.RETRY_DELAY)
batches = []
row_numbers = []
if batches:
aggregated_prompt = (
"Du bist ein Experte in der Verifizierung von Wikipedia-Artikeln für Unternehmen. "