duplicate_checker.py aktualisiert

This commit is contained in:
2025-08-18 12:27:31 +00:00
parent 2f009027c3
commit f973c24df7

View File

@@ -414,35 +414,39 @@ def main(job_id=None):
results.append({'Match':'', 'Score': best_score, 'Match_Grund': f"{best_comp} | {reason} TH={applied_threshold}"}) results.append({'Match':'', 'Score': best_score, 'Match_Grund': f"{best_comp} | {reason} TH={applied_threshold}"})
logger.info(f" --> Kein Match (Score={best_score}) {best_comp} | {reason} TH={applied_threshold}") logger.info(f" --> Kein Match (Score={best_score}) {best_comp} | {reason} TH={applied_threshold}")
# Ergebnisse zurückschreiben # --- Ergebnisse zurückschreiben ---
update_status(job_id, "Läuft", "Schreibe Ergebnisse zurück ins Sheet...") logger.info("Matching-Prozess abgeschlossen. Bereite Ergebnisse für den Upload vor...")
logger.info("Schreibe Ergebnisse ins Sheet (SAFE in-place, keine Spaltenverluste)…") update_status(job_id, "Läuft", "Schreibe Ergebnisse zurück ins Google Sheet...")
res_df = pd.DataFrame(results, index=match_df.index)
write_df = match_df.copy()
write_df['Match'] = res_df['Match']
write_df['Score'] = res_df['Score']
write_df['Match_Grund'] = res_df['Match_Grund']
drop_cols = ['normalized_name','normalized_domain','block_key','Effektive Website','domain_use_flag'] result_df = pd.DataFrame(results)
for c in drop_cols:
if c in write_df.columns: # Füge die Ergebnisse zu den Originaldaten hinzu
write_df.drop(columns=[c], inplace=True) # original_matching_df ist die saubere Kopie von Anfang an
output_df = pd.concat([original_matching_df.reset_index(drop=True), result_df], axis=1)
# Backup-Logik
now = datetime.now().strftime("%Y-%m-%d_%H-%M") now = datetime.now().strftime("%Y-%m-%d_%H-%M")
backup_path = os.path.join(Config.LOG_DIR, f"{now}_backup_{MATCHING_SHEET_NAME}.csv") backup_path = os.path.join(Config.LOG_DIR, f"{now}_backup_{MATCHING_SHEET_NAME}.csv")
try: try:
write_df.to_csv(backup_path, index=False, encoding='utf-8') # Stelle sicher, dass das Log-Verzeichnis existiert
logger.info(f"Lokales Backup geschrieben: {backup_path}") os.makedirs(Config.LOG_DIR, exist_ok=True)
output_df.to_csv(backup_path, index=False, encoding='utf-8-sig', sep=';')
logger.info(f"Lokales Backup der Ergebnisse wurde in '{backup_path}' geschrieben.")
except Exception as e: except Exception as e:
logger.warning(f"Backup fehlgeschlagen: {e}") logger.warning(f"Backup der Ergebnisse konnte nicht geschrieben werden: {e}")
data = [write_df.columns.tolist()] + write_df.fillna('').values.tolist() # Konvertiere in Liste von Listen für den Upload
ok = sheet.clear_and_write_data(MATCHING_SHEET_NAME, data) data_to_write = [output_df.columns.tolist()] + output_df.fillna('').values.tolist()
logger.info(f"Versuche, {len(data_to_write) - 1} Ergebniszeilen in das Sheet '{MATCHING_SHEET_NAME}' zu schreiben...")
ok = sheet.clear_and_write_data(MATCHING_SHEET_NAME, data_to_write)
if ok: if ok:
logger.info("Ergebnisse erfolgreich geschrieben") logger.info("Ergebnisse erfolgreich in das Google Sheet geschrieben.")
update_status(job_id, "Abgeschlossen", f"{total} Accounts erfolgreich geprüft.") update_status(job_id, "Abgeschlossen", f"{total} Accounts erfolgreich geprüft.")
else: else:
logger.error("Fehler beim Schreiben ins Google Sheet") logger.error("Fehler beim Schreiben der Ergebnisse ins Google Sheet.")
update_status(job_id, "Fehlgeschlagen", "Fehler beim Schreiben ins Google Sheet.") update_status(job_id, "Fehlgeschlagen", "Fehler beim Schreiben ins Google Sheet.")
# Summary # Summary