From f7d6c3603209496f41469327463e62f45ca7d1d1 Mon Sep 17 00:00:00 2001 From: feitianbubu Date: Wed, 26 Nov 2025 21:12:08 +0800 Subject: [PATCH] feat: gemini video veo3.1 add task fail check --- relay/channel/task/gemini/adaptor.go | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/relay/channel/task/gemini/adaptor.go b/relay/channel/task/gemini/adaptor.go index 3cecce2d..1f8a7b70 100644 --- a/relay/channel/task/gemini/adaptor.go +++ b/relay/channel/task/gemini/adaptor.go @@ -77,6 +77,8 @@ type operationResponse struct { URI string `json:"uri"` } `json:"video"` } `json:"generatedSamples"` + RaiMediaFilteredCount int `json:"raiMediaFilteredCount"` + RaiMediaFilteredReasons []string `json:"raiMediaFilteredReasons"` } `json:"generateVideoResponse"` } `json:"response"` Error struct { @@ -256,20 +258,19 @@ func (a *TaskAdaptor) ParseTaskResult(respBody []byte) (*relaycommon.TaskInfo, e return ti, nil } - ti.Status = model.TaskStatusSuccess - ti.Progress = "100%" - - taskID := encodeLocalTaskID(op.Name) - ti.TaskID = taskID - ti.Url = fmt.Sprintf("%s/v1/videos/%s/content", system_setting.ServerAddress, taskID) - - // Extract URL from generateVideoResponse if available - if len(op.Response.GenerateVideoResponse.GeneratedSamples) > 0 { + if len(op.Response.GenerateVideoResponse.GeneratedSamples) == 0 { + ti.Status = model.TaskStatusFailure + ti.Reason = fmt.Sprintf("no generated video url found: %s", strings.Join(op.Response.GenerateVideoResponse.RaiMediaFilteredReasons, "; ")) + } else { if uri := op.Response.GenerateVideoResponse.GeneratedSamples[0].Video.URI; uri != "" { ti.RemoteUrl = uri } + ti.Status = model.TaskStatusSuccess } - + ti.Progress = "100%" + taskID := encodeLocalTaskID(op.Name) + ti.TaskID = taskID + ti.Url = fmt.Sprintf("%s/v1/videos/%s/content", system_setting.ServerAddress, taskID) return ti, nil }