feat: add support for video list in application node execution and validation

This commit is contained in:
wxg0103 2025-12-26 14:35:04 +08:00
parent 97ae4e012b
commit 34be8acb80
5 changed files with 23 additions and 5 deletions

View File

@ -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

View File

@ -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')
}

View File

@ -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',
},

View File

@ -382,7 +382,7 @@ export default {
label: '视觉模型',
requiredMessage: '请选择视觉模型',
},
image: {
video: {
label: '选择视频',
requiredMessage: '请选择视频',
},

View File

@ -298,7 +298,7 @@ export default {
label: '视觉模型',
requiredMessage: '请选择视觉模型',
},
image: {
video: {
label: '选择视频',
requiredMessage: '请选择视频',
},