1515from application .flow .knowledge_workflow_manage import KnowledgeWorkflowManage
1616from application .flow .step_node import get_node
1717from application .serializers .application import get_mcp_tools
18+ from common .db .search import page_search
1819from common .exception .app_exception import AppApiException
1920from common .utils .rsa_util import rsa_long_decrypt
2021from common .utils .tool_code import ToolExecutor
@@ -41,16 +42,46 @@ class KnowledgeWorkflowActionRequestSerializer(serializers.Serializer):
4142 knowledge_base = serializers .DictField (required = True , label = _ ('knowledge base data' ))
4243
4344
45+ class KnowledgeWorkflowActionListQuerySerializer (serializers .Serializer ):
46+ user_name = serializers .CharField (required = False , label = _ ('Name' ), allow_blank = True , allow_null = True )
47+
48+
4449class KnowledgeWorkflowActionSerializer (serializers .Serializer ):
4550 workspace_id = serializers .CharField (required = True , label = _ ('workspace id' ))
4651 knowledge_id = serializers .UUIDField (required = True , label = _ ('knowledge id' ))
4752
48- def action (self , instance : Dict , with_valid = True ):
53+ def get_query_set (self , instance : Dict ):
54+ query_set = QuerySet (KnowledgeAction ).filter (knowledge_id = self .data .get ('knowledge_id' ))
55+ if instance .get ("user_name" ):
56+ query_set = query_set .filter (meta__user_name__icontains = instance .get ('user_name' ))
57+ return query_set .order_by ('-create_time' )
58+
59+ def list (self , instance : Dict , is_valid = True ):
60+ if is_valid :
61+ self .is_valid (raise_exception = True )
62+ KnowledgeWorkflowActionListQuerySerializer (data = instance ).is_valid (raise_exception = True )
63+ return [{'id' : a .id , 'knowledge_id' : a .knowledge_id , 'state' : a .state ,
64+ 'details' : a .details , 'meta' : a .meta , 'run_time' : a .run_time } for a in self .get_query_set (instance )]
65+
66+ def page (self , current_page , page_size , instance : Dict , is_valid = True ):
67+ if is_valid :
68+ self .is_valid (raise_exception = True )
69+ KnowledgeWorkflowActionListQuerySerializer (data = instance ).is_valid (raise_exception = True )
70+ return page_search (current_page , page_size , self .get_query_set (instance ),
71+ lambda a : {'id' : a .id , 'knowledge_id' : a .knowledge_id , 'state' : a .state ,
72+ 'details' : a .details , 'meta' : a .meta , 'run_time' : a .run_time })
73+
74+ def action (self , instance : Dict , user , with_valid = True ):
4975 if with_valid :
5076 self .is_valid (raise_exception = True )
5177 knowledge_workflow = QuerySet (KnowledgeWorkflow ).filter (knowledge_id = self .data .get ("knowledge_id" )).first ()
5278 knowledge_action_id = uuid .uuid7 ()
53- KnowledgeAction (id = knowledge_action_id , knowledge_id = self .data .get ("knowledge_id" ), state = State .STARTED ).save ()
79+ meta = {'user_id' : str (user .id ),
80+ 'user_name' : user .username }
81+ KnowledgeAction (id = knowledge_action_id ,
82+ knowledge_id = self .data .get ("knowledge_id" ),
83+ state = State .STARTED ,
84+ meta = meta ).save ()
5485 work_flow_manage = KnowledgeWorkflowManage (
5586 Workflow .new_instance (knowledge_workflow .work_flow , WorkflowMode .KNOWLEDGE ),
5687 {'knowledge_id' : self .data .get ("knowledge_id" ), 'knowledge_action_id' : knowledge_action_id , 'stream' : True ,
@@ -59,9 +90,9 @@ def action(self, instance: Dict, with_valid=True):
5990 KnowledgeWorkflowPostHandler (None , knowledge_action_id ))
6091 work_flow_manage .run ()
6192 return {'id' : knowledge_action_id , 'knowledge_id' : self .data .get ("knowledge_id" ), 'state' : State .STARTED ,
62- 'details' : {}}
93+ 'details' : {}, 'meta' : meta }
6394
64- def upload_document (self , instance : Dict , with_valid = True ):
95+ def upload_document (self , instance : Dict , user , with_valid = True ):
6596 if with_valid :
6697 self .is_valid (raise_exception = True )
6798 knowledge_workflow = QuerySet (KnowledgeWorkflow ).filter (knowledge_id = self .data .get ("knowledge_id" )).first ()
@@ -71,7 +102,10 @@ def upload_document(self, instance: Dict, with_valid=True):
71102 knowledge_id = self .data .get ("knowledge_id" )).order_by (
72103 '-create_time' )[0 :1 ].first ()
73104 knowledge_action_id = uuid .uuid7 ()
74- KnowledgeAction (id = knowledge_action_id , knowledge_id = self .data .get ("knowledge_id" ), state = State .STARTED ).save ()
105+ meta = {'user_id' : str (user .id ),
106+ 'user_name' : user .username }
107+ KnowledgeAction (id = knowledge_action_id , knowledge_id = self .data .get ("knowledge_id" ), state = State .STARTED ,
108+ meta = meta ).save ()
75109 work_flow_manage = KnowledgeWorkflowManage (
76110 Workflow .new_instance (knowledge_workflow_version .work_flow , WorkflowMode .KNOWLEDGE ),
77111 {'knowledge_id' : self .data .get ("knowledge_id" ), 'knowledge_action_id' : knowledge_action_id , 'stream' : True ,
@@ -80,7 +114,7 @@ def upload_document(self, instance: Dict, with_valid=True):
80114 KnowledgeWorkflowPostHandler (None , knowledge_action_id ))
81115 work_flow_manage .run ()
82116 return {'id' : knowledge_action_id , 'knowledge_id' : self .data .get ("knowledge_id" ), 'state' : State .STARTED ,
83- 'details' : {}}
117+ 'details' : {}, 'meta' : meta }
84118
85119 class Operate (serializers .Serializer ):
86120 workspace_id = serializers .CharField (required = True , label = _ ('workspace id' ))
@@ -94,7 +128,8 @@ def one(self, is_valid=True):
94128 knowledge_action = QuerySet (KnowledgeAction ).filter (id = knowledge_action_id ).first ()
95129 return {'id' : knowledge_action_id , 'knowledge_id' : knowledge_action .knowledge_id ,
96130 'state' : knowledge_action .state ,
97- 'details' : knowledge_action .details }
131+ 'details' : knowledge_action .details ,
132+ 'meta' : knowledge_action .meta }
98133
99134
100135class KnowledgeWorkflowSerializer (serializers .Serializer ):
0 commit comments