feat(sync): Enhance xAI sync process with collection verification and creation logic

This commit is contained in:
bsiggel
2026-03-26 12:42:35 +00:00
parent a6dc708954
commit b320f01255

View File

@@ -399,12 +399,42 @@ async def _run_xai_sync(
ctx.logger.info("" * 60)
try:
# ── Ensure collection exists ───────────────────────────────────
collection_id = await upload_utils.ensure_collection(akte, xai, espocrm)
# ── Collection-ID ermitteln ────────────────────────────────────
ai_aktivierungsstatus = str(akte.get('aiAktivierungsstatus') or '').lower()
collection_id = akte.get('aiCollectionId')
if not collection_id:
ctx.logger.error("❌ Could not obtain xAI collection aborting xAI sync")
await espocrm.update_entity('CAkten', akte_id, {'aiSyncStatus': 'failed'})
return
if ai_aktivierungsstatus == 'new':
# Status 'new' → neue Collection anlegen
ctx.logger.info(" Status 'new' → Erstelle neue xAI Collection...")
collection_id = await upload_utils.ensure_collection(akte, xai, espocrm)
if not collection_id:
ctx.logger.error("❌ xAI Collection konnte nicht erstellt werden Sync abgebrochen")
await espocrm.update_entity('CAkten', akte_id, {'aiSyncStatus': 'failed'})
return
ctx.logger.info(f" ✅ Collection erstellt: {collection_id}")
# aiAktivierungsstatus → 'aktiv' wird in handler final_update gesetzt
else:
# aktiv (oder anderer Status) aber keine Collection-ID → Konfigurationsfehler
ctx.logger.error(
f"❌ aiAktivierungsstatus='{ai_aktivierungsstatus}' aber keine aiCollectionId vorhanden "
f"xAI Sync abgebrochen. Bitte Collection-ID in EspoCRM eintragen."
)
await espocrm.update_entity('CAkten', akte_id, {'aiSyncStatus': 'failed'})
return
else:
# Collection-ID vorhanden → verifizieren ob sie noch in xAI existiert
try:
col = await xai.get_collection(collection_id)
if not col:
ctx.logger.error(f"❌ Collection {collection_id} existiert nicht mehr in xAI Sync abgebrochen")
await espocrm.update_entity('CAkten', akte_id, {'aiSyncStatus': 'failed'})
return
ctx.logger.info(f" ✅ Collection verifiziert: {collection_id}")
except Exception as e:
ctx.logger.error(f"❌ Collection-Verifizierung fehlgeschlagen: {e} Sync abgebrochen")
await espocrm.update_entity('CAkten', akte_id, {'aiSyncStatus': 'failed'})
return
ctx.logger.info(f" Documents to check: {len(docs)}")