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 .constants .cache_version import Cache_Version
1819from common .db .search import page_search
1920from common .exception .app_exception import AppApiException
2021from common .utils .rsa_util import rsa_long_decrypt
2122from common .utils .tool_code import ToolExecutor
2223from knowledge .models import KnowledgeScope , Knowledge , KnowledgeType , KnowledgeWorkflow , KnowledgeWorkflowVersion
2324from knowledge .models .knowledge_action import KnowledgeAction , State
2425from knowledge .serializers .knowledge import KnowledgeModelSerializer
25- from maxkb . const import CONFIG
26+ from django . core . cache import cache
2627from system_manage .models import AuthTargetType
2728from system_manage .serializers .user_resource_permission import UserResourcePermissionSerializer
2829from tools .models import Tool
@@ -52,7 +53,11 @@ class KnowledgeWorkflowActionSerializer(serializers.Serializer):
5253 knowledge_id = serializers .UUIDField (required = True , label = _ ('knowledge id' ))
5354
5455 def get_query_set (self , instance : Dict ):
55- query_set = QuerySet (KnowledgeAction ).filter (knowledge_id = self .data .get ('knowledge_id' )).values ('id' ,'knowledge_id' ,"state" ,'meta' ,'run_time' ,"create_time" )
56+ query_set = QuerySet (KnowledgeAction ).filter (knowledge_id = self .data .get ('knowledge_id' )).values ('id' ,
57+ 'knowledge_id' ,
58+ "state" , 'meta' ,
59+ 'run_time' ,
60+ "create_time" )
5661 if instance .get ("user_name" ):
5762 query_set = query_set .filter (meta__user_name__icontains = instance .get ('user_name' ))
5863 if instance .get ('state' ):
@@ -73,7 +78,8 @@ def page(self, current_page, page_size, instance: Dict, is_valid=True):
7378 KnowledgeWorkflowActionListQuerySerializer (data = instance ).is_valid (raise_exception = True )
7479 return page_search (current_page , page_size , self .get_query_set (instance ),
7580 lambda a : {'id' : a .get ("id" ), 'knowledge_id' : a .get ("knowledge_id" ), 'state' : a .get ("state" ),
76- 'meta' : a .get ("meta" ), 'run_time' : a .get ("run_time" ), 'create_time' : a .get ("create_time" )})
81+ 'meta' : a .get ("meta" ), 'run_time' : a .get ("run_time" ),
82+ 'create_time' : a .get ("create_time" )})
7783
7884 def action (self , instance : Dict , user , with_valid = True ):
7985 if with_valid :
@@ -91,7 +97,10 @@ def action(self, instance: Dict, user, with_valid=True):
9197 {'knowledge_id' : self .data .get ("knowledge_id" ), 'knowledge_action_id' : knowledge_action_id , 'stream' : True ,
9298 'workspace_id' : self .data .get ("workspace_id" ),
9399 ** instance },
94- KnowledgeWorkflowPostHandler (None , knowledge_action_id ))
100+ KnowledgeWorkflowPostHandler (None , knowledge_action_id ),
101+ is_the_task_interrupted = lambda : cache .get (
102+ Cache_Version .KNOWLEDGE_WORKFLOW_INTERRUPTED .get_key (action_id = knowledge_action_id ),
103+ version = Cache_Version .KNOWLEDGE_WORKFLOW_INTERRUPTED .get_version ()) or False )
95104 work_flow_manage .run ()
96105 return {'id' : knowledge_action_id , 'knowledge_id' : self .data .get ("knowledge_id" ), 'state' : State .STARTED ,
97106 'details' : {}, 'meta' : meta }
@@ -135,6 +144,15 @@ def one(self, is_valid=True):
135144 'details' : knowledge_action .details ,
136145 'meta' : knowledge_action .meta }
137146
147+ def cancel (self , is_valid = True ):
148+ if is_valid :
149+ self .is_valid (raise_exception = True )
150+ knowledge_action_id = self .data .get ("id" )
151+ cache .set (Cache_Version .KNOWLEDGE_WORKFLOW_INTERRUPTED .get_key (action_id = knowledge_action_id ), True ,
152+ version = Cache_Version .KNOWLEDGE_WORKFLOW_INTERRUPTED .get_version ())
153+ QuerySet (KnowledgeAction ).filter (id = knowledge_action_id ).update (state = State .REVOKE )
154+ return True
155+
138156
139157class KnowledgeWorkflowSerializer (serializers .Serializer ):
140158 class Datasource (serializers .Serializer ):
0 commit comments