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_usn = windows_file.get('usn', 0)
|
||||||
windows_blake3 = windows_file.get('blake3Hash', '')
|
windows_blake3 = windows_file.get('blake3Hash', '')
|
||||||
|
|
||||||
espo_sync_usn = espo_doc.get('sync_usn', 0)
|
espo_sync_usn = espo_doc.get('usn', 0)
|
||||||
espo_sync_hash = espo_doc.get('syncHash', '')
|
espo_sync_hash = espo_doc.get('syncedHash', '')
|
||||||
|
|
||||||
# Check if Windows changed
|
# Check if Windows changed
|
||||||
windows_changed = windows_usn != espo_sync_usn
|
windows_changed = windows_usn != espo_sync_usn
|
||||||
|
|||||||
@@ -290,10 +290,10 @@ async def _run_advoware_sync(
|
|||||||
|
|
||||||
# Trigger preview
|
# Trigger preview
|
||||||
try:
|
try:
|
||||||
await ctx.emit('document.generate_preview', {
|
await ctx.enqueue({'topic': 'document.generate_preview', 'data': {
|
||||||
'entity_id': doc_id,
|
'entity_id': doc_id,
|
||||||
'entity_type': 'CDokumente',
|
'entity_type': 'CDokumente',
|
||||||
})
|
}})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
ctx.logger.warn(f" ⚠️ Preview trigger failed: {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)
|
await espocrm.update_entity('CDokumente', espo_doc['id'], update_data)
|
||||||
results['updated'] += 1
|
results['updated'] += 1
|
||||||
|
|
||||||
# Mark for re-sync to xAI (hash changed)
|
# Mark for re-sync to xAI only if content actually changed
|
||||||
if espo_doc.get('aiSyncStatus') == 'synced':
|
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'], {
|
await espocrm.update_entity('CDokumente', espo_doc['id'], {
|
||||||
'aiSyncStatus': 'unclean',
|
'aiSyncStatus': 'unclean',
|
||||||
})
|
})
|
||||||
|
|
||||||
try:
|
try:
|
||||||
await ctx.emit('document.generate_preview', {
|
await ctx.enqueue({'topic': 'document.generate_preview', 'data': {
|
||||||
'entity_id': espo_doc['id'],
|
'entity_id': espo_doc['id'],
|
||||||
'entity_type': 'CDokumente',
|
'entity_type': 'CDokumente',
|
||||||
})
|
}})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
ctx.logger.warn(f" ⚠️ Preview trigger failed: {e}")
|
ctx.logger.warn(f" ⚠️ Preview trigger failed: {e}")
|
||||||
|
|
||||||
|
|||||||
@@ -291,10 +291,10 @@ async def _run_advoware_sync(
|
|||||||
|
|
||||||
# Trigger preview
|
# Trigger preview
|
||||||
try:
|
try:
|
||||||
await ctx.emit('document.generate_preview', {
|
await ctx.enqueue({'topic': 'document.generate_preview', 'data': {
|
||||||
'entity_id': doc_id,
|
'entity_id': doc_id,
|
||||||
'entity_type': 'CDokumente',
|
'entity_type': 'CDokumente',
|
||||||
})
|
}})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
ctx.logger.warn(f" ⚠️ Preview trigger failed: {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['advowareArt'] = (history_entry.get('art', 'Schreiben') or 'Schreiben')[:100]
|
||||||
update_data['advowareBemerkung'] = (history_entry.get('text', '') or '')[:255]
|
update_data['advowareBemerkung'] = (history_entry.get('text', '') or '')[:255]
|
||||||
|
|
||||||
# Mark for re-sync to xAI if content changed
|
# Mark for re-sync to xAI only if file content actually changed
|
||||||
if espo_doc.get('aiSyncStatus') == 'synced':
|
# (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'
|
update_data['aiSyncStatus'] = 'unclean'
|
||||||
await espocrm.update_entity('CDokumente', espo_doc['id'], update_data)
|
await espocrm.update_entity('CDokumente', espo_doc['id'], update_data)
|
||||||
results['updated'] += 1
|
results['updated'] += 1
|
||||||
|
|
||||||
try:
|
try:
|
||||||
await ctx.emit('document.generate_preview', {
|
await ctx.enqueue({'topic': 'document.generate_preview', 'data': {
|
||||||
'entity_id': espo_doc['id'],
|
'entity_id': espo_doc['id'],
|
||||||
'entity_type': 'CDokumente',
|
'entity_type': 'CDokumente',
|
||||||
})
|
}})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
ctx.logger.warn(f" ⚠️ Preview trigger failed: {e}")
|
ctx.logger.warn(f" ⚠️ Preview trigger failed: {e}")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user