diff --git a/apps/application/flow/step_node/application_node/i_application_node.py b/apps/application/flow/step_node/application_node/i_application_node.py index b41151ee3..28b78417e 100644 --- a/apps/application/flow/step_node/application_node/i_application_node.py +++ b/apps/application/flow/step_node/application_node/i_application_node.py @@ -19,6 +19,7 @@ class ApplicationNodeSerializer(serializers.Serializer): image_list = serializers.ListField(required=False, label=_("picture")) document_list = serializers.ListField(required=False, label=_("document")) audio_list = serializers.ListField(required=False, label=_("Audio")) + video_list = serializers.ListField(required=False, label=_("Video")) child_node = serializers.DictField(required=False, allow_null=True, label=_("Child Nodes")) node_data = serializers.DictField(required=False, allow_null=True, label=_("Form Data")) @@ -76,12 +77,24 @@ class IApplicationNode(INode): if 'file_id' not in audio: raise ValueError( _("Parameter value error: The uploaded audio lacks file_id, and the audio upload fails.")) + app_video_list = self.node_params_serializer.data.get('video_list', []) + if app_video_list and len(app_video_list) > 0: + app_video_list = self.workflow_manage.get_reference_field( + app_video_list[0], + app_video_list[1:] + ) + for video in app_video_list: + if 'file_id' not in video: + raise ValueError( + _("Parameter value error: The uploaded video lacks file_id, and the video upload fails.")) return self.execute(**{**self.flow_params_serializer.data, **self.node_params_serializer.data}, app_document_list=app_document_list, app_image_list=app_image_list, app_audio_list=app_audio_list, + app_video_list=app_video_list, message=str(question), **kwargs) def execute(self, application_id, message, chat_id, chat_record_id, stream, re_chat, client_id, client_type, - app_document_list=None, app_image_list=None, app_audio_list=None, child_node=None, node_data=None, + app_document_list=None, app_image_list=None, app_audio_list=None, app_video_list=None, child_node=None, + node_data=None, **kwargs) -> NodeResult: pass diff --git a/apps/application/flow/step_node/application_node/impl/base_application_node.py b/apps/application/flow/step_node/application_node/impl/base_application_node.py index ebd34b9d5..00aee5ef7 100644 --- a/apps/application/flow/step_node/application_node/impl/base_application_node.py +++ b/apps/application/flow/step_node/application_node/impl/base_application_node.py @@ -182,7 +182,8 @@ class BaseApplicationNode(IApplicationNode): def execute(self, application_id, message, chat_id, chat_record_id, stream, re_chat, chat_user_id, chat_user_type, - app_document_list=None, app_image_list=None, app_audio_list=None, child_node=None, node_data=None, + app_document_list=None, app_image_list=None, app_audio_list=None, app_video_list=None, child_node=None, + node_data=None, **kwargs) -> NodeResult: from chat.serializers.chat import ChatSerializers if application_id == self.workflow_manage.get_body().get('application_id'): @@ -202,6 +203,8 @@ class BaseApplicationNode(IApplicationNode): app_image_list = [] if app_audio_list is None: app_audio_list = [] + if app_video_list is None: + app_video_list = [] runtime_node_id = None record_id = None child_node_value = None @@ -224,6 +227,7 @@ class BaseApplicationNode(IApplicationNode): 'document_list': app_document_list, 'image_list': app_image_list, 'audio_list': app_audio_list, + 'video_list': app_video_list, 'runtime_node_id': runtime_node_id, 'chat_record_id': record_id, 'child_node': child_node_value, @@ -281,5 +285,6 @@ class BaseApplicationNode(IApplicationNode): 'document_list': self.workflow_manage.document_list, 'image_list': self.workflow_manage.image_list, 'audio_list': self.workflow_manage.audio_list, + 'video_list': self.workflow_manage.video_list, 'application_node_dict': self.context.get('application_node_dict') } diff --git a/ui/src/locales/lang/en-US/workflow.ts b/ui/src/locales/lang/en-US/workflow.ts index b4e6debdd..4d31b6664 100644 --- a/ui/src/locales/lang/en-US/workflow.ts +++ b/ui/src/locales/lang/en-US/workflow.ts @@ -312,7 +312,7 @@ You are a master of problem optimization, adept at accurately inferring user int label: 'Vision Model', requiredMessage: 'Please select a vision model', }, - image: { + video: { label: 'Select Video', requiredMessage: 'Please select a video', }, diff --git a/ui/src/locales/lang/zh-CN/workflow.ts b/ui/src/locales/lang/zh-CN/workflow.ts index c8116ec85..3def08c53 100644 --- a/ui/src/locales/lang/zh-CN/workflow.ts +++ b/ui/src/locales/lang/zh-CN/workflow.ts @@ -382,7 +382,7 @@ export default { label: '视觉模型', requiredMessage: '请选择视觉模型', }, - image: { + video: { label: '选择视频', requiredMessage: '请选择视频', }, diff --git a/ui/src/locales/lang/zh-Hant/workflow.ts b/ui/src/locales/lang/zh-Hant/workflow.ts index 03f92a93b..a6e2f49b5 100644 --- a/ui/src/locales/lang/zh-Hant/workflow.ts +++ b/ui/src/locales/lang/zh-Hant/workflow.ts @@ -298,7 +298,7 @@ export default { label: '视觉模型', requiredMessage: '请选择视觉模型', }, - image: { + video: { label: '选择视频', requiredMessage: '请选择视频', },