feat(sync): Update document preview trigger to use enqueue method and improve content change detection for xAI re-sync

This commit is contained in:
bsiggel
2026-03-26 16:17:52 +00:00
parent 5e9c791a1b
commit 439101f35d
3 changed files with 17 additions and 14 deletions

View File

@@ -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

View File

@@ -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}")

View File

@@ -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}")