feat(sync): Update document preview trigger to use enqueue method and improve content change detection for xAI re-sync
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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}")
|
||||
|
||||
|
||||
@@ -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}")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user