feat(sync): Enhance metadata synchronization for unchanged files in Advoware sync process

This commit is contained in:
bsiggel
2026-03-31 06:26:33 +00:00
parent 52c4f84b44
commit 141eabae6d
3 changed files with 42 additions and 12 deletions

View File

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

View File

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