sync_manager.py aktualisiert

This commit is contained in:
2025-08-28 07:01:52 +00:00
parent bd1588b281
commit f32623ae64

View File

@@ -186,4 +186,51 @@ class SyncManager:
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("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 ==========")