From 79b47bb1b38c6d3c572da0a5a2a35cc7cb32a23a Mon Sep 17 00:00:00 2001 From: zhangzhanwei Date: Tue, 28 Oct 2025 18:07:37 +0800 Subject: [PATCH] feat: Node execute --- .../impl/base_variable_aggregation_node.py | 38 +++++++++++++++---- ui/src/locales/lang/en-US/common.ts | 1 + ui/src/locales/lang/zh-CN/common.ts | 1 + ui/src/locales/lang/zh-Hant/common.ts | 1 + .../nodes/variable-aggregation-node/index.vue | 18 +-------- 5 files changed, 34 insertions(+), 25 deletions(-) diff --git a/apps/application/flow/step_node/variable_aggregation_node/impl/base_variable_aggregation_node.py b/apps/application/flow/step_node/variable_aggregation_node/impl/base_variable_aggregation_node.py index 700f76dc3..d1daf74ee 100644 --- a/apps/application/flow/step_node/variable_aggregation_node/impl/base_variable_aggregation_node.py +++ b/apps/application/flow/step_node/variable_aggregation_node/impl/base_variable_aggregation_node.py @@ -1,4 +1,4 @@ -#coding=utf-8 +# coding=utf-8 """ @project: MaxKB @Author:虎² @@ -16,6 +16,8 @@ class BaseVariableAggregationNode(IVariableAggregation): for key, value in details.get('result').items(): self.context['key'] = value self.context['result'] = details.get('result') + self.context['strategy'] = details.get('strategy') + self.context['group_list'] = details.get('group_list') def get_first_non_null(self, variable_list): @@ -30,17 +32,35 @@ class BaseVariableAggregationNode(IVariableAggregation): def set_variable_to_json(self, variable_list): return {variable.get('variable')[1:][0]: self.workflow_manage.get_reference_field( - variable.get('variable')[0], - variable.get('variable')[1:]) for variable in variable_list} + variable.get('variable')[0], + variable.get('variable')[1:]) for variable in variable_list} - def execute(self,strategy,group_list,**kwargs) -> NodeResult: - strategy_map = {'first_non_null':self.get_first_non_null, + def reset_variable(self, variable): + value = self.workflow_manage.get_reference_field( + variable.get('variable')[0], + variable.get('variable')[1:]) + node_id = variable.get('variable')[0] + node = self.workflow_manage.flow.get_node(node_id) + return {"value": value, 'node_name': node.properties.get('stepName') if node is not None else node_id, + 'field': variable.get('variable')[1]} + + def reset_group_list(self, group_list): + result = [] + for g in group_list: + b = {'label': g.get('label'), + 'variable_list': [self.reset_variable(variable) for variable in g.get('variable_list')]} + result.append(b) + return result + + def execute(self, strategy, group_list, **kwargs) -> NodeResult: + strategy_map = {'first_non_null': self.get_first_non_null, 'variable_to_json': self.set_variable_to_json, } - result = { item.get('field'):strategy_map[strategy](item.get('variable_list')) for item in group_list} + result = {item.get('field'): strategy_map[strategy](item.get('variable_list')) for item in group_list} - return NodeResult({'result': result,**result},{}) + return NodeResult( + {'result': result, 'strategy': strategy, 'group_list': self.reset_group_list(group_list), **result}, {}) def get_details(self, index: int, **kwargs): return { @@ -49,6 +69,8 @@ class BaseVariableAggregationNode(IVariableAggregation): 'run_time': self.context.get('run_time'), 'type': self.node.type, 'result': self.context.get('result'), + 'strategy': self.context.get('strategy'), + 'group_list': self.context.get('group_list'), 'status': self.status, 'err_message': self.err_message - } \ No newline at end of file + } diff --git a/ui/src/locales/lang/en-US/common.ts b/ui/src/locales/lang/en-US/common.ts index 387e98864..4c5f629ee 100644 --- a/ui/src/locales/lang/en-US/common.ts +++ b/ui/src/locales/lang/en-US/common.ts @@ -74,6 +74,7 @@ export default { editParam: 'Edit Parameter', addParam: 'Add Parameter', }, + aggregationStrategy: 'Aggregation Strategy', inputPlaceholder: 'Please input', selectPlaceholder: 'Please select', title: 'Title', diff --git a/ui/src/locales/lang/zh-CN/common.ts b/ui/src/locales/lang/zh-CN/common.ts index aa8e62d61..f0dc6a198 100644 --- a/ui/src/locales/lang/zh-CN/common.ts +++ b/ui/src/locales/lang/zh-CN/common.ts @@ -78,6 +78,7 @@ export default { editParam: '编辑参数', addParam: '添加参数', }, + aggregationStrategy: '聚合策略', inputPlaceholder: '请输入', selectPlaceholder: '请选择', title: '标题', diff --git a/ui/src/locales/lang/zh-Hant/common.ts b/ui/src/locales/lang/zh-Hant/common.ts index 77b93fad2..a040de098 100644 --- a/ui/src/locales/lang/zh-Hant/common.ts +++ b/ui/src/locales/lang/zh-Hant/common.ts @@ -74,6 +74,7 @@ export default { editParam: '編輯參數', addParam: '新增參數', }, + aggregationStrategy: '聚合策略', inputPlaceholder: '請輸入', selectPlaceholder: '請選擇', title: '標題', diff --git a/ui/src/workflow/nodes/variable-aggregation-node/index.vue b/ui/src/workflow/nodes/variable-aggregation-node/index.vue index 7cf259a6a..65ab9b302 100644 --- a/ui/src/workflow/nodes/variable-aggregation-node/index.vue +++ b/ui/src/workflow/nodes/variable-aggregation-node/index.vue @@ -43,23 +43,7 @@
- - {{ group.field }} + {{ group.label }}