feat: 枚举优化

This commit is contained in:
2026-02-23 23:08:44 +08:00
parent 07388db632
commit 02a7cf1981
6 changed files with 34 additions and 21 deletions

View File

@@ -221,12 +221,7 @@ const initPlayer = (url) => {
}]
})
player.on('ended', () => {
if (audioUrl.value?.startsWith('blob:')) {
URL.revokeObjectURL(audioUrl.value)
}
audioUrl.value = ''
})
// 播放结束后保留播放器,让用户可以再次播放
player.on('error', (e) => {
console.error('APlayer 播放错误:', e)

View File

@@ -23,6 +23,15 @@ public enum AiModelTypeEnum implements ArrayValuable<String> {
// ========== 数字人模型 ==========
DIGITAL_HUMAN_LATENTSYNC("latentsync", "LatentSync", AiPlatformEnum.DIGITAL_HUMAN),
DIGITAL_HUMAN_KLING("kling", "可灵", AiPlatformEnum.DIGITAL_HUMAN),
// ========== TikHub 爬虫 ==========
TIKHUB_CRAWLER("crawler", "爬虫", AiPlatformEnum.TIKHUB),
// ========== 阿里云语音服务 ==========
ALICLOUD_VOICE_TO_TEXT("voice_to_text", "语音转文字", AiPlatformEnum.ALICLOUD),
// ========== SiliconFlow 语音服务 ==========
SILICONFLOW_INDEXTTS("indextts", "IndexTTS", AiPlatformEnum.SILICONFLOW),
;
/**

View File

@@ -18,6 +18,9 @@ public enum AiPlatformEnum implements ArrayValuable<String> {
DIFY("dify", "Dify 平台"),
DIGITAL_HUMAN("digital_human", "数字人平台"),
TIKHUB("tikhub", "TikHub 平台"),
ALICLOUD("alicloud", "阿里云平台"),
SILICONFLOW("siliconflow", "SiliconFlow 平台"),
;
/**

View File

@@ -25,8 +25,7 @@ public class AiModelConfigSaveReqVO {
@NotEmpty(message = "所属平台不能为空")
private String platform;
@Schema(description = "API秘钥", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "API秘钥不能为空")
@Schema(description = "API秘钥")
private String apiKey;
@Schema(description = "状态(0-禁用 1-启用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@@ -53,8 +52,7 @@ public class AiModelConfigSaveReqVO {
@NotNull(message = "消耗积分不能为空")
private Integer consumePoints;
@Schema(description = "最大文本数量", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "最大文本数量不能为空")
@Schema(description = "最大文本数量")
private Integer maxTextLength;
@Schema(description = "图片最大像素", requiredMode = Schema.RequiredMode.REQUIRED)

View File

@@ -4,7 +4,7 @@
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
label-width="140px"
v-loading="formLoading"
>
<el-form-item label="模型名称" prop="modelName">
@@ -19,9 +19,10 @@
<el-form-item label="API秘钥" prop="apiKey">
<el-input v-model="formData.apiKey" placeholder="请输入API秘钥" />
</el-form-item>
<el-form-item label="状态(0-禁用 1-启用)" prop="status">
<el-form-item label="状态" prop="status">
<el-radio-group v-model="formData.status">
<el-radio value="1">请选择字典生成</el-radio>
<el-radio value="1">启用</el-radio>
<el-radio value="0">禁用</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="温度参数" prop="temperature">
@@ -39,6 +40,7 @@
<el-radio value="text">文本</el-radio>
<el-radio value="video">视频</el-radio>
<el-radio value="audio">音频</el-radio>
<el-radio value="third">第三方</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="消耗积分" prop="consumePoints">
@@ -101,17 +103,17 @@ const formRules = reactive({
modelName: [{ required: true, message: '模型名称不能为空', trigger: 'blur' }],
modelCode: [{ required: true, message: '模型标识/编码不能为空', trigger: 'blur' }],
platform: [{ required: true, message: '所属平台不能为空', trigger: 'blur' }],
apiKey: [{ required: true, message: 'API秘钥不能为空', trigger: 'blur' }],
status: [{ required: true, message: '状态(0-禁用 1-启用)不能为空', trigger: 'blur' }],
temperature: [{ required: true, message: '温度参数不能为空', trigger: 'blur' }],
apiKey: [{ required: false, message: 'API秘钥不能为空', trigger: 'blur' }],
status: [{ required: true, message: '状态不能为空', trigger: 'blur' }],
temperature: [{ required: false, message: '温度参数不能为空', trigger: 'blur' }],
maxTokens: [{ required: true, message: '回复数Token数不能为空', trigger: 'blur' }],
dailyLimit: [{ required: true, message: '每日请求次数不能为空', trigger: 'blur' }],
modelType: [{ required: true, message: '模型类型(image-图像 text-文本 video-视频 audio-音频)不能为空', trigger: 'change' }],
consumePoints: [{ required: true, message: '消耗积分不能为空', trigger: 'blur' }],
maxTextLength: [{ required: true, message: '最大文本数量不能为空', trigger: 'blur' }],
maxImageSize: [{ required: true, message: '图片最大像素不能为空', trigger: 'blur' }],
maxVideoDuration: [{ required: true, message: '视频最大时长(秒)不能为空', trigger: 'blur' }],
maxVideoQuality: [{ required: true, message: '视频最大质量不能为空', trigger: 'blur' }],
maxTextLength: [{ required: false, message: '最大文本数量不能为空', trigger: 'blur' }],
maxImageSize: [{ required: false, message: '图片最大像素不能为空', trigger: 'blur' }],
maxVideoDuration: [{ required: false, message: '视频最大时长(秒)不能为空', trigger: 'blur' }],
maxVideoQuality: [{ required: false, message: '视频最大质量不能为空', trigger: 'blur' }],
remark: [{ required: true, message: '备注不能为空', trigger: 'blur' }],
})
const formRef = ref() // 表单 Ref

View File

@@ -111,7 +111,13 @@
<el-table-column label="模型标识" align="center" prop="modelCode" />
<el-table-column label="所属平台" align="center" prop="platform" />
<el-table-column label="API秘钥" align="center" prop="apiKey" />
<el-table-column label="状态" align="center" prop="status" />
<el-table-column label="状态" align="center" prop="status" >
<template #default="scope">
<el-tag :type="scope.row.status === 1 ? 'success' : 'danger'">
{{ scope.row.status === 1 ? '启用' : '禁用' }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="温度参数" align="center" prop="temperature" />
<el-table-column label="回复数Token数" align="center" prop="maxTokens" />
<el-table-column label="每日请求次数" align="center" prop="dailyLimit" />