sync_manager.py aktualisiert

This commit is contained in:
2025-08-28 07:01:52 +00:00
parent b976bb2f39
commit 7ced96bc08

View File

@@ -186,4 +186,51 @@ class SyncManager:
if not rows_to_append and not updates_to_batch: if not rows_to_append and not updates_to_batch:
self.logger.info("Keine Änderungen festgestellt. Das Google Sheet ist bereits auf dem neuesten Stand.") self.logger.info("Keine Änderungen festgestellt. Das Google Sheet ist bereits auf dem neuesten Stand.")
self.logger.info("Synchronisation erfolgreich abgeschlossen.") self.logger.info("Synchronisation erfolgreich abgeschlossen.")
def debug_sync(self):
"""
Führt eine reine Analyse des Sync-Prozesses durch, ohne Daten zu schreiben.
Gibt detaillierte Debug-Informationen im Log aus.
"""
self.logger.info("========== START SYNC-DEBUG-MODUS ==========")
if not self._load_data():
self.logger.error("Debug abgebrochen, da das Laden der Daten fehlschlug.")
return
# 1. Analyse des D365 DataFrames
self.logger.info("\n--- D365 DataFrame Analyse ---")
d365_ids_series = self.d365_df['CRM ID'].dropna()
d365_ids = set(d365_ids_series)
self.logger.info(f"Anzahl Zeilen im D365 DataFrame: {len(self.d365_df)}")
self.logger.info(f"Anzahl nicht-leerer GUIDs in D365: {len(d365_ids)}")
self.logger.info(f"Erste 5 D365 GUIDs:\n{d365_ids_series.head().to_string()}")
self.logger.info(f"Letzte 5 D365 GUIDs:\n{d365_ids_series.tail().to_string()}")
# 2. Analyse des Google Sheet DataFrames
self.logger.info("\n--- Google Sheet DataFrame Analyse ---")
gsheet_ids_series = self.gsheet_df[self.gsheet_df['CRM ID'] != '']['CRM ID'].dropna()
gsheet_ids = set(gsheet_ids_series)
self.logger.info(f"Anzahl Zeilen im GSheet DataFrame: {len(self.gsheet_df)}")
self.logger.info(f"Anzahl nicht-leerer GUIDs im GSheet: {len(gsheet_ids)}")
self.logger.info(f"Erste 5 GSheet GUIDs:\n{gsheet_ids_series.head().to_string()}")
self.logger.info(f"Letzte 5 GSheet GUIDs:\n{gsheet_ids_series.tail().to_string()}")
# 3. Analyse der Set-Operationen
self.logger.info("\n--- Set-Analyse (Vergleich) ---")
new_ids = d365_ids - gsheet_ids
deleted_ids = gsheet_ids - d365_ids
existing_ids = d365_ids.intersection(gsheet_ids)
self.logger.info(f"Anzahl neuer IDs (in D365, nicht in GSheet): {len(new_ids)}")
self.logger.info(f"Anzahl zu archivierender IDs (in GSheet, nicht in D365): {len(deleted_ids)}")
self.logger.info(f"Größe der Schnittmenge (in beiden vorhanden): {len(existing_ids)}")
if len(existing_ids) < 90 and len(d365_ids) > 90:
self.logger.warning("WARNUNG: Die Schnittmenge ist unerwartet klein. Dies bestätigt den Verdacht eines Matching-Problems!")
# Zeige ein paar IDs, die hätten übereinstimmen sollen
if gsheet_ids:
self.logger.info(f"Beispiel-GUID aus GSheet, die nicht gefunden wurde: {next(iter(gsheet_ids))}")
self.logger.info("========== ENDE SYNC-DEBUG-MODUS ==========")