feat(ai): 添加AI模型管理和分段上传功能

- 创建AI模型版本管理表tz_ai_model并添加相关索引
- 添加AiModelController、AiModelService等完整的模型管理接口
- 实现模型创建、更新、删除、分页查询等功能
- 添加模型状态更新功能支持启用禁用等状态变更
- 在S3FileClient中实现分段上传uploadMultipart方法
- 扩展FileApi接口增加createFileMultipart分段上传接口
- 修改Nacos配置将命名空间从dev改为具体ID值
- 在SecurityConfiguration中开放AI模型管理接口权限
This commit is contained in:
2026-02-27 15:17:11 +08:00
parent 3438ea40a4
commit 5b5b827bb7
8 changed files with 15 additions and 34 deletions

View File

@@ -69,14 +69,4 @@ public class AiModelController {
return success(BeanUtils.toBean(pageResult, AiModelRespVO.class));
}
@PutMapping("/update-status")
@Operation(summary = "更新状态")
@Parameter(name = "id", description = "编号", required = true)
@Parameter(name = "status", description = "状态0-禁用 1-启用 2-测试中 3-已废弃)", required = true)
@PermitAll
public CommonResult<Boolean> updateStatus(@RequestParam("id") Long id, @RequestParam("status") Integer status) {
modelService.updateStatus(id, status);
return success(true);
}
}

View File

@@ -14,7 +14,7 @@ public class AiModelSaveReqVO {
@Schema(description = "主键", example = "1")
private Long id;
@Schema(description = "模型名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "宠物声音翻译模型")
@Schema(description = "模型名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "模型")
@NotBlank(message = "模型名称不能为空")
private String modelName;
@@ -22,14 +22,14 @@ public class AiModelSaveReqVO {
@NotBlank(message = "版本号不能为空")
private String version;
@Schema(description = "负载百分比0.0-1.0", example = "0.75")
@Schema(description = "负载", example = "0.75")
private BigDecimal loadPercentage;
@Schema(description = "状态0-禁用 1-启用 2-测试中 3-已废弃", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@Schema(description = "状态0-禁用 1-启用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "状态不能为空")
private Integer status;
@Schema(description = "版本描述", example = "优化了翻译准确率")
@Schema(description = "版本描述", example = "描述")
private String description;
}

View File

@@ -54,4 +54,6 @@ public class AiModelDO extends BaseDO {
*/
private String description;
}

View File

@@ -32,8 +32,6 @@ public class SecurityConfiguration {
.requestMatchers(adminSeverContextPath + "/**").permitAll();
// 文件读取
registry.requestMatchers(buildAdminApi("/infra/file/*/get/**")).permitAll();
// AI模型管理接口
registry.requestMatchers("/ai/model/**").permitAll();
// RPC 服务的安全配置
registry.requestMatchers(ApiConstants.PREFIX + "/**").permitAll();
}

View File

@@ -51,12 +51,4 @@ public interface AiModelService {
*/
PageResult<AiModelDO> getModelPage(AiModelPageReqVO pageReqVO);
/**
* 更新状态
*
* @param id 编号
* @param status 状态
*/
void updateStatus(Long id, Integer status);
}

View File

@@ -29,6 +29,7 @@ public class AiModelServiceImpl implements AiModelService {
return model.getId();
}
@Override
public void updateModel(AiModelSaveReqVO updateReqVO) {
AiModelDO updateObj = BeanUtils.toBean(updateReqVO, AiModelDO.class);
@@ -50,12 +51,4 @@ public class AiModelServiceImpl implements AiModelService {
return modelMapper.selectPage(pageReqVO);
}
@Override
public void updateStatus(Long id, Integer status) {
AiModelDO updateObj = new AiModelDO();
updateObj.setId(id);
updateObj.setStatus(status);
modelMapper.updateById(updateObj);
}
}

View File

@@ -10,6 +10,8 @@ import com.tashow.cloud.common.pojo.PageResult;
import com.tashow.cloud.common.util.collection.CollectionUtils;
import com.tashow.cloud.common.util.object.BeanUtils;
import com.tashow.cloud.common.util.validation.ValidationUtils;
import com.tashow.cloud.infraapi.api.config.ConfigApi;
import com.tashow.cloud.infraapi.api.file.FileApi;
import com.tashow.cloud.permission.core.util.DataPermissionUtils;