refactor parameters for JimengCreate page

This commit is contained in:
GeekMaster
2025-09-11 15:48:07 +08:00
parent 896b5de0a4
commit 65fb58585c
58 changed files with 716 additions and 1174 deletions

View File

@@ -9,10 +9,8 @@ type JimengConfig struct {
// JimengPower 即梦AI算力配置
type JimengPower struct {
TextToImage int `json:"text_to_image"`
ImageToImage int `json:"image_to_image"`
ImageEdit int `json:"image_edit"`
ImageEffects int `json:"image_effects"`
TextToVideo int `json:"text_to_video"`
ImageToVideo int `json:"image_to_video"`
Image int `json:"image"` // 图片生成算力,单位:积分/张
Video int `json:"video"` // 视频生成算力,单位:积分/秒
VirtualHuman int `json:"virtual_human"` // 数字人视频生成算力,单位:积分/秒
ActionTransfer int `json:"action_transfer"` // 视频动作迁移算力,单位:积分/秒
}

View File

@@ -231,28 +231,20 @@ func (h *AdminJimengHandler) UpdateConfig(c *gin.Context) {
}
// 验证算力配置
if req.Power.TextToImage <= 0 {
resp.ERROR(c, "文生图算力必须大于0")
if req.Power.Image <= 0 {
resp.ERROR(c, "图片生成算力必须大于0")
return
}
if req.Power.ImageToImage <= 0 {
resp.ERROR(c, "图生图算力必须大于0")
if req.Power.Video <= 0 {
resp.ERROR(c, "视频生成算力必须大于0")
return
}
if req.Power.ImageEdit <= 0 {
resp.ERROR(c, "图片编辑算力必须大于0")
if req.Power.VirtualHuman <= 0 {
resp.ERROR(c, "数字人生成算力必须大于0")
return
}
if req.Power.ImageEffects <= 0 {
resp.ERROR(c, "图片特效算力必须大于0")
return
}
if req.Power.TextToVideo <= 0 {
resp.ERROR(c, "文生视频算力必须大于0")
return
}
if req.Power.ImageToVideo <= 0 {
resp.ERROR(c, "图生视频算力必须大于0")
if req.Power.ActionTransfer <= 0 {
resp.ERROR(c, "视频动作迁移算力必须大于0")
return
}

View File

@@ -132,8 +132,8 @@ func (h *JimengHandler) CreateTask(c *gin.Context) {
switch req.TaskType {
case "text_to_image":
powerCost = h.getPowerFromConfig(model.JMTaskTypeTextToImage)
taskType = model.JMTaskTypeTextToImage
powerCost = h.getPowerFromConfig(model.JMTaskTypeImage)
taskType = model.JMTaskTypeImage
reqKey = jimeng.ReqKeyTextToImage
modelName = "即梦文生图"
if req.Scale == 0 {
@@ -147,8 +147,8 @@ func (h *JimengHandler) CreateTask(c *gin.Context) {
"use_pre_llm": req.UsePreLLM,
}
case "image_to_image":
powerCost = h.getPowerFromConfig(model.JMTaskTypeImageToImage)
taskType = model.JMTaskTypeImageToImage
powerCost = h.getPowerFromConfig(model.JMTaskTypeVideo)
taskType = model.JMTaskTypeVideo
reqKey = jimeng.ReqKeyImageToImagePortrait
modelName = "即梦图生图"
if req.Gpen == 0 {
@@ -175,8 +175,8 @@ func (h *JimengHandler) CreateTask(c *gin.Context) {
"seed": req.Seed,
}
case "image_edit":
powerCost = h.getPowerFromConfig(model.JMTaskTypeImageEdit)
taskType = model.JMTaskTypeImageEdit
powerCost = h.getPowerFromConfig(model.JMTaskTypeVirtualHuman)
taskType = model.JMTaskTypeVirtualHuman
reqKey = jimeng.ReqKeyImageEdit
modelName = "即梦图像编辑"
if req.Scale == 0 {
@@ -188,8 +188,8 @@ func (h *JimengHandler) CreateTask(c *gin.Context) {
}
params["image_urls"] = []string{req.ImageInput}
case "image_effects":
powerCost = h.getPowerFromConfig(model.JMTaskTypeImageEffects)
taskType = model.JMTaskTypeImageEffects
powerCost = h.getPowerFromConfig(model.JMTaskTypeActionTransfer)
taskType = model.JMTaskTypeActionTransfer
reqKey = jimeng.ReqKeyImageEffects
modelName = "即梦图像特效"
if req.Width == 0 {
@@ -205,8 +205,8 @@ func (h *JimengHandler) CreateTask(c *gin.Context) {
"height": req.Height,
}
case "text_to_video":
powerCost = h.getPowerFromConfig(model.JMTaskTypeTextToVideo)
taskType = model.JMTaskTypeTextToVideo
powerCost = h.getPowerFromConfig(model.JMTaskTypeVideo)
taskType = model.JMTaskTypeVideo
reqKey = jimeng.ReqKeyTextToVideo
modelName = "即梦文生视频"
if req.AspectRatio == "" {
@@ -217,8 +217,8 @@ func (h *JimengHandler) CreateTask(c *gin.Context) {
"aspect_ratio": req.AspectRatio,
}
case "image_to_video":
powerCost = h.getPowerFromConfig(model.JMTaskTypeImageToVideo)
taskType = model.JMTaskTypeImageToVideo
powerCost = h.getPowerFromConfig(model.JMTaskTypeVideo)
taskType = model.JMTaskTypeVideo
reqKey = jimeng.ReqKeyImageToVideo
modelName = "即梦图生视频"
params = map[string]any{
@@ -287,17 +287,9 @@ func (h *JimengHandler) Jobs(c *gin.Context) {
switch req.Filter {
case "image":
query = query.Where("type IN (?)", []model.JMTaskType{
model.JMTaskTypeTextToImage,
model.JMTaskTypeImageToImage,
model.JMTaskTypeImageEdit,
model.JMTaskTypeImageEffects,
})
query = query.Where("type = ?", model.JMTaskTypeImage)
case "video":
query = query.Where("type IN (?)", []model.JMTaskType{
model.JMTaskTypeTextToVideo,
model.JMTaskTypeImageToVideo,
})
query = query.Where("type = ?", model.JMTaskTypeVideo)
}
if len(req.Ids) > 0 {
@@ -438,18 +430,14 @@ func (h *JimengHandler) getPowerFromConfig(taskType model.JMTaskType) int {
config := h.App.SysConfig.Jimeng
switch taskType {
case model.JMTaskTypeTextToImage:
return config.Power.TextToImage
case model.JMTaskTypeImageToImage:
return config.Power.ImageToImage
case model.JMTaskTypeImageEdit:
return config.Power.ImageEdit
case model.JMTaskTypeImageEffects:
return config.Power.ImageEffects
case model.JMTaskTypeTextToVideo:
return config.Power.TextToVideo
case model.JMTaskTypeImageToVideo:
return config.Power.ImageToVideo
case model.JMTaskTypeImage:
return config.Power.Image
case model.JMTaskTypeVideo:
return config.Power.Video
case model.JMTaskTypeVirtualHuman:
return config.Power.VirtualHuman
case model.JMTaskTypeActionTransfer:
return config.Power.ActionTransfer
default:
return 10
}
@@ -459,11 +447,9 @@ func (h *JimengHandler) getPowerFromConfig(taskType model.JMTaskType) int {
func (h *JimengHandler) GetPowerConfig(c *gin.Context) {
config := h.App.SysConfig.Jimeng
resp.SUCCESS(c, gin.H{
"text_to_image": config.Power.TextToImage,
"image_to_image": config.Power.ImageToImage,
"image_edit": config.Power.ImageEdit,
"image_effects": config.Power.ImageEffects,
"text_to_video": config.Power.TextToVideo,
"image_to_video": config.Power.ImageToVideo,
"image": config.Power.Image,
"video": config.Power.Video,
"image_edit": config.Power.VirtualHuman,
"image_effects": config.Power.ActionTransfer,
})
}

View File

@@ -199,18 +199,14 @@ func (s *Service) buildTaskRequest(job *model.JimengJob) (*SubmitTaskRequest, er
// 根据任务类型设置特定参数
switch job.Type {
case model.JMTaskTypeTextToImage:
case model.JMTaskTypeImage:
s.setTextToImageParams(req, params)
case model.JMTaskTypeImageToImage:
case model.JMTaskTypeVideo:
s.setImageToImageParams(req, params)
case model.JMTaskTypeImageEdit:
case model.JMTaskTypeVirtualHuman:
s.setImageEditParams(req, params)
case model.JMTaskTypeImageEffects:
case model.JMTaskTypeActionTransfer:
s.setImageEffectsParams(req, params)
case model.JMTaskTypeTextToVideo:
s.setTextToVideoParams(req, params)
case model.JMTaskTypeImageToVideo:
s.setImageToVideoParams(req, params)
default:
return nil, fmt.Errorf("unsupported task type: %s", job.Type)
}

View File

@@ -41,12 +41,10 @@ const (
type JMTaskType string
const (
JMTaskTypeTextToImage = JMTaskType("text_to_image") // 文生图
JMTaskTypeImageToImage = JMTaskType("image_to_image") // 图生图
JMTaskTypeImageEdit = JMTaskType("image_edit") // 图像编辑
JMTaskTypeImageEffects = JMTaskType("image_effects") // 图像特效
JMTaskTypeTextToVideo = JMTaskType("text_to_video") // 文生视频
JMTaskTypeImageToVideo = JMTaskType("image_to_video") // 图生视频
JMTaskTypeImage = JMTaskType("image") // 文生图
JMTaskTypeVideo = JMTaskType("video") // 图生图
JMTaskTypeVirtualHuman = JMTaskType("virtual_human") // 图像编辑
JMTaskTypeActionTransfer = JMTaskType("action_transfer") // 图像特效
)
// TableName 返回数据表名称