From 59a1f4c900aabb2037823eb377f9196dd8da069b Mon Sep 17 00:00:00 2001 From: skynono Date: Fri, 27 Jun 2025 22:43:01 +0800 Subject: [PATCH] feat: video action to constant --- constant/task.go | 3 +++ middleware/kling_adapter.go | 6 ++++-- relay/channel/task/jimeng/adaptor.go | 3 ++- relay/channel/task/kling/adaptor.go | 7 ++++--- web/src/components/table/TaskLogsTable.js | 7 ++++--- web/src/constants/common.constant.js | 5 ++++- 6 files changed, 21 insertions(+), 10 deletions(-) diff --git a/constant/task.go b/constant/task.go index 21831d3a..e7af39a6 100644 --- a/constant/task.go +++ b/constant/task.go @@ -12,6 +12,9 @@ const ( const ( SunoActionMusic = "MUSIC" SunoActionLyrics = "LYRICS" + + TaskActionGenerate = "generate" + TaskActionTextGenerate = "textGenerate" ) var SunoModel2Action = map[string]string{ diff --git a/middleware/kling_adapter.go b/middleware/kling_adapter.go index b6ecf727..8e2a3551 100644 --- a/middleware/kling_adapter.go +++ b/middleware/kling_adapter.go @@ -3,9 +3,11 @@ package middleware import ( "bytes" "encoding/json" - "github.com/gin-gonic/gin" "io" "one-api/common" + "one-api/constant" + + "github.com/gin-gonic/gin" ) func KlingRequestConvert() func(c *gin.Context) { @@ -35,7 +37,7 @@ func KlingRequestConvert() func(c *gin.Context) { c.Request.Body = io.NopCloser(bytes.NewBuffer(jsonData)) c.Request.URL.Path = "/v1/video/generations" if image := originalReq["image"]; image == "" { - c.Set("action", "textGenerate") + c.Set("action", constant.TaskActionTextGenerate) } // We have to reset the request body for the next handlers diff --git a/relay/channel/task/jimeng/adaptor.go b/relay/channel/task/jimeng/adaptor.go index 3298bdcb..b3610c3f 100644 --- a/relay/channel/task/jimeng/adaptor.go +++ b/relay/channel/task/jimeng/adaptor.go @@ -19,6 +19,7 @@ import ( "github.com/pkg/errors" "one-api/common" + "one-api/constant" "one-api/dto" "one-api/relay/channel" relaycommon "one-api/relay/common" @@ -88,7 +89,7 @@ func (a *TaskAdaptor) Init(info *relaycommon.TaskRelayInfo) { // ValidateRequestAndSetAction parses body, validates fields and sets default action. func (a *TaskAdaptor) ValidateRequestAndSetAction(c *gin.Context, info *relaycommon.TaskRelayInfo) (taskErr *dto.TaskError) { // Accept only POST /v1/video/generations as "generate" action. - action := "generate" + action := constant.TaskActionGenerate info.Action = action req := relaycommon.TaskSubmitReq{} diff --git a/relay/channel/task/kling/adaptor.go b/relay/channel/task/kling/adaptor.go index 2a02472b..afa39201 100644 --- a/relay/channel/task/kling/adaptor.go +++ b/relay/channel/task/kling/adaptor.go @@ -16,6 +16,7 @@ import ( "github.com/pkg/errors" "one-api/common" + "one-api/constant" "one-api/dto" "one-api/relay/channel" relaycommon "one-api/relay/common" @@ -92,7 +93,7 @@ func (a *TaskAdaptor) Init(info *relaycommon.TaskRelayInfo) { // ValidateRequestAndSetAction parses body, validates fields and sets default action. func (a *TaskAdaptor) ValidateRequestAndSetAction(c *gin.Context, info *relaycommon.TaskRelayInfo) (taskErr *dto.TaskError) { // Accept only POST /v1/video/generations as "generate" action. - action := "generate" + action := constant.TaskActionGenerate info.Action = action var req SubmitReq @@ -112,7 +113,7 @@ func (a *TaskAdaptor) ValidateRequestAndSetAction(c *gin.Context, info *relaycom // BuildRequestURL constructs the upstream URL. func (a *TaskAdaptor) BuildRequestURL(info *relaycommon.TaskRelayInfo) (string, error) { - path := lo.Ternary(info.Action == "generate", "/v1/videos/image2video", "/v1/videos/text2video") + path := lo.Ternary(info.Action == constant.TaskActionGenerate, "/v1/videos/image2video", "/v1/videos/text2video") return fmt.Sprintf("%s%s", a.baseURL, path), nil } @@ -198,7 +199,7 @@ func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]any) (*http if !ok { return nil, fmt.Errorf("invalid action") } - path := lo.Ternary(action == "generate", "/v1/videos/image2video", "/v1/videos/text2video") + path := lo.Ternary(action == constant.TaskActionGenerate, "/v1/videos/image2video", "/v1/videos/text2video") url := fmt.Sprintf("%s%s/%s", baseUrl, path, taskID) req, err := http.NewRequest(http.MethodGet, url, nil) diff --git a/web/src/components/table/TaskLogsTable.js b/web/src/components/table/TaskLogsTable.js index 65a8e2a6..af1ed7f9 100644 --- a/web/src/components/table/TaskLogsTable.js +++ b/web/src/components/table/TaskLogsTable.js @@ -51,6 +51,7 @@ import { IconDescend } from '@douyinfe/semi-icons'; import { useTableCompactMode } from '../../hooks/useTableCompactMode'; +import { TASK_ACTION_GENERATE, TASK_ACTION_TEXT_GENERATE } from '../../constants/common.constant'; const { Text } = Typography; @@ -209,13 +210,13 @@ const LogsTable = () => { {t('生成歌词')} ); - case 'generate': + case TASK_ACTION_GENERATE: return ( }> {t('图生视频')} ); - case 'textGenerate': + case TASK_ACTION_TEXT_GENERATE: return ( }> {t('文生视频')} @@ -446,7 +447,7 @@ const LogsTable = () => { fixed: 'right', render: (text, record, index) => { // 仅当为视频生成任务且成功,且 fail_reason 是 URL 时显示可点击链接 - const isVideoTask = record.action === 'generate' || record.action === 'textGenerate'; + const isVideoTask = record.action === TASK_ACTION_GENERATE || record.action === TASK_ACTION_TEXT_GENERATE; const isSuccess = record.status === 'SUCCESS'; const isUrl = typeof text === 'string' && /^https?:\/\//.test(text); if (isSuccess && isVideoTask && isUrl) { diff --git a/web/src/constants/common.constant.js b/web/src/constants/common.constant.js index aff20162..6556ffef 100644 --- a/web/src/constants/common.constant.js +++ b/web/src/constants/common.constant.js @@ -17,4 +17,7 @@ export const API_ENDPOINTS = [ '/v1/audio/speech', '/v1/audio/transcriptions', '/v1/audio/translations' -]; \ No newline at end of file +]; + +export const TASK_ACTION_GENERATE = 'generate'; +export const TASK_ACTION_TEXT_GENERATE = 'textGenerate'; \ No newline at end of file