diff --git a/brancheneinstufung.py b/brancheneinstufung.py index e656703b..f5218c98 100644 --- a/brancheneinstufung.py +++ b/brancheneinstufung.py @@ -14,7 +14,7 @@ import csv # ==================== KONFIGURATION ==================== class Config: - VERSION = "v1.3.13" # v1.3.13: Neuer Modus 8 integriert (Batch-Token-Zählung in Spalte AQ) + VERSION = "v1.3.13" # v1.3.13: Neuer Modus 8 (Batch-Token-Zählung in Spalte AQ) & Modus 51 (nur Verifizierung) LANG = "de" CREDENTIALS_FILE = "service_account.json" SHEET_URL = "https://docs.google.com/spreadsheets/d/1u_gHr9JUfmV1-iviRzbSe3575QEp7KLhK5jFV_gJcgo" @@ -373,7 +373,7 @@ def search_linkedin_contact(company_name, website, position_query): except Exception as e: debug_print("Fehler beim Lesen des SerpAPI-Schlüssels: " + str(e)) return None - search_name = company_name + search_name = company_name # Hier kannst du auch die Kurzform verwenden, falls vorhanden. query = f'site:linkedin.com/in "{position_query}" "{search_name}"' debug_print(f"Erstelle LinkedIn-Query: {query}") params = { @@ -446,16 +446,9 @@ def count_linkedin_contacts(company_name, website, position_query): debug_print(f"Fehler bei der SerpAPI-Suche (Count): {e}") return 0 -# ==================== NEUER MODUS 51: VERIFIZIERUNG (Nur Wikipedia + Brancheneinordnung) ==================== -def process_verification_only(): - debug_print("Starte Verifizierungs-Modus (Modus 51)...") - processor = DataProcessor() - for i, row in enumerate(processor.sheet_handler.sheet_values[1:], start=2): - if len(row) <= 25 or row[24].strip() == "": - processor._process_verification_row(i, row) - debug_print("Verifizierungs-Modus abgeschlossen.") - +# ==================== NEUE FUNKTION: _process_verification_row ==================== def _process_verification_row(self, row_num, row_data): + # Verarbeitung nur bis Spalte Y (Begründung Abweichung Branche) company_name = row_data[1] if len(row_data) > 1 else "" website = row_data[3] if len(row_data) > 3 else "" current_dt = datetime.now().strftime("%Y-%m-%d %H:%M:%S") @@ -505,7 +498,8 @@ def _process_verification_row(self, row_num, row_data): debug_print(f"Zeile {row_num} verifiziert: URL: {wiki_data.get('url', 'k.A.')}, Branche: {wiki_data.get('branche', 'k.A.')}") time.sleep(Config.RETRY_DELAY) -DataProcessor._process_verification_row = _process_verification_row +# Nach Abschluss der DataProcessor-Klasse wird diese Methode zugewiesen: +# (Siehe unten nach der Klassendefinition) # ==================== NEUER MODUS 8: BATCH-PROZESSING MIT TOKEN-ZÄHLUNG ==================== def process_batch_token_count(batch_size=10): @@ -520,29 +514,26 @@ def process_batch_token_count(batch_size=10): sh = gc.open_by_url(Config.SHEET_URL) main_sheet = sh.sheet1 data = main_sheet.get_all_values() - # Gehe in Schritten von batch_size Zeilen durch den Datensatz for i in range(2, len(data)+1, batch_size): batch_rows = data[i-1:i-1+batch_size] aggregated_prompt = "" for row in batch_rows: - # Verwende Spalte B (Firmenname), C (Kurzform), D (Website), E (Ort), F (Beschreibung) und G (Aktuelle Branche) info = [] if len(row) > 1: - info.append(row[1]) + info.append(row[1]) # Firmenname if len(row) > 2: - info.append(row[2]) + info.append(row[2]) # Kurzform if len(row) > 3: - info.append(row[3]) + info.append(row[3]) # Website if len(row) > 4: - info.append(row[4]) + info.append(row[4]) # Ort if len(row) > 5: - info.append(row[5]) + info.append(row[5]) # Beschreibung if len(row) > 6: - info.append(row[6]) + info.append(row[6]) # Aktuelle Branche aggregated_prompt += "; ".join(info) + "\n" token_count = count_tokens(aggregated_prompt) debug_print(f"Batch beginnend in Zeile {i}: {token_count} Tokens") - # Aktualisiere Spalte AQ für alle Zeilen im Batch for j in range(i, min(i+batch_size, len(data)+1)): main_sheet.update(values=[[str(token_count)]], range_name=f"AQ{j}") time.sleep(Config.RETRY_DELAY) @@ -919,6 +910,9 @@ class DataProcessor: f"Servicetechniker-Schätzung: {st_estimate if 'st_estimate' in locals() else 'k.A.'}") time.sleep(Config.RETRY_DELAY) +# Hier wird _process_verification_row nach der Definition von DataProcessor zugewiesen. +DataProcessor._process_verification_row = _process_verification_row + # ==================== NEUER MODUS 6: CONTACT RESEARCH (via SerpAPI) ==================== def process_contact_research(): debug_print("Starte Contact Research (Modus 6)...")