From 7bc9192f3f64226fcbc1138d94a798601e47ccca Mon Sep 17 00:00:00 2001 From: feitianbubu Date: Tue, 22 Jul 2025 17:36:38 +0800 Subject: [PATCH] chore: opt video channel and platform --- constant/task.go | 2 -- controller/relay.go | 2 +- controller/task.go | 6 ++--- middleware/distributor.go | 21 +++++---------- relay/constant/relay_mode.go | 27 ++----------------- relay/relay_adaptor.go | 27 ++++++++++++++----- relay/relay_task.go | 5 +++- .../table/task-logs/TaskLogsColumnDefs.js | 21 +++++++-------- 8 files changed, 45 insertions(+), 66 deletions(-) diff --git a/constant/task.go b/constant/task.go index e7af39a6..21790145 100644 --- a/constant/task.go +++ b/constant/task.go @@ -5,8 +5,6 @@ type TaskPlatform string const ( TaskPlatformSuno TaskPlatform = "suno" TaskPlatformMidjourney = "mj" - TaskPlatformKling TaskPlatform = "kling" - TaskPlatformJimeng TaskPlatform = "jimeng" ) const ( diff --git a/controller/relay.go b/controller/relay.go index b224b42c..18c5f1b4 100644 --- a/controller/relay.go +++ b/controller/relay.go @@ -428,7 +428,7 @@ func RelayTask(c *gin.Context) { func taskRelayHandler(c *gin.Context, relayMode int) *dto.TaskError { var err *dto.TaskError switch relayMode { - case relayconstant.RelayModeSunoFetch, relayconstant.RelayModeSunoFetchByID, relayconstant.RelayModeKlingFetchByID: + case relayconstant.RelayModeSunoFetch, relayconstant.RelayModeSunoFetchByID, relayconstant.RelayModeVideoFetchByID: err = relay.RelayTaskFetch(c, relayMode) default: err = relay.RelayTaskSubmit(c, relayMode) diff --git a/controller/task.go b/controller/task.go index 78674d8b..5fbdb424 100644 --- a/controller/task.go +++ b/controller/task.go @@ -75,10 +75,10 @@ func UpdateTaskByPlatform(platform constant.TaskPlatform, taskChannelM map[int][ //_ = UpdateMidjourneyTaskAll(context.Background(), tasks) case constant.TaskPlatformSuno: _ = UpdateSunoTaskAll(context.Background(), taskChannelM, taskM) - case constant.TaskPlatformKling, constant.TaskPlatformJimeng: - _ = UpdateVideoTaskAll(context.Background(), platform, taskChannelM, taskM) default: - common.SysLog("未知平台") + if err := UpdateVideoTaskAll(context.Background(), platform, taskChannelM, taskM); err != nil { + common.SysLog(fmt.Sprintf("UpdateVideoTaskAll fail: %s", err)) + } } } diff --git a/middleware/distributor.go b/middleware/distributor.go index a6889e39..3b04eef0 100644 --- a/middleware/distributor.go +++ b/middleware/distributor.go @@ -174,22 +174,13 @@ func getModelRequest(c *gin.Context) (*ModelRequest, bool, error) { c.Set("relay_mode", relayMode) } else if strings.Contains(c.Request.URL.Path, "/v1/video/generations") { err = common.UnmarshalBodyReusable(c, &modelRequest) - var platform string - var relayMode int - if strings.HasPrefix(modelRequest.Model, "jimeng") { - platform = string(constant.TaskPlatformJimeng) - relayMode = relayconstant.Path2RelayJimeng(c.Request.Method, c.Request.URL.Path) - if relayMode == relayconstant.RelayModeJimengFetchByID { - shouldSelectChannel = false - } - } else { - platform = string(constant.TaskPlatformKling) - relayMode = relayconstant.Path2RelayKling(c.Request.Method, c.Request.URL.Path) - if relayMode == relayconstant.RelayModeKlingFetchByID { - shouldSelectChannel = false - } + relayMode := relayconstant.RelayModeUnknown + if c.Request.Method == http.MethodPost { + relayMode = relayconstant.RelayModeVideoSubmit + } else if c.Request.Method == http.MethodGet { + relayMode = relayconstant.RelayModeVideoFetchByID + shouldSelectChannel = false } - c.Set("platform", platform) c.Set("relay_mode", relayMode) } else if strings.HasPrefix(c.Request.URL.Path, "/v1beta/models/") || strings.HasPrefix(c.Request.URL.Path, "/v1/models/") { // Gemini API 路径处理: /v1beta/models/gemini-2.0-flash:generateContent diff --git a/relay/constant/relay_mode.go b/relay/constant/relay_mode.go index 394fc0e9..b1599fd0 100644 --- a/relay/constant/relay_mode.go +++ b/relay/constant/relay_mode.go @@ -40,11 +40,8 @@ const ( RelayModeSunoFetchByID RelayModeSunoSubmit - RelayModeKlingFetchByID - RelayModeKlingSubmit - - RelayModeJimengFetchByID - RelayModeJimengSubmit + RelayModeVideoFetchByID + RelayModeVideoSubmit RelayModeRerank @@ -145,23 +142,3 @@ func Path2RelaySuno(method, path string) int { } return relayMode } - -func Path2RelayKling(method, path string) int { - relayMode := RelayModeUnknown - if method == http.MethodPost && strings.HasSuffix(path, "/video/generations") { - relayMode = RelayModeKlingSubmit - } else if method == http.MethodGet && (strings.Contains(path, "/video/generations")) { - relayMode = RelayModeKlingFetchByID - } - return relayMode -} - -func Path2RelayJimeng(method, path string) int { - relayMode := RelayModeUnknown - if method == http.MethodPost && strings.HasSuffix(path, "/video/generations") { - relayMode = RelayModeJimengSubmit - } else if method == http.MethodGet && strings.Contains(path, "/video/generations/") { - relayMode = RelayModeJimengFetchByID - } - return relayMode -} diff --git a/relay/relay_adaptor.go b/relay/relay_adaptor.go index 2ce12a87..1e9c46e8 100644 --- a/relay/relay_adaptor.go +++ b/relay/relay_adaptor.go @@ -1,8 +1,8 @@ package relay import ( + "github.com/gin-gonic/gin" "one-api/constant" - commonconstant "one-api/constant" "one-api/relay/channel" "one-api/relay/channel/ali" "one-api/relay/channel/aws" @@ -34,6 +34,7 @@ import ( "one-api/relay/channel/xunfei" "one-api/relay/channel/zhipu" "one-api/relay/channel/zhipu_4v" + "strconv" ) func GetAdaptor(apiType int) channel.Adaptor { @@ -100,16 +101,28 @@ func GetAdaptor(apiType int) channel.Adaptor { return nil } -func GetTaskAdaptor(platform commonconstant.TaskPlatform) channel.TaskAdaptor { +func GetTaskPlatform(c *gin.Context) constant.TaskPlatform { + channelType := c.GetInt("channel_type") + if channelType > 0 { + return constant.TaskPlatform(strconv.Itoa(channelType)) + } + return constant.TaskPlatform(c.GetString("platform")) +} + +func GetTaskAdaptor(platform constant.TaskPlatform) channel.TaskAdaptor { switch platform { //case constant.APITypeAIProxyLibrary: // return &aiproxy.Adaptor{} - case commonconstant.TaskPlatformSuno: + case constant.TaskPlatformSuno: return &suno.TaskAdaptor{} - case commonconstant.TaskPlatformKling: - return &kling.TaskAdaptor{} - case commonconstant.TaskPlatformJimeng: - return &taskjimeng.TaskAdaptor{} + } + if channelType, err := strconv.ParseInt(string(platform), 10, 64); err == nil { + switch channelType { + case constant.ChannelTypeKling: + return &kling.TaskAdaptor{} + case constant.ChannelTypeJimeng: + return &taskjimeng.TaskAdaptor{} + } } return nil } diff --git a/relay/relay_task.go b/relay/relay_task.go index 25f63d40..ce00527b 100644 --- a/relay/relay_task.go +++ b/relay/relay_task.go @@ -24,6 +24,9 @@ Task 任务通过平台、Action 区分任务 */ func RelayTaskSubmit(c *gin.Context, relayMode int) (taskErr *dto.TaskError) { platform := constant.TaskPlatform(c.GetString("platform")) + if platform == "" { + platform = GetTaskPlatform(c) + } relayInfo := relaycommon.GenTaskRelayInfo(c) adaptor := GetTaskAdaptor(platform) @@ -178,7 +181,7 @@ func RelayTaskSubmit(c *gin.Context, relayMode int) (taskErr *dto.TaskError) { var fetchRespBuilders = map[int]func(c *gin.Context) (respBody []byte, taskResp *dto.TaskError){ relayconstant.RelayModeSunoFetchByID: sunoFetchByIDRespBodyBuilder, relayconstant.RelayModeSunoFetch: sunoFetchRespBodyBuilder, - relayconstant.RelayModeKlingFetchByID: videoFetchByIDRespBodyBuilder, + relayconstant.RelayModeVideoFetchByID: videoFetchByIDRespBodyBuilder, } func RelayTaskFetch(c *gin.Context, relayMode int) (taskResp *dto.TaskError) { diff --git a/web/src/components/table/task-logs/TaskLogsColumnDefs.js b/web/src/components/table/task-logs/TaskLogsColumnDefs.js index 8b066758..f895bf01 100644 --- a/web/src/components/table/task-logs/TaskLogsColumnDefs.js +++ b/web/src/components/table/task-logs/TaskLogsColumnDefs.js @@ -39,6 +39,7 @@ import { Sparkles } from 'lucide-react'; import { TASK_ACTION_GENERATE, TASK_ACTION_TEXT_GENERATE } from '../../../constants/common.constant'; +import { CHANNEL_OPTIONS } from '../../../constants/channel.constants'; const colors = [ 'amber', @@ -121,6 +122,14 @@ const renderType = (type, t) => { }; const renderPlatform = (platform, t) => { + let option = CHANNEL_OPTIONS.find(opt => String(opt.value) === String(platform)); + if (option) { + return ( + }> + {option.label} + + ); + } switch (platform) { case 'suno': return ( @@ -128,18 +137,6 @@ const renderPlatform = (platform, t) => { Suno ); - case 'kling': - return ( - }> - Kling - - ); - case 'jimeng': - return ( - }> - Jimeng - - ); default: return ( }>