Files
team-api/relay/constant/task.go
T

105 lines
3.4 KiB
Go

package constant
// TaskPlatform 异步任务平台类型
type TaskPlatform string
const (
TaskPlatformSora TaskPlatform = "sora"
TaskPlatformKling TaskPlatform = "kling"
TaskPlatformSuno TaskPlatform = "suno"
TaskPlatformMidjourney TaskPlatform = "midjourney"
TaskPlatformVolcengine TaskPlatform = "volcengine"
TaskPlatformAli TaskPlatform = "ali"
)
// TaskAction 异步任务动作类型
type TaskAction string
const (
TaskActionGenerate TaskAction = "generate" // 视频生成
TaskActionMusic TaskAction = "music" // 音乐生成
TaskActionLyrics TaskAction = "lyrics" // 歌词生成
// Midjourney 动作
TaskActionImagine TaskAction = "imagine"
TaskActionDescribe TaskAction = "describe"
TaskActionBlend TaskAction = "blend"
TaskActionUpscale TaskAction = "upscale"
TaskActionVariation TaskAction = "variation"
TaskActionReroll TaskAction = "reroll"
TaskActionInpaint TaskAction = "inpaint"
TaskActionModal TaskAction = "modal"
TaskActionZoom TaskAction = "zoom"
TaskActionCustomZoom TaskAction = "custom_zoom"
TaskActionShorten TaskAction = "shorten"
TaskActionHighVariation TaskAction = "high_variation"
TaskActionLowVariation TaskAction = "low_variation"
TaskActionPan TaskAction = "pan"
TaskActionSwapFace TaskAction = "swap_face"
TaskActionUpload TaskAction = "upload"
TaskActionVideo TaskAction = "video"
TaskActionEdits TaskAction = "edits"
)
// MjActions 合法的 Midjourney 动作集合
var MjActions = map[TaskAction]bool{
TaskActionImagine: true, TaskActionDescribe: true, TaskActionBlend: true,
TaskActionUpscale: true, TaskActionVariation: true, TaskActionReroll: true,
TaskActionInpaint: true, TaskActionModal: true, TaskActionZoom: true,
TaskActionCustomZoom: true, TaskActionShorten: true,
TaskActionHighVariation: true, TaskActionLowVariation: true,
TaskActionPan: true, TaskActionSwapFace: true, TaskActionUpload: true,
TaskActionVideo: true, TaskActionEdits: true,
}
// TaskStatus 异步任务状态
type TaskStatus string
const (
TaskStatusNotStart TaskStatus = "NOT_START"
TaskStatusSubmitted TaskStatus = "SUBMITTED"
TaskStatusQueued TaskStatus = "QUEUED"
TaskStatusInProgress TaskStatus = "IN_PROGRESS"
TaskStatusSuccess TaskStatus = "SUCCESS"
TaskStatusFailure TaskStatus = "FAILURE"
)
// IsTerminal 判断任务状态是否为终态
func (s TaskStatus) IsTerminal() bool {
return s == TaskStatusSuccess || s == TaskStatusFailure
}
// ProviderTypeToTaskPlatform 将供应商类型映射到异步任务平台
func ProviderTypeToTaskPlatform(p ProviderType) (TaskPlatform, bool) {
switch p {
case ProviderSora:
return TaskPlatformSora, true
case ProviderKling:
return TaskPlatformKling, true
case ProviderSuno:
return TaskPlatformSuno, true
case ProviderMidjourney:
return TaskPlatformMidjourney, true
case ProviderVolcengine:
return TaskPlatformVolcengine, true
case ProviderAli:
return TaskPlatformAli, true
default:
return "", false
}
}
// RelayModeToTaskAction 将 RelayMode 映射到异步任务动作
func RelayModeToTaskAction(mode RelayMode) (TaskAction, bool) {
switch mode {
case RelayModeVideoGenerations:
return TaskActionGenerate, true
case RelayModeSunoSubmit:
return TaskActionMusic, true
case RelayModeMjSubmit:
return TaskActionImagine, true // 默认 imagine,具体由 URL action 覆盖
default:
return "", false
}
}