feat(sync): Enhance metadata synchronization for unchanged files in Advoware sync process
This commit is contained in:
@@ -247,7 +247,17 @@ async def _run_advoware_sync(
|
||||
ctx.logger.info(f" [{action.action:12s}] {filename} (hnr={hnr}) – {action.reason}")
|
||||
|
||||
if action.action == 'SKIP':
|
||||
results['skipped'] += 1
|
||||
# Even for unchanged files: sync metadata from History (art, text, hnr, dat)
|
||||
if espo_doc and history_entry:
|
||||
needs_meta_update, meta_updates = sync_utils.should_sync_metadata(espo_doc, history_entry)
|
||||
if needs_meta_update:
|
||||
await espocrm.update_entity('CDokumente', espo_doc['id'], meta_updates)
|
||||
ctx.logger.info(f" [META UPDATE ] {filename} (hnr={hnr}) – {list(meta_updates.keys())}")
|
||||
results['updated'] += 1
|
||||
else:
|
||||
results['skipped'] += 1
|
||||
else:
|
||||
results['skipped'] += 1
|
||||
|
||||
elif action.action == 'CREATE':
|
||||
if not windows_file:
|
||||
@@ -274,6 +284,7 @@ async def _run_advoware_sync(
|
||||
'hnr': history_entry.get('hNr') if history_entry else None,
|
||||
'advowareArt': (history_entry.get('art', 'Schreiben') or 'Schreiben')[:100] if history_entry else 'Schreiben',
|
||||
'advowareBemerkung': (history_entry.get('text', '') or '')[:255] if history_entry else '',
|
||||
'advowareErstellungTimestamp': ((history_entry.get('dat') or '').replace('T', ' ')[:19] or None) if history_entry else None,
|
||||
'dateipfad': windows_file.get('path', ''),
|
||||
'blake3hash': blake3_hash,
|
||||
'syncedHash': blake3_hash,
|
||||
@@ -322,6 +333,9 @@ async def _run_advoware_sync(
|
||||
update_data['hnr'] = history_entry.get('hNr')
|
||||
update_data['advowareArt'] = (history_entry.get('art', 'Schreiben') or 'Schreiben')[:100]
|
||||
update_data['advowareBemerkung'] = (history_entry.get('text', '') or '')[:255]
|
||||
erstellung_dat = (history_entry.get('dat') or '').replace('T', ' ')[:19]
|
||||
if erstellung_dat:
|
||||
update_data['advowareErstellungTimestamp'] = erstellung_dat
|
||||
|
||||
await espocrm.update_entity('CDokumente', espo_doc['id'], update_data)
|
||||
results['updated'] += 1
|
||||
|
||||
@@ -264,7 +264,17 @@ async def _run_advoware_sync(
|
||||
ctx.logger.info(f" [{action.action:12s}] {filename} (hnr={hnr}) – {action.reason}")
|
||||
|
||||
if action.action == 'SKIP':
|
||||
results['skipped'] += 1
|
||||
# Even for unchanged files: sync metadata from History (art, text, hnr, dat)
|
||||
if espo_doc and history_entry:
|
||||
needs_meta_update, meta_updates = sync_utils.should_sync_metadata(espo_doc, history_entry)
|
||||
if needs_meta_update:
|
||||
await espocrm.update_entity('CDokumente', espo_doc['id'], meta_updates)
|
||||
ctx.logger.info(f" [META UPDATE ] {filename} (hnr={hnr}) – {list(meta_updates.keys())}")
|
||||
results['updated'] += 1
|
||||
else:
|
||||
results['skipped'] += 1
|
||||
else:
|
||||
results['skipped'] += 1
|
||||
|
||||
elif action.action == 'CREATE':
|
||||
if not windows_file:
|
||||
@@ -290,6 +300,7 @@ async def _run_advoware_sync(
|
||||
'hnr': history_entry.get('hNr') if history_entry else None,
|
||||
'advowareArt': (history_entry.get('art', 'Schreiben') or 'Schreiben')[:100] if history_entry else 'Schreiben',
|
||||
'advowareBemerkung': (history_entry.get('text', '') or '')[:255] if history_entry else '',
|
||||
'advowareErstellungTimestamp': ((history_entry.get('dat') or '').replace('T', ' ')[:19] or None) if history_entry else None,
|
||||
'dateipfad': windows_file.get('path', ''),
|
||||
'blake3hash': blake3_hash,
|
||||
'syncedHash': blake3_hash,
|
||||
@@ -337,6 +348,9 @@ async def _run_advoware_sync(
|
||||
update_data['hnr'] = history_entry.get('hNr')
|
||||
update_data['advowareArt'] = (history_entry.get('art', 'Schreiben') or 'Schreiben')[:100]
|
||||
update_data['advowareBemerkung'] = (history_entry.get('text', '') or '')[:255]
|
||||
erstellung_dat = (history_entry.get('dat') or '').replace('T', ' ')[:19]
|
||||
if erstellung_dat:
|
||||
update_data['advowareErstellungTimestamp'] = erstellung_dat
|
||||
|
||||
# Mark for re-sync to xAI only if file content actually changed
|
||||
# (USN can change without content change, e.g. metadata-only updates)
|
||||
|
||||
Reference in New Issue
Block a user