| 
					
				 | 
			
			
				@@ -25,7 +25,7 @@ from core.ops.langsmith_trace.entities.langsmith_trace_entity import ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     LangSmithRunType, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     LangSmithRunUpdateModel, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-from core.ops.utils import filter_none_values 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from core.ops.utils import filter_none_values, generate_dotted_order 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from extensions.ext_database import db 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from models.model import EndUser, MessageFile 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from models.workflow import WorkflowNodeExecution 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -62,6 +62,16 @@ class LangSmithDataTrace(BaseTraceInstance): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             self.generate_name_trace(trace_info) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def workflow_trace(self, trace_info: WorkflowTraceInfo): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        trace_id = trace_info.message_id or trace_info.workflow_app_log_id or trace_info.workflow_run_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        message_dotted_order = ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            generate_dotted_order(trace_info.message_id, trace_info.start_time) if trace_info.message_id else None 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        workflow_dotted_order = generate_dotted_order( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            trace_info.workflow_app_log_id or trace_info.workflow_run_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            trace_info.workflow_data.created_at, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            message_dotted_order, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if trace_info.message_id: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             message_run = LangSmithRunModel( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 id=trace_info.message_id, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -76,6 +86,8 @@ class LangSmithDataTrace(BaseTraceInstance): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 tags=["message", "workflow"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 error=trace_info.error, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                trace_id=trace_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                dotted_order=message_dotted_order, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             self.add_run(message_run) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -95,6 +107,8 @@ class LangSmithDataTrace(BaseTraceInstance): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             error=trace_info.error, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             tags=["workflow"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             parent_run_id=trace_info.message_id or None, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            trace_id=trace_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            dotted_order=workflow_dotted_order, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.add_run(langsmith_run) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -177,6 +191,7 @@ class LangSmithDataTrace(BaseTraceInstance): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 run_type = LangSmithRunType.tool 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            node_dotted_order = generate_dotted_order(node_execution_id, created_at, workflow_dotted_order) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             langsmith_run = LangSmithRunModel( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 total_tokens=node_total_tokens, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 name=node_type, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -191,6 +206,9 @@ class LangSmithDataTrace(BaseTraceInstance): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 parent_run_id=trace_info.workflow_app_log_id or trace_info.workflow_run_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 tags=["node_execution"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                id=node_execution_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                trace_id=trace_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                dotted_order=node_dotted_order, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             self.add_run(langsmith_run) 
			 |