From a920d1f9258389a093286db03509aabefa434063 Mon Sep 17 00:00:00 2001 From: CaIon Date: Sat, 21 Feb 2026 23:05:58 +0800 Subject: [PATCH] refactor(relay): rename RelayTask to RelayTaskFetch and update routing - Renamed RelayTask function to RelayTaskFetch for clarity. - Updated routing in relay-router.go and video-router.go to use RelayTaskFetch for fetch operations. - Enhanced error handling in RelayTaskFetch function. - Adjusted task data conversion in TaskAdaptor to include task ID. --- controller/relay.go | 26 +++++++++++++++----------- relay/channel/task/sora/adaptor.go | 8 +++++++- router/relay-router.go | 4 ++-- router/video-router.go | 8 ++++---- 4 files changed, 28 insertions(+), 18 deletions(-) diff --git a/controller/relay.go b/controller/relay.go index e90d6dd0c..1477df8f7 100644 --- a/controller/relay.go +++ b/controller/relay.go @@ -450,6 +450,21 @@ func RelayNotFound(c *gin.Context) { }) } +func RelayTaskFetch(c *gin.Context) { + relayInfo, err := relaycommon.GenRelayInfo(c, types.RelayFormatTask, nil, nil) + if err != nil { + c.JSON(http.StatusInternalServerError, &dto.TaskError{ + Code: "gen_relay_info_failed", + Message: err.Error(), + StatusCode: http.StatusInternalServerError, + }) + return + } + if taskErr := relay.RelayTaskFetch(c, relayInfo.RelayMode); taskErr != nil { + respondTaskError(c, taskErr) + } +} + func RelayTask(c *gin.Context) { relayInfo, err := relaycommon.GenRelayInfo(c, types.RelayFormatTask, nil, nil) if err != nil { @@ -461,17 +476,6 @@ func RelayTask(c *gin.Context) { return } - // Fetch 路径:纯 DB 查询,不依赖上下文 channel,无需重试 - switch relayInfo.RelayMode { - case relayconstant.RelayModeSunoFetch, relayconstant.RelayModeSunoFetchByID, relayconstant.RelayModeVideoFetchByID: - if taskErr := relay.RelayTaskFetch(c, relayInfo.RelayMode); taskErr != nil { - respondTaskError(c, taskErr) - } - return - } - - // ── Submit 路径 ───────────────────────────────────────────────── - if taskErr := relay.ResolveOriginTask(c, relayInfo); taskErr != nil { respondTaskError(c, taskErr) return diff --git a/relay/channel/task/sora/adaptor.go b/relay/channel/task/sora/adaptor.go index 8faaf984f..bf2f70053 100644 --- a/relay/channel/task/sora/adaptor.go +++ b/relay/channel/task/sora/adaptor.go @@ -18,6 +18,7 @@ import ( "github.com/gin-gonic/gin" "github.com/pkg/errors" + "github.com/tidwall/sjson" ) // ============================ @@ -250,5 +251,10 @@ func (a *TaskAdaptor) ParseTaskResult(respBody []byte) (*relaycommon.TaskInfo, e } func (a *TaskAdaptor) ConvertToOpenAIVideo(task *model.Task) ([]byte, error) { - return task.Data, nil + data := task.Data + var err error + if data, err = sjson.SetBytes(data, "id", task.TaskID); err != nil { + return nil, errors.Wrap(err, "set id failed") + } + return data, nil } diff --git a/router/relay-router.go b/router/relay-router.go index 04584945b..dcec439cb 100644 --- a/router/relay-router.go +++ b/router/relay-router.go @@ -174,8 +174,8 @@ func SetRelayRouter(router *gin.Engine) { relaySunoRouter.Use(middleware.TokenAuth(), middleware.Distribute()) { relaySunoRouter.POST("/submit/:action", controller.RelayTask) - relaySunoRouter.POST("/fetch", controller.RelayTask) - relaySunoRouter.GET("/fetch/:id", controller.RelayTask) + relaySunoRouter.POST("/fetch", controller.RelayTaskFetch) + relaySunoRouter.GET("/fetch/:id", controller.RelayTaskFetch) } relayGeminiRouter := router.Group("/v1beta") diff --git a/router/video-router.go b/router/video-router.go index d2bce42b2..875b0af86 100644 --- a/router/video-router.go +++ b/router/video-router.go @@ -19,14 +19,14 @@ func SetVideoRouter(router *gin.Engine) { videoV1Router.Use(middleware.TokenAuth(), middleware.Distribute()) { videoV1Router.POST("/video/generations", controller.RelayTask) - videoV1Router.GET("/video/generations/:task_id", controller.RelayTask) + videoV1Router.GET("/video/generations/:task_id", controller.RelayTaskFetch) videoV1Router.POST("/videos/:video_id/remix", controller.RelayTask) } // openai compatible API video routes // docs: https://platform.openai.com/docs/api-reference/videos/create { videoV1Router.POST("/videos", controller.RelayTask) - videoV1Router.GET("/videos/:task_id", controller.RelayTask) + videoV1Router.GET("/videos/:task_id", controller.RelayTaskFetch) } klingV1Router := router.Group("/kling/v1") @@ -34,8 +34,8 @@ func SetVideoRouter(router *gin.Engine) { { klingV1Router.POST("/videos/text2video", controller.RelayTask) klingV1Router.POST("/videos/image2video", controller.RelayTask) - klingV1Router.GET("/videos/text2video/:task_id", controller.RelayTask) - klingV1Router.GET("/videos/image2video/:task_id", controller.RelayTask) + klingV1Router.GET("/videos/text2video/:task_id", controller.RelayTaskFetch) + klingV1Router.GET("/videos/image2video/:task_id", controller.RelayTaskFetch) } // Jimeng official API routes - direct mapping to official API format