From 439101f35d987a1dbf70fdb1daa285c6c07e0853 Mon Sep 17 00:00:00 2001 From: bsiggel Date: Thu, 26 Mar 2026 16:17:52 +0000 Subject: [PATCH] feat(sync): Update document preview trigger to use enqueue method and improve content change detection for xAI re-sync --- services/advoware_document_sync_utils.py | 4 ++-- src/steps/akte/akte_sync_event_step.py | 13 +++++++------ src/steps/crm/akte/akte_sync_event_step.py | 14 ++++++++------ 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/services/advoware_document_sync_utils.py b/services/advoware_document_sync_utils.py index f394ecc..ff21fd2 100644 --- a/services/advoware_document_sync_utils.py +++ b/services/advoware_document_sync_utils.py @@ -176,8 +176,8 @@ class AdvowareDocumentSyncUtils: windows_usn = windows_file.get('usn', 0) windows_blake3 = windows_file.get('blake3Hash', '') - espo_sync_usn = espo_doc.get('sync_usn', 0) - espo_sync_hash = espo_doc.get('syncHash', '') + espo_sync_usn = espo_doc.get('usn', 0) + espo_sync_hash = espo_doc.get('syncedHash', '') # Check if Windows changed windows_changed = windows_usn != espo_sync_usn diff --git a/src/steps/akte/akte_sync_event_step.py b/src/steps/akte/akte_sync_event_step.py index 1f1bef7..820a71d 100644 --- a/src/steps/akte/akte_sync_event_step.py +++ b/src/steps/akte/akte_sync_event_step.py @@ -290,10 +290,10 @@ async def _run_advoware_sync( # Trigger preview try: - await ctx.emit('document.generate_preview', { + await ctx.enqueue({'topic': 'document.generate_preview', 'data': { 'entity_id': doc_id, 'entity_type': 'CDokumente', - }) + }}) except Exception as e: ctx.logger.warn(f" ⚠️ Preview trigger failed: {e}") @@ -326,17 +326,18 @@ async def _run_advoware_sync( await espocrm.update_entity('CDokumente', espo_doc['id'], update_data) results['updated'] += 1 - # Mark for re-sync to xAI (hash changed) - if espo_doc.get('aiSyncStatus') == 'synced': + # Mark for re-sync to xAI only if content actually changed + content_changed = blake3_hash != espo_doc.get('syncedHash', '') + if content_changed and espo_doc.get('aiSyncStatus') == 'synced': await espocrm.update_entity('CDokumente', espo_doc['id'], { 'aiSyncStatus': 'unclean', }) try: - await ctx.emit('document.generate_preview', { + await ctx.enqueue({'topic': 'document.generate_preview', 'data': { 'entity_id': espo_doc['id'], 'entity_type': 'CDokumente', - }) + }}) except Exception as e: ctx.logger.warn(f" ⚠️ Preview trigger failed: {e}") diff --git a/src/steps/crm/akte/akte_sync_event_step.py b/src/steps/crm/akte/akte_sync_event_step.py index 09fcdb1..df37071 100644 --- a/src/steps/crm/akte/akte_sync_event_step.py +++ b/src/steps/crm/akte/akte_sync_event_step.py @@ -291,10 +291,10 @@ async def _run_advoware_sync( # Trigger preview try: - await ctx.emit('document.generate_preview', { + await ctx.enqueue({'topic': 'document.generate_preview', 'data': { 'entity_id': doc_id, 'entity_type': 'CDokumente', - }) + }}) except Exception as e: ctx.logger.warn(f" ⚠️ Preview trigger failed: {e}") @@ -323,17 +323,19 @@ async def _run_advoware_sync( update_data['advowareArt'] = (history_entry.get('art', 'Schreiben') or 'Schreiben')[:100] update_data['advowareBemerkung'] = (history_entry.get('text', '') or '')[:255] - # Mark for re-sync to xAI if content changed - if espo_doc.get('aiSyncStatus') == 'synced': + # Mark for re-sync to xAI only if file content actually changed + # (USN can change without content change, e.g. metadata-only updates) + content_changed = blake3_hash != espo_doc.get('syncedHash', '') + if content_changed and espo_doc.get('aiSyncStatus') == 'synced': update_data['aiSyncStatus'] = 'unclean' await espocrm.update_entity('CDokumente', espo_doc['id'], update_data) results['updated'] += 1 try: - await ctx.emit('document.generate_preview', { + await ctx.enqueue({'topic': 'document.generate_preview', 'data': { 'entity_id': espo_doc['id'], 'entity_type': 'CDokumente', - }) + }}) except Exception as e: ctx.logger.warn(f" ⚠️ Preview trigger failed: {e}")