bugfix
This commit is contained in:
@@ -107,9 +107,7 @@ def process_wiki_batch(main_sheet, data, start_row, end_row):
|
|||||||
"""
|
"""
|
||||||
Batch-Prozess für Wikipedia-Verifizierung (Wiki-Modus):
|
Batch-Prozess für Wikipedia-Verifizierung (Wiki-Modus):
|
||||||
- Verarbeitet alle Zeilen von start_row bis end_row in Gruppen (Batchgröße = Config.BATCH_SIZE).
|
- Verarbeitet alle Zeilen von start_row bis end_row in Gruppen (Batchgröße = Config.BATCH_SIZE).
|
||||||
- Für jeden Batch wird ein aggregierter Prompt erstellt und an ChatGPT geschickt.
|
- Ergebnisse werden in den Spalten S bis Y geschrieben.
|
||||||
- Die Aggregat-Ergebnisse werden zeilenweise in Spalte S (Wiki-Validierung), T (alternativer Wiki-Artikel),
|
|
||||||
U (Wiki-Erklärung) und V–Y (Platzhalter) geschrieben.
|
|
||||||
"""
|
"""
|
||||||
batch_size = Config.BATCH_SIZE
|
batch_size = Config.BATCH_SIZE
|
||||||
batches = []
|
batches = []
|
||||||
@@ -135,12 +133,14 @@ def process_wiki_batch(main_sheet, data, start_row, end_row):
|
|||||||
_process_batch(main_sheet, batches, row_numbers)
|
_process_batch(main_sheet, batches, row_numbers)
|
||||||
debug_print("Wiki batch processing completed.")
|
debug_print("Wiki batch processing completed.")
|
||||||
|
|
||||||
|
|
||||||
def process_website_batch(main_sheet, data, start_row, end_row):
|
def process_website_batch(main_sheet, data, start_row, end_row):
|
||||||
"""
|
"""
|
||||||
Batch-Prozess für Website-Scraping (Website-Modus):
|
Batch-Prozess für Website-Scraping (Website-Modus):
|
||||||
- Für jede Zeile von start_row bis end_row wird, falls eine CRM-Website vorhanden ist,
|
- Für jede Zeile von start_row bis end_row werden Website-Rohtext (get_website_raw) und
|
||||||
get_website_raw aufgerufen, um den Rohtext abzurufen, und summarize_website_content zur Zusammenfassung.
|
Zusammenfassung (summarize_website_content) abgerufen.
|
||||||
- Die Ergebnisse werden in Spalte AR (Website Rohtext) und AS (Website Zusammenfassung) geschrieben.
|
- Ergebnisse werden in Spalte AR (Rohtext) und AS (Zusammenfassung) geschrieben.
|
||||||
|
- Am Ende jeder Zeile wird der Zeitstempel (Spalte AO) und Version (Spalte AP) gesetzt.
|
||||||
"""
|
"""
|
||||||
for i in range(start_row, end_row + 1):
|
for i in range(start_row, end_row + 1):
|
||||||
row = data[i - 1]
|
row = data[i - 1]
|
||||||
@@ -153,19 +153,24 @@ def process_website_batch(main_sheet, data, start_row, end_row):
|
|||||||
try:
|
try:
|
||||||
main_sheet.update(values=[[raw_text]], range_name=f"AR{i}")
|
main_sheet.update(values=[[raw_text]], range_name=f"AR{i}")
|
||||||
main_sheet.update(values=[[summary]], range_name=f"AS{i}")
|
main_sheet.update(values=[[summary]], range_name=f"AS{i}")
|
||||||
debug_print(f"Zeile {i}: Website-Daten aktualisiert.")
|
current_timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
main_sheet.update(values=[[current_timestamp]], range_name=f"AO{i}")
|
||||||
|
main_sheet.update(values=[[Config.VERSION]], range_name=f"AP{i}")
|
||||||
|
debug_print(f"Zeile {i}: Website-Daten aktualisiert | Zeitstempel: {current_timestamp}, Version: {Config.VERSION}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
debug_print(f"Fehler beim Updaten der Website-Daten in Zeile {i}: {e}")
|
debug_print(f"Fehler beim Updaten der Website-Daten in Zeile {i}: {e}")
|
||||||
time.sleep(Config.RETRY_DELAY)
|
time.sleep(Config.RETRY_DELAY)
|
||||||
debug_print("Website batch processing completed.")
|
debug_print("Website batch processing completed.")
|
||||||
|
|
||||||
|
|
||||||
def process_branch_batch(main_sheet, data, start_row, end_row):
|
def process_branch_batch(main_sheet, data, start_row, end_row):
|
||||||
"""
|
"""
|
||||||
Batch-Prozess für Brancheneinschätzung (Branch-Modus):
|
Batch-Prozess für Brancheneinschätzung (Branch-Modus):
|
||||||
- Für jede Zeile von start_row bis end_row werden die relevanten Felder für die Brancheneinschätzung ausgelesen.
|
- Für jede Zeile von start_row bis end_row werden relevante Felder ausgelesen und
|
||||||
- Es werden evaluate_branche_chatgpt aufgerufen, die das Branchenergebnis als Dictionary zurückgibt.
|
evaluate_branche_chatgpt aufgerufen.
|
||||||
- Die Ergebnisse werden in Spalte W (Chat Vorschlag Branche), X (Chat Konsistenz Branche)
|
- Das Ergebnis (Dictionary mit "branch", "consistency", "justification") wird in
|
||||||
und Y (Chat Begründung Abweichung Branche) geschrieben.
|
Spalte W (Branch), X (Konsistenz) und Y (Begründung) geschrieben.
|
||||||
|
- Für jede verarbeitete Zeile werden zudem der Zeitstempel (Spalte AO) und Version (Spalte AP) gesetzt.
|
||||||
"""
|
"""
|
||||||
for i in range(start_row, end_row + 1):
|
for i in range(start_row, end_row + 1):
|
||||||
row = data[i - 1]
|
row = data[i - 1]
|
||||||
@@ -173,25 +178,30 @@ def process_branch_batch(main_sheet, data, start_row, end_row):
|
|||||||
beschreibung = row[7] if len(row) > 7 else ""
|
beschreibung = row[7] if len(row) > 7 else ""
|
||||||
wiki_branche = row[14] if len(row) > 14 else ""
|
wiki_branche = row[14] if len(row) > 14 else ""
|
||||||
wiki_kategorien = row[17] if len(row) > 17 else ""
|
wiki_kategorien = row[17] if len(row) > 17 else ""
|
||||||
# Website Zusammenfassung aus Spalte AS (Index 45, wenn vorhanden)
|
|
||||||
website_summary = row[44] if len(row) > 44 else ""
|
website_summary = row[44] if len(row) > 44 else ""
|
||||||
result = evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kategorien, website_summary)
|
result = evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kategorien, website_summary)
|
||||||
try:
|
try:
|
||||||
main_sheet.update(values=[[result["branch"]]], range_name=f"W{i}")
|
main_sheet.update(values=[[result["branch"]]], range_name=f"W{i}")
|
||||||
main_sheet.update(values=[[result["consistency"]]], range_name=f"X{i}")
|
main_sheet.update(values=[[result["consistency"]]], range_name=f"X{i}")
|
||||||
main_sheet.update(values=[[result["justification"]]], range_name=f"Y{i}")
|
main_sheet.update(values=[[result["justification"]]], range_name=f"Y{i}")
|
||||||
debug_print(f"Zeile {i}: Branch-Einschätzung aktualisiert: {result}")
|
current_timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
main_sheet.update(values=[[current_timestamp]], range_name=f"AO{i}")
|
||||||
|
main_sheet.update(values=[[Config.VERSION]], range_name=f"AP{i}")
|
||||||
|
debug_print(f"Zeile {i}: Branch-Einschätzung aktualisiert: {result} | Zeitstempel: {current_timestamp}, Version: {Config.VERSION}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
debug_print(f"Fehler beim Updaten der Branch-Daten in Zeile {i}: {e}")
|
debug_print(f"Fehler beim Updaten der Branch-Daten in Zeile {i}: {e}")
|
||||||
time.sleep(Config.RETRY_DELAY)
|
time.sleep(Config.RETRY_DELAY)
|
||||||
debug_print("Branch batch processing completed.")
|
debug_print("Branch batch processing completed.")
|
||||||
|
|
||||||
|
|
||||||
def run_dispatcher(mode, row_limit=None):
|
def run_dispatcher(mode, row_limit=None):
|
||||||
"""
|
"""
|
||||||
Dispatcher-Funktion:
|
Dispatcher-Funktion:
|
||||||
- Ermittelt aus dem Google Sheet ab Zeile 7 die erste Zeile, in der in Spalte AO (Index 41) kein Zeitstempel steht.
|
- Ermittelt ab Zeile 7 die erste Zeile, in der in Spalte AO (Index 41) kein Zeitstempel steht.
|
||||||
- Legt den zu verarbeitenden Bereich fest: ab diesem Startpunkt werden row_limit Zeilen (falls angegeben) verarbeitet.
|
- Legt den zu verarbeitenden Bereich fest: Ab diesem Startpunkt werden row_limit Zeilen (falls angegeben)
|
||||||
- Basierend auf dem Modus-Parameter (wiki, website, branch, combined) werden die entsprechenden Batch-Prozesse gestartet.
|
verarbeitet.
|
||||||
|
- Basierend auf dem mode-Parameter ("wiki", "website", "branch", "combined") werden die entsprechenden
|
||||||
|
Batch-Prozesse gestartet.
|
||||||
"""
|
"""
|
||||||
debug_print(f"Starte Dispatcher im Modus '{mode}' mit row_limit={row_limit}.")
|
debug_print(f"Starte Dispatcher im Modus '{mode}' mit row_limit={row_limit}.")
|
||||||
gc = gspread.authorize(ServiceAccountCredentials.from_json_keyfile_name(
|
gc = gspread.authorize(ServiceAccountCredentials.from_json_keyfile_name(
|
||||||
@@ -749,7 +759,8 @@ def _process_batch(main_sheet, batches, row_numbers):
|
|||||||
"""
|
"""
|
||||||
Hilfsfunktion: Bearbeitet einen Batch, indem ein aggregierter Prompt erstellt und
|
Hilfsfunktion: Bearbeitet einen Batch, indem ein aggregierter Prompt erstellt und
|
||||||
die aggregierte Antwort zeilenweise den entsprechenden Zeilennummern zugeordnet wird.
|
die aggregierte Antwort zeilenweise den entsprechenden Zeilennummern zugeordnet wird.
|
||||||
Die Ergebnisse werden in Spalten S bis Y geschrieben.
|
Die Ergebnisse werden in den Spalten S bis Y geschrieben, und anschließend wird
|
||||||
|
für jede Zeile der aktuelle Zeitstempel (Spalte AO) sowie die Versionsnummer (Spalte AP) eingetragen.
|
||||||
"""
|
"""
|
||||||
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. "
|
||||||
@@ -816,7 +827,11 @@ def _process_batch(main_sheet, batches, row_numbers):
|
|||||||
main_sheet.update(values=[[alt_article]], range_name=f"T{current_row}")
|
main_sheet.update(values=[[alt_article]], range_name=f"T{current_row}")
|
||||||
main_sheet.update(values=[[wiki_explanation]], range_name=f"U{current_row}")
|
main_sheet.update(values=[[wiki_explanation]], range_name=f"U{current_row}")
|
||||||
main_sheet.update(values=[["", "", "", ""]], range_name=f"V{current_row}:Y{current_row}")
|
main_sheet.update(values=[["", "", "", ""]], range_name=f"V{current_row}:Y{current_row}")
|
||||||
debug_print(f"Zeile {current_row} verifiziert: Antwort: {answer}")
|
# Neu: Setze Zeitstempel in Spalte AO und Version in Spalte AP
|
||||||
|
current_timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
main_sheet.update(values=[[current_timestamp]], range_name=f"AO{current_row}")
|
||||||
|
main_sheet.update(values=[[Config.VERSION]], range_name=f"AP{current_row}")
|
||||||
|
debug_print(f"Zeile {current_row} verifiziert: Antwort: {answer} | Zeitstempel: {current_timestamp}, Version: {Config.VERSION}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
debug_print(f"Fehler beim Updaten der Zeile {current_row}: {e}")
|
debug_print(f"Fehler beim Updaten der Zeile {current_row}: {e}")
|
||||||
time.sleep(Config.RETRY_DELAY)
|
time.sleep(Config.RETRY_DELAY)
|
||||||
|
|||||||
Reference in New Issue
Block a user