from services.advoware import AdvowareAPI import json import redis from config import Config config = { 'type': 'event', 'name': 'VMH Beteiligte Sync', 'description': 'Synchronisiert Beteiligte Entities von Advoware nach Änderungen (Create/Update/Delete)', 'subscribes': ['vmh.beteiligte.create', 'vmh.beteiligte.update', 'vmh.beteiligte.delete'], 'flows': ['vmh'], 'emits': [] } async def handler(event_data, context): try: entity_id = event_data.get('entity_id') action = event_data.get('action', 'unknown') if not entity_id: context.logger.error("Keine entity_id im Event gefunden") return context.logger.info(f"Starte {action.upper()} Sync für Beteiligte Entity: {entity_id}") # Advoware API initialisieren (für später) # advoware = AdvowareAPI(context) # PLATZHALTER: Für jetzt nur loggen, keine API-Anfrage context.logger.info(f"PLATZHALTER: {action.upper()} Sync für Entity {entity_id} würde hier Advoware API aufrufen") context.logger.info(f"PLATZHALTER: Entity-Daten würden hier verarbeitet werden") # TODO: Hier die Entity in das Zielsystem syncen (EspoCRM?) # Für Create: Neu anlegen # Für Update: Aktualisieren # Für Delete: Löschen # Entferne die ID aus der entsprechenden Pending-Queue redis_client = redis.Redis( host=Config.REDIS_HOST, port=int(Config.REDIS_PORT), db=int(Config.REDIS_DB_ADVOWARE_CACHE), decode_responses=True ) pending_key = f'vmh:beteiligte:{action}_pending' redis_client.srem(pending_key, entity_id) context.logger.info(f"Entity {entity_id} aus {action.upper()}-Pending-Queue entfernt") except Exception as e: context.logger.error(f"Fehler beim {event_data.get('action', 'unknown').upper()} Sync von Beteiligte Entity: {e}") context.logger.error(f"Event Data: {event_data}")