Loading
feat(traffic-influence): add TrafficInfluenceService
create_traffic_influence: resolves edgeCloudZoneId/edgeCloudRegion to a resource_zone_id (region has no SRM field of its own -- resolved locally via the same zones lookup EAM uses), uses service_specification_id = appId (ADR-0011: this holds for an already-onboarded app, unlike QoD's synthetic id), persists Operation + TrafficInfluence rows, persists subscriptionRequest into the generic CallbackRegistration table, then publishes the activate command and returns an ORDERED response. handle_completed: branches on TRAFFIC_INFLUENCE vs TRAFFIC_INFLUENCE_DEACTIVATE. The deactivate completion can't be looked up by operation_id (the deactivate command mints its own, distinct from the row's stored operation_id) -- recovered instead from traffic_influence_id stashed in the deactivate operation's own metadata, so both activate and deactivate outcomes update the row's state (active/error/deleted), unlike QoD's handle_completed which only ever resolves the activate side. get/list_traffic_influence proxy straight to the SRM client (open contract gap, see next commits). delete_traffic_influence mirrors QoD's 404-before-external_ref guard and additionally marks the local row "deletion in progress" per the CAMARA state enum.