bugfix
This commit is contained in:
@@ -533,11 +533,10 @@ class DataProcessor:
|
|||||||
# ==================== NEUE FUNKTION: process_verification_only ====================
|
# ==================== NEUE FUNKTION: process_verification_only ====================
|
||||||
def process_verification_only():
|
def process_verification_only():
|
||||||
"""
|
"""
|
||||||
Überarbeiteter Batch‑Prozess (Version 1.5.7, Modus 51):
|
Überarbeiteter Batch‑Prozess (Version 1.5.8, Modus 51):
|
||||||
- Fragt in der Konsole ab, wie viele Zeilen insgesamt verarbeitet werden sollen.
|
- Ermittelt zunächst die letzte Zeile, in der in Spalte AO (Index 40) ein Zeitstempel steht.
|
||||||
- Ermittelt die Gesamtzahl der Zeilen (exkl. Header) und protokolliert diesen Wert.
|
- Beginnt die Verarbeitung ab der nächsten Zeile.
|
||||||
- Alle Zeilen, bei denen Spalte AO (Index 40) entweder gar nicht vorhanden oder leer ist, werden verarbeitet.
|
- Verarbeitet alle Zeilen ab diesem Startpunkt in Paketen der Größe Config.BATCH_SIZE (z. B. 10 Zeilen).
|
||||||
- Diese Zeilen werden in Paketen der Größe Config.BATCH_SIZE (z. B. 10 Zeilen) gebündelt.
|
|
||||||
- Für jedes Batch wird ein aggregierter Prompt erstellt, an ChatGPT gesendet und die Antwort
|
- Für jedes Batch wird ein aggregierter Prompt erstellt, an ChatGPT gesendet und die Antwort
|
||||||
zeilenweise geparst.
|
zeilenweise geparst.
|
||||||
- Die Ergebnisse werden in den Spalten S bis Y geschrieben:
|
- 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.")
|
T: Alternativer Wiki-Artikel (URL oder "Kein Wikipedia-Eintrag vorhanden.")
|
||||||
U: Wiki-Erklärung / Begründung
|
U: Wiki-Erklärung / Begründung
|
||||||
V–Y: Platzhalter (leer)
|
V–Y: 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:
|
try:
|
||||||
total_rows = int(input("Wie viele Zeilen sollen insgesamt bearbeitet werden? "))
|
total_rows = int(input("Wie viele Zeilen sollen insgesamt bearbeitet werden? "))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -560,28 +574,25 @@ def process_verification_only():
|
|||||||
main_sheet = sh.sheet1
|
main_sheet = sh.sheet1
|
||||||
data = main_sheet.get_all_values()
|
data = main_sheet.get_all_values()
|
||||||
available_total = len(data) - 1 # ohne Header
|
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:
|
if total_rows is not None:
|
||||||
available_rows = min(total_rows, available_total)
|
available_rows = min(total_rows, available_total)
|
||||||
else:
|
else:
|
||||||
available_rows = available_total
|
available_rows = available_total
|
||||||
|
|
||||||
if available_rows <= 0:
|
if start_row > available_rows + 1:
|
||||||
debug_print("Keine Zeilen zum Verarbeiten gefunden.")
|
debug_print("Es gibt keine Zeilen ohne Zeitstempel, daher wird nichts verarbeitet.")
|
||||||
return
|
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 = []
|
batches = []
|
||||||
row_numbers = []
|
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:
|
if i > available_rows + 1:
|
||||||
break
|
break
|
||||||
# Wenn die Zeile mindestens 41 Spalten hat und in Spalte AO (Index 40) bereits ein Wert steht, überspringe sie.
|
# Hier wird davon ausgegangen, dass ab start_row keine Zeitstempel in AO vorliegen.
|
||||||
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)
|
|
||||||
entry_text = (
|
entry_text = (
|
||||||
f"Eintrag {i}:\n"
|
f"Eintrag {i}:\n"
|
||||||
f"Firmenname: {row[1] if len(row) > 1 else ''}\n"
|
f"Firmenname: {row[1] if len(row) > 1 else ''}\n"
|
||||||
@@ -665,7 +676,6 @@ def process_verification_only():
|
|||||||
time.sleep(Config.RETRY_DELAY)
|
time.sleep(Config.RETRY_DELAY)
|
||||||
batches = []
|
batches = []
|
||||||
row_numbers = []
|
row_numbers = []
|
||||||
|
|
||||||
if batches:
|
if batches:
|
||||||
aggregated_prompt = (
|
aggregated_prompt = (
|
||||||
"Du bist ein Experte in der Verifizierung von Wikipedia-Artikeln für Unternehmen. "
|
"Du bist ein Experte in der Verifizierung von Wikipedia-Artikeln für Unternehmen. "
|
||||||
|
|||||||
Reference in New Issue
Block a user