| 
					
				 | 
			
			
				@@ -22,6 +22,10 @@ class OpsService: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # decrypt_token and obfuscated_token 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         tenant_id = db.session.query(App).filter(App.id == app_id).first().tenant_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         decrypt_tracing_config = OpsTraceManager.decrypt_tracing_config(tenant_id, tracing_provider, trace_config_data.tracing_config) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if tracing_provider == 'langfuse' and ('project_key' not in decrypt_tracing_config or not decrypt_tracing_config.get('project_key')): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            project_key = OpsTraceManager.get_trace_config_project_key(decrypt_tracing_config, tracing_provider) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            decrypt_tracing_config['project_key'] = project_key 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         decrypt_tracing_config = OpsTraceManager.obfuscated_decrypt_token(tracing_provider, decrypt_tracing_config) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         trace_config_data.tracing_config = decrypt_tracing_config 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -37,7 +41,7 @@ class OpsService: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         :param tracing_config: tracing config 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         :return: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if tracing_provider not in provider_config_map.keys() and tracing_provider != None: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if tracing_provider not in provider_config_map.keys() and tracing_provider: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return {"error": f"Invalid tracing provider: {tracing_provider}"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         config_class, other_keys = provider_config_map[tracing_provider]['config_class'], \ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -51,6 +55,9 @@ class OpsService: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if not OpsTraceManager.check_trace_config_is_effective(tracing_config, tracing_provider): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return {"error": "Invalid Credentials"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # get project key 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        project_key = OpsTraceManager.get_trace_config_project_key(tracing_config, tracing_provider) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # check if trace config already exists 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         trace_config_data: TraceAppConfig = db.session.query(TraceAppConfig).filter( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             TraceAppConfig.app_id == app_id, TraceAppConfig.tracing_provider == tracing_provider 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -62,6 +69,8 @@ class OpsService: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # get tenant id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         tenant_id = db.session.query(App).filter(App.id == app_id).first().tenant_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         tracing_config = OpsTraceManager.encrypt_tracing_config(tenant_id, tracing_provider, tracing_config) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if tracing_provider == 'langfuse': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tracing_config['project_key'] = project_key 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         trace_config_data = TraceAppConfig( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             app_id=app_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             tracing_provider=tracing_provider, 
			 |