fix: 修复【知识库】设置中关联应用未显示在高级编排中使用该知识库的应用 (#695)

This commit is contained in:
shaohuzhang1 2024-07-03 14:41:45 +08:00 committed by GitHub
parent 171d1aaea0
commit bcb27737dc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -552,6 +552,7 @@ class ApplicationSerializer(serializers.Serializer):
dataset_list = self.list_dataset(with_valid=False) dataset_list = self.list_dataset(with_valid=False)
dataset_id_list = self.update_reverse_search_node(work_flow, dataset_id_list = self.update_reverse_search_node(work_flow,
[str(dataset.get('id')) for dataset in dataset_list]) [str(dataset.get('id')) for dataset in dataset_list])
application.work_flow = work_flow application.work_flow = work_flow
application.save() application.save()
# 插入知识库关联关系 # 插入知识库关联关系
@ -589,7 +590,7 @@ class ApplicationSerializer(serializers.Serializer):
def update_reverse_search_node(self, work_flow, user_dataset_id_list: List): def update_reverse_search_node(self, work_flow, user_dataset_id_list: List):
search_node_list = self.get_search_node(work_flow) search_node_list = self.get_search_node(work_flow)
dataset_id_list = [] result_dataset_id_list = []
for search_node in search_node_list: for search_node in search_node_list:
node_data = search_node.get('properties', {}).get('node_data', {}) node_data = search_node.get('properties', {}).get('node_data', {})
dataset_id_list = node_data.get('dataset_id_list', []) dataset_id_list = node_data.get('dataset_id_list', [])
@ -603,8 +604,8 @@ class ApplicationSerializer(serializers.Serializer):
source_dataset_id_list = list({*source_dataset_id_list, *dataset_id_list}) source_dataset_id_list = list({*source_dataset_id_list, *dataset_id_list})
node_data['source_dataset_id_list'] = [] node_data['source_dataset_id_list'] = []
node_data['dataset_id_list'] = source_dataset_id_list node_data['dataset_id_list'] = source_dataset_id_list
dataset_id_list = [*source_dataset_id_list, *dataset_id_list] result_dataset_id_list = [*source_dataset_id_list, *result_dataset_id_list]
return list(set(dataset_id_list)) return list(set(result_dataset_id_list))
def profile(self, with_valid=True): def profile(self, with_valid=True):
if with_valid: if with_valid:
@ -667,6 +668,8 @@ class ApplicationSerializer(serializers.Serializer):
@staticmethod @staticmethod
def save_application_mapping(dataset_id_list, application_id): def save_application_mapping(dataset_id_list, application_id):
# 需要排除已删除的数据集
dataset_id_list = [dataset.id for dataset in QuerySet(DataSet).filter(id__in=dataset_id_list)]
# 删除已经关联的id # 删除已经关联的id
QuerySet(ApplicationDatasetMapping).filter(dataset_id__in=dataset_id_list, QuerySet(ApplicationDatasetMapping).filter(dataset_id__in=dataset_id_list,
application_id=application_id).delete() application_id=application_id).delete()