@@ -103,6 +103,42 @@ def hand_node(node, update_tool_map):
103103 node .get ("properties" , {}).get ("node_data" , {})["tool_lib_id" ] = update_tool_map .get (tool_lib_id , tool_lib_id )
104104
105105
106+ def update_form_knowledge_fields (workflow ):
107+ if workflow is None :
108+ return
109+ for node in workflow .get ("nodes" , []):
110+ if node .get ("type" ) == "form-node" :
111+ form_field_list = node .get ("properties" , {}).get ("node_data" , {}).get ("form_field_list" , [])
112+ for field in form_field_list :
113+ if field .get ("input_type" ) != "Knowledge" :
114+ continue
115+ knowledge_list = field .get ("attrs" , {}).get ("knowledge_list" , [])
116+ knowledge_id_list = [
117+ str (knowledge .get ("id" )) for knowledge in knowledge_list if knowledge .get ("id" ) is not None
118+ ]
119+ current_knowledge_dict = {
120+ str (knowledge .id ): knowledge
121+ for knowledge in QuerySet (Knowledge ).filter (id__in = list (set (knowledge_id_list )))
122+ }
123+ refreshed_knowledge_list = []
124+ for knowledge in knowledge_list :
125+ current_knowledge = current_knowledge_dict .get (str (knowledge .get ("id" )))
126+ if current_knowledge is None :
127+ refreshed_knowledge_list .append (knowledge )
128+ else :
129+ refreshed_knowledge_list .append (
130+ {
131+ ** knowledge ,
132+ "name" : current_knowledge .name ,
133+ "type" : current_knowledge .type ,
134+ "embedding_model_id" : current_knowledge .embedding_model_id ,
135+ }
136+ )
137+ field .setdefault ("attrs" , {})["knowledge_list" ] = refreshed_knowledge_list
138+ if node .get ("type" ) == "loop-node" :
139+ update_form_knowledge_fields (node .get ("properties" , {}).get ("node_data" , {}).get ("loop_body" ) or {})
140+
141+
106142class MKInstance :
107143 def __init__ (self , application : dict , function_lib_list : List [dict ], version : str , tool_list : List [dict ]):
108144 self .application = application
@@ -1408,6 +1444,7 @@ def one(self, with_valid=True):
14081444 knowledge_id_list = [k .get ("id" ) for k in knowledge_list ]
14091445 else :
14101446 self .update_knowledge_node (application .work_flow , available_knowledge_dict )
1447+ update_form_knowledge_fields (application .work_flow )
14111448
14121449 return {
14131450 ** ApplicationSerializerModel (application ).data ,
0 commit comments