diff --git a/duplicate_checker.py b/duplicate_checker.py index ab5f822f..0f272f07 100644 --- a/duplicate_checker.py +++ b/duplicate_checker.py @@ -414,35 +414,39 @@ def main(job_id=None): 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}") - # Ergebnisse zurückschreiben - update_status(job_id, "Läuft", "Schreibe Ergebnisse zurück ins Sheet...") - logger.info("Schreibe Ergebnisse ins Sheet (SAFE in-place, keine Spaltenverluste)…") - 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'] + # --- Ergebnisse zurückschreiben --- + logger.info("Matching-Prozess abgeschlossen. Bereite Ergebnisse für den Upload vor...") + update_status(job_id, "Läuft", "Schreibe Ergebnisse zurück ins Google Sheet...") - drop_cols = ['normalized_name','normalized_domain','block_key','Effektive Website','domain_use_flag'] - for c in drop_cols: - if c in write_df.columns: - write_df.drop(columns=[c], inplace=True) + result_df = pd.DataFrame(results) + + # Füge die Ergebnisse zu den Originaldaten hinzu + # 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") backup_path = os.path.join(Config.LOG_DIR, f"{now}_backup_{MATCHING_SHEET_NAME}.csv") try: - write_df.to_csv(backup_path, index=False, encoding='utf-8') - logger.info(f"Lokales Backup geschrieben: {backup_path}") + # Stelle sicher, dass das Log-Verzeichnis existiert + 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: - 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() - ok = sheet.clear_and_write_data(MATCHING_SHEET_NAME, data) + # Konvertiere in Liste von Listen für den Upload + 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: - 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.") 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.") # Summary