Ver Fonte

Merge pull request #3042 from seefs001/fix/video-vertex-fetch

fix: vertex ai video proxy and task polling improvements
Calcium-Ion há 1 semana atrás
pai
commit
d1f2b707e3
2 ficheiros alterados com 9 adições e 1 exclusões
  1. 8 1
      controller/video_proxy_gemini.go
  2. 1 0
      service/task_polling.go

+ 8 - 1
controller/video_proxy_gemini.go

@@ -149,7 +149,7 @@ func getVertexVideoURL(channel *model.Channel, task *model.Task) (string, error)
 	if channel == nil || task == nil {
 		return "", fmt.Errorf("invalid channel or task")
 	}
-	if url := strings.TrimSpace(task.GetResultURL()); url != "" {
+	if url := strings.TrimSpace(task.GetResultURL()); url != "" && !isTaskProxyContentURL(url, task.TaskID) {
 		return url, nil
 	}
 	if url := extractVertexVideoURLFromTaskData(task); url != "" {
@@ -198,6 +198,13 @@ func getVertexVideoURL(channel *model.Channel, task *model.Task) (string, error)
 	return "", fmt.Errorf("vertex video url not found")
 }
 
+func isTaskProxyContentURL(url string, taskID string) bool {
+	if strings.TrimSpace(url) == "" || strings.TrimSpace(taskID) == "" {
+		return false
+	}
+	return strings.Contains(url, "/v1/videos/"+taskID+"/content")
+}
+
 func getVertexTaskKey(channel *model.Channel, task *model.Task) string {
 	if task != nil {
 		if key := strings.TrimSpace(task.PrivateData.Key); key != "" {

+ 1 - 0
service/task_polling.go

@@ -421,6 +421,7 @@ func updateVideoSingleTask(ctx context.Context, adaptor TaskPollingAdaptor, ch *
 		}
 		if strings.HasPrefix(taskResult.Url, "data:") {
 			// data: URI (e.g. Vertex base64 encoded video) — keep in Data, not in ResultURL
+			task.PrivateData.ResultURL = taskcommon.BuildProxyURL(task.TaskID)
 		} else if taskResult.Url != "" {
 			// Direct upstream URL (e.g. Kling, Ali, Doubao, etc.)
 			task.PrivateData.ResultURL = taskResult.Url