From 999fd82ccc2ad2058533a6c6e8c862eaa4a2bca4 Mon Sep 17 00:00:00 2001 From: NingHuan <2139614357@qq.com> Date: Tue, 20 May 2025 17:14:09 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=9D=E7=95=99=E4=BB=8Emain=E5=88=86?= =?UTF-8?q?=E6=94=AF=E6=9A=82=E5=AD=98=E7=9A=84=E6=89=80=E6=9C=89=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Conflicts: # src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java # src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java # src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java # src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java # src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java # src/main/resources/mapper/ModelMapper.xml # Conflicts: # src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java # src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java # src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java # src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java # src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java # src/main/resources/mapper/ModelMapper.xml --- .../controller/ModelController.java | 35 +++++++++++ .../mapper/ModelMapper.java | 24 ++++++++ .../pojo/ModelDTO.java | 20 +++++++ .../pojo/ModelVersion.java | 12 ++++ .../service/Impl/ModelServiceImpl.java | 58 +++++++++++++++++++ .../service/ModelService.java | 10 ++++ src/main/resources/mapper/ModelMapper.xml | 10 ++++ 7 files changed, 169 insertions(+) create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java create mode 100644 src/main/resources/mapper/ModelMapper.xml diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java new file mode 100644 index 0000000..663b4ce --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java @@ -0,0 +1,35 @@ +package com.bipt.intelligentapplicationorchestrationservice.controller; + +import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelDTO; +import com.bipt.intelligentapplicationorchestrationservice.pojo.OptResult; +import com.bipt.intelligentapplicationorchestrationservice.service.ModelService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@Slf4j +@RestController +@RequestMapping("/model") +@Tag(name = "模型部分相关接口") +public class ModelController { + @Autowired + private ModelService modelService; + @Operation(summary = "创建模型") + @PostMapping("/createModel") + public OptResult creatModel(@RequestBody ModelDTO dto){ + log.info("创建模型"); + modelService.createModel(dto); + return OptResult.success(); + } + + @Operation(summary = "新增模型版本") + @PostMapping("/createModelVersion") + public OptResult createModelVersion(@RequestBody ModelDTO dto){ + log.info("新增模型版本"); + modelService.createModelVersion(dto); + return OptResult.success(); + } + +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java new file mode 100644 index 0000000..97616a1 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java @@ -0,0 +1,24 @@ +package com.bipt.intelligentapplicationorchestrationservice.mapper; + +import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelInfo; +import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersion; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Options; + +public interface ModelMapper { + + /** + * 插入模型基本信息 + * @param modelInfo + */ + @Options(useGeneratedKeys = true, keyProperty = "id") //能够拿到主键值,并设置给modelInfo对象 + @Insert("insert into model_info(model_name) values(#{modelName})") + void insertModelInfo(ModelInfo modelInfo); + + /** + * 插入模型版本信息 + * @param modelVersion + */ + void insertModelVersion(ModelVersion modelVersion); + +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java new file mode 100644 index 0000000..bdb62b7 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java @@ -0,0 +1,20 @@ +package com.bipt.intelligentapplicationorchestrationservice.pojo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ModelDTO { + private Long id; // 模型id + private String modelName; // 模型名称 + private Integer datasetId; // 数据集id + private Integer modelSize; // 模型大小 + private String dataPreHandleFile; // 数据预处理文件存储路 + + private String version; //模型版本 +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersion.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersion.java index 6297b43..b2ff94a 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersion.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersion.java @@ -24,5 +24,17 @@ public class ModelVersion implements Serializable { private String modelPath; // 模型存储路径 private Integer status; // 模型状态(1代表上线,0代表不上线) private LocalDateTime createTime; // 创建时间 + //补充更新时间字段 + private LocalDateTime updateTime; // 更新时间 + //创建模型部分补充的字段 + private Integer modelSize; // 模型大小 + private String dataPreHandleFile; // 数据预处理文件存储路径 + //模型信息管理部分补充的字段 + private String modelSuperArgs; // 模型超参数 + private String modelArgsSize; // 模型参数量 + private String modelSourceCodeUrl; // 模型源代码路径 + private String modelFile; // 模型文件存储路径 + private String modelDesignDocument; // 模型设计文档存储路径 + private String lifeCycle; // 模型生命周期 } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java new file mode 100644 index 0000000..0db4030 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java @@ -0,0 +1,58 @@ +package com.bipt.intelligentapplicationorchestrationservice.service.Impl; + +import com.bipt.intelligentapplicationorchestrationservice.mapper.ModelMapper; +import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelDTO; +import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelInfo; +import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersion; +import com.bipt.intelligentapplicationorchestrationservice.service.ModelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; + +@Slf4j +@Service +public class ModelServiceImpl implements ModelService { + @Autowired + private ModelMapper modelMapper; + /** + * 创建模型 + * @param dto + */ + @Transactional //事务注解 + @Override + public void createModel(ModelDTO dto) { + log.info("创建模型"); + //1.插入模型基本信息 + ModelInfo modelInfo = new ModelInfo(); + BeanUtils.copyProperties(dto, modelInfo, "id"); + modelMapper.insertModelInfo(modelInfo); + log.info("模型id: {}", modelInfo.getId()); + //2.插入模型版本信息 + ModelVersion modelVersion = new ModelVersion(); + //使用工具类将dto属性复制给modelVersion + BeanUtils.copyProperties(dto, modelVersion, "id"); + modelVersion.setModelId(modelInfo.getId()); + modelVersion.setCreateTime(LocalDateTime.now()); + modelVersion.setUpdateTime(LocalDateTime.now()); + modelMapper.insertModelVersion(modelVersion); + } + + /** + * 新增模型版本 + * @param dto + */ + @Override + public void createModelVersion(ModelDTO dto) { + log.info("新增模型版本"); + ModelVersion modelVersion = new ModelVersion(); + BeanUtils.copyProperties(dto, modelVersion, "id"); + modelVersion.setModelId(dto.getId()); + modelVersion.setCreateTime(LocalDateTime.now()); + modelVersion.setUpdateTime(LocalDateTime.now()); + modelMapper.insertModelVersion(modelVersion); + } +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java new file mode 100644 index 0000000..ea9f38f --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java @@ -0,0 +1,10 @@ +package com.bipt.intelligentapplicationorchestrationservice.service; + +import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelDTO; + +public interface ModelService { + void createModel(ModelDTO dto); + + + void createModelVersion(ModelDTO dto); +} diff --git a/src/main/resources/mapper/ModelMapper.xml b/src/main/resources/mapper/ModelMapper.xml new file mode 100644 index 0000000..60de477 --- /dev/null +++ b/src/main/resources/mapper/ModelMapper.xml @@ -0,0 +1,10 @@ + + + + + + + insert into model_version (model_id, dataset_id, model_size, data_pre_handle_file, create_time, update_time, version) + values (#{modelId}, #{datasetId}, #{modelSize}, #{dataPreHandleFile}, #{createTime}, #{updateTime}, #{version}) + + \ No newline at end of file From 9f348280ea3bb379a61f8b59204cccc13ec33997 Mon Sep 17 00:00:00 2001 From: NingHuan <2139614357@qq.com> Date: Sun, 25 May 2025 19:29:52 +0800 Subject: [PATCH 2/2] =?UTF-8?q?[=E5=86=B2=E7=AA=81]:=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E5=90=88=E5=B9=B6=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Conflicts: # src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/MessageConstant.java # src/main/resources/application.properties --- .../constant/MessageConstant.java | 8 ++ .../controller/ModelController.java | 48 +++++++++- .../enumeration/ModelLifecycle.java | 51 ++++++++++ .../mapper/ModelMapper.java | 55 ++++++++++- .../pojo/ModelDTO.java | 21 +++- .../pojo/ModelVO.java | 24 +++++ .../pojo/ModelVersion.java | 6 ++ .../pojo/ModelVersionDTO.java | 31 ++++++ .../service/Impl/ModelServiceImpl.java | 96 ++++++++++++++++++- .../service/ModelService.java | 16 +++- src/main/resources/application.properties | 5 + src/main/resources/mapper/ModelMapper.xml | 55 ++++++++++- 12 files changed, 400 insertions(+), 16 deletions(-) create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/enumeration/ModelLifecycle.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVO.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersionDTO.java diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/MessageConstant.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/MessageConstant.java index 3240df9..7347c95 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/MessageConstant.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/MessageConstant.java @@ -3,4 +3,12 @@ package com.bipt.intelligentapplicationorchestrationservice.constant; public class MessageConstant { public static final String UNKNOWN_ERROR = "未知错误"; public static final String ALREADY_EXISTS = "已存在"; + + //生命周期相关常量 + public static final String LifeCycle_No_Exist = "生命周期不存在"; + public static final String LifeCycle_Undefined = "生命周期未定义"; + public static final String ERROR_DEPLOYED_TO_DESIGNING = "已部署的模型不能直接调整成设计,需先下线再设计"; + public static final String ERROR_ABANDONED_CANNOT_UPDATE = "已废弃的模型只能查看信息,不能更新生命周期"; + public static final String ERROR_TRAINING_INVALID_TRANSITION = "训练中的模型只能调整成设计和评估"; + public static final String UPDATE_FAILURE = "更新模型生命周期失败"; } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java index 663b4ce..11012ae 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java @@ -1,7 +1,6 @@ package com.bipt.intelligentapplicationorchestrationservice.controller; -import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelDTO; -import com.bipt.intelligentapplicationorchestrationservice.pojo.OptResult; +import com.bipt.intelligentapplicationorchestrationservice.pojo.*; import com.bipt.intelligentapplicationorchestrationservice.service.ModelService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -9,10 +8,13 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; + @Slf4j @RestController @RequestMapping("/model") @Tag(name = "模型部分相关接口") +@CrossOrigin(origins = "http://localhost:3000") // 生产环境指定具体域名 public class ModelController { @Autowired private ModelService modelService; @@ -32,4 +34,46 @@ public class ModelController { return OptResult.success(); } + @Operation(summary = "查询模型列表") + @GetMapping("list") + public OptResult list(){ + log.info("查询模型列表"); + List modelVOList = modelService.list(); + return OptResult.success(modelVOList); + } + + @Operation(summary = "查询模型详情") + @GetMapping("detail") + public OptResult detail(Long id){ + log.info("查询模型详情"); + ModelVersion modelVersion = modelService.detail(id); + return OptResult.success(modelVersion); + } + + @Operation(summary = "模型更新") + @PutMapping("/updateModel") + public OptResult updateModel(@RequestBody ModelVersionDTO dto){ + log.info("模型更新"); + modelService.updateModel(dto); + return OptResult.success(); + } + + + @Operation(summary = "模型版本删除") + @DeleteMapping("/deleteModelVersion") + public OptResult deleteModelVersion(Long id){ + log.info("模型版本删除"); + modelService.deleteModelVersion(id); + return OptResult.success(); + } + + @Operation(summary = "更新生命周期") + @PutMapping("/updateLifeCycle") + public OptResult updateLifeCycle(Long id,String lifeCycle){ + log.info("更新生命周期"); + modelService.updateLifeCycle(id,lifeCycle); + return OptResult.success(); + } + + } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/enumeration/ModelLifecycle.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/enumeration/ModelLifecycle.java new file mode 100644 index 0000000..0e8b2f7 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/enumeration/ModelLifecycle.java @@ -0,0 +1,51 @@ +package com.bipt.intelligentapplicationorchestrationservice.enumeration; + +import com.bipt.intelligentapplicationorchestrationservice.constant.MessageConstant; + +/** + * 模型生命周期状态枚举 + */ +public enum ModelLifecycle { + DESIGNING("设计中"), + TRAINING("训练中"), + EVALUATING("评估中"), + DEPLOYED("已部署"), + OFFLINE("已下线"), + ABANDONED("已废弃"); + + private final String description; + + private ModelLifecycle(String description) { + this.description = description; + } + + + public String getDescription() { + return description; + } + + // 将枚举名称转换成数据库存储的字符串 + public String getDbValue() { + return name(); + } + + // 将数据库存储的字符串转换为枚举实例 + public static ModelLifecycle getDbValueFromDb(String dbValue) { + if(dbValue == null) return null; + try { + return ModelLifecycle.valueOf(dbValue); + } catch (IllegalArgumentException e) { + throw new IllegalArgumentException(MessageConstant.LifeCycle_No_Exist + ":" + dbValue); + } + } + + // 从前端传的中文描述 -> 转换为枚举 + public static ModelLifecycle fromDescription(String description) { + for (ModelLifecycle lifecycle : ModelLifecycle.values()) { + if (lifecycle.getDescription().equals(description)) { + return lifecycle; + } + } + throw new IllegalArgumentException("生命周期描述非法: " + description); + } +} \ No newline at end of file diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java index 97616a1..fb3106f 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java @@ -1,9 +1,12 @@ package com.bipt.intelligentapplicationorchestrationservice.mapper; import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelInfo; +import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVO; import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersion; -import org.apache.ibatis.annotations.Insert; -import org.apache.ibatis.annotations.Options; +import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersionDTO; +import org.apache.ibatis.annotations.*; + +import java.util.List; public interface ModelMapper { @@ -21,4 +24,52 @@ public interface ModelMapper { */ void insertModelVersion(ModelVersion modelVersion); + /* + * 查询模型列表 + */ + List list(); + + /** + * 根据id查询模型详情 + * @param id 版本表id + * @return + */ + ModelVersion selectById(Long id); + + /** + * 更新模型信息 + * @param dto + */ + void update(ModelVersionDTO dto); + + /** + * 删除模型版本 + * @param id 版本表id + */ + @Delete("delete from model_version where id=#{id}") + void deleteModelVersion(Long id); + + /** + * 删除模型 + * @param id 模型id + */ + @Delete("delete from model_info where id= #{id}") + void deleteModel(Long id); + + /** + * 查询模型生命周期 + * @param id 模型版本表id + * 返回模型生命周期 + */ + @Select("select life_cycle from model_version where id=#{id}") + String selectLifeCycleById(Long id); + + /** + * 更新模型生命周期 + * @param id 模型版本表id + * @param dbValue 数据库中存储的生命周期 + * @return + */ + @Update("update model_version set life_cycle=#{dbValue} where id=#{id}") + int updateLifeCycleById(Long id, String dbValue); } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java index bdb62b7..7fd41b9 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java @@ -5,16 +5,27 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.time.LocalDateTime; + @Data @Builder @NoArgsConstructor @AllArgsConstructor public class ModelDTO { - private Long id; // 模型id - private String modelName; // 模型名称 + private Long id; // 模型id + private String modelName; // 模型名称 + private String version; // 模型版本 private Integer datasetId; // 数据集id + private String modelConfig; // 模型配置信息 + private String modelPath; // 模型存储路径 + private Integer status; // 模型状态(1代表上线,0代表不上线)D private Integer modelSize; // 模型大小 - private String dataPreHandleFile; // 数据预处理文件存储路 - - private String version; //模型版本 + private String dataPreHandleFile; // 数据预处理文件存储路径 + private String modelSuperArgs; // 模型超参数 + private String modelArgsSize; // 模型参数量 + private String modelSourceCodeUrl; // 模型源代码路径 + private String modelFile; // 模型文件存储路径 + private String modelDesignDocument; // 模型设计文档存储路径 + private String lifeCycle; // 模型生命周期 + private String operateUser; // 操作人 } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVO.java new file mode 100644 index 0000000..2142037 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVO.java @@ -0,0 +1,24 @@ +package com.bipt.intelligentapplicationorchestrationservice.pojo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ModelVO { + private Long id; // 模型id + private Long versionId; // 用于保证react的map中key的唯一性 + private String modelName; // 模型名称 + private String version; // 模型版本 + private String dataPreHandleFile; // 数据预处理文件存储路径 + private String operateUser; // 操作人 + private LocalDateTime updateTime; // 修改时间 + private Integer status; // 模型状态(1代表上线,0代表不上线) + +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersion.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersion.java index b2ff94a..90a907b 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersion.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersion.java @@ -37,4 +37,10 @@ public class ModelVersion implements Serializable { private String modelDesignDocument; // 模型设计文档存储路径 private String lifeCycle; // 模型生命周期 + + private String operateUser; // 操作人 + + private String modelName; //模型名称 + + } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersionDTO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersionDTO.java new file mode 100644 index 0000000..9180f7f --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersionDTO.java @@ -0,0 +1,31 @@ +package com.bipt.intelligentapplicationorchestrationservice.pojo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ModelVersionDTO { + private Long id; // 模型id + private String version; // 模型版本 + private Integer datasetId; // 数据集id + private String modelConfig; // 模型配置信息 + private String modelPath; // 模型存储路径 + private Integer status; // 模型状态(1代表上线,0代表不上线) + private LocalDateTime createTime; // 创建时间 + private LocalDateTime updateTime; // 更新时间 + private Integer modelSize; // 模型大小 + private String dataPreHandleFile; // 数据预处理文件存储路径 + private String modelSuperArgs; // 模型超参数 + private String modelArgsSize; // 模型参数量 + private String modelSourceCodeUrl; // 模型源代码路径 + private String modelFile; // 模型文件存储路径 + private String modelDesignDocument; // 模型设计文档存储路径 + private String lifeCycle; // 模型生命周期 + private String operateUser; // 操作人 +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java index 0db4030..cc8d32a 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java @@ -1,9 +1,9 @@ package com.bipt.intelligentapplicationorchestrationservice.service.Impl; +import com.bipt.intelligentapplicationorchestrationservice.constant.MessageConstant; +import com.bipt.intelligentapplicationorchestrationservice.enumeration.ModelLifecycle; import com.bipt.intelligentapplicationorchestrationservice.mapper.ModelMapper; -import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelDTO; -import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelInfo; -import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersion; +import com.bipt.intelligentapplicationorchestrationservice.pojo.*; import com.bipt.intelligentapplicationorchestrationservice.service.ModelService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; @@ -12,6 +12,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.util.List; @Slf4j @Service @@ -38,6 +39,7 @@ public class ModelServiceImpl implements ModelService { modelVersion.setModelId(modelInfo.getId()); modelVersion.setCreateTime(LocalDateTime.now()); modelVersion.setUpdateTime(LocalDateTime.now()); + modelVersion.setOperateUser("zs"); modelMapper.insertModelVersion(modelVersion); } @@ -53,6 +55,94 @@ public class ModelServiceImpl implements ModelService { modelVersion.setModelId(dto.getId()); modelVersion.setCreateTime(LocalDateTime.now()); modelVersion.setUpdateTime(LocalDateTime.now()); + modelVersion.setOperateUser("zs"); modelMapper.insertModelVersion(modelVersion); } + + /** + * 查询模型列表 + */ + @Override + public List list() { + log.info("查询模型列表"); + List modelVOList = modelMapper.list(); + return modelVOList; + } + + @Override + public ModelVersion detail(Long id) { + log.info("查询模型详情"); + ModelVersion modelVersion = modelMapper.selectById(id); + return modelVersion; + } + + @Override + public void updateModel(ModelVersionDTO dto) { + log.info("更新模型"); + modelMapper.update(dto); + } + + @Override + public void deleteModelVersion(Long id) { + log.info("删除模型版本"); + modelMapper.deleteModelVersion(id); + } + + /** + * 更新模型生命周期 + * @param id 版本表id + * @param + */ + @Override + public void updateLifeCycle(Long id, String lifeCycleDescription) { + log.info("更新模型生命周期"); + + // 1. 查询当前生命周期并转为枚举 + String currentLifeCycleStr = modelMapper.selectLifeCycleById(id); + if (currentLifeCycleStr == null) { + log.error("未找到对应模型信息,无法更新生命周期"); + throw new IllegalArgumentException(MessageConstant.LifeCycle_No_Exist); + } + + ModelLifecycle currentLifeCycle; + ModelLifecycle targetLifeCycle; + try { + currentLifeCycle = ModelLifecycle.valueOf(currentLifeCycleStr.trim()); // 数据库中是英文 + targetLifeCycle = ModelLifecycle.fromDescription((lifeCycleDescription).trim()); // 前端传中文 + } catch (IllegalArgumentException e) { + log.error(MessageConstant.LifeCycle_Undefined + ":{}", e.getMessage()); + throw e; + } + + // 2. 业务逻辑校验 + switch (currentLifeCycle) { + case DEPLOYED: + if (targetLifeCycle == ModelLifecycle.DESIGNING) { + log.error("已部署的模型不能直接调整成设计,需先下线再设计"); + throw new IllegalArgumentException(MessageConstant.ERROR_DEPLOYED_TO_DESIGNING); + } + break; + case ABANDONED: + log.error("已废弃的模型只能查看信息,不能更新生命周期"); + throw new IllegalArgumentException(MessageConstant.ERROR_ABANDONED_CANNOT_UPDATE); + case TRAINING: + if (targetLifeCycle != ModelLifecycle.DESIGNING && targetLifeCycle != ModelLifecycle.EVALUATING) { + log.error("训练中的模型只能调整成设计和评估"); + throw new IllegalArgumentException(MessageConstant.ERROR_TRAINING_INVALID_TRANSITION); + } + break; + default: + break; + } + + // 3. 执行更新 + int affectedRows = modelMapper.updateLifeCycleById(id, targetLifeCycle.getDbValue()); + if (affectedRows == 0) { + log.error("更新模型生命周期失败"); + throw new RuntimeException(MessageConstant.UPDATE_FAILURE); + } + + log.info("模型生命周期更新成功,新状态为: {}", targetLifeCycle); + } + } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java index ea9f38f..0933085 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java @@ -1,10 +1,24 @@ package com.bipt.intelligentapplicationorchestrationservice.service; import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelDTO; +import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVO; +import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersion; +import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersionDTO; + +import java.util.List; public interface ModelService { void createModel(ModelDTO dto); - void createModelVersion(ModelDTO dto); + + List list(); + + ModelVersion detail(Long id); + + void updateModel(ModelVersionDTO dto); + + void deleteModelVersion(Long id); + + void updateLifeCycle(Long id, String lifeCycle); } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 2b97d0a..ae9c7f0 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -27,3 +27,8 @@ spring.data.redis.password=Jbjhhzstsl97@ spring.data.redis.database = 0 # 连接超时时间(毫秒) spring.data.redis.timeout = 3000 + + +#SQL 语句日志输出配置 +logging.level.com.bipt.intelligentapplicationorchestrationservice.mapper=DEBUG +mybatis.configuration.log-impl=org.apache.ibatis.logging.slf4j.Slf4jImpl \ No newline at end of file diff --git a/src/main/resources/mapper/ModelMapper.xml b/src/main/resources/mapper/ModelMapper.xml index 60de477..bdd7edd 100644 --- a/src/main/resources/mapper/ModelMapper.xml +++ b/src/main/resources/mapper/ModelMapper.xml @@ -2,9 +2,58 @@ - + - insert into model_version (model_id, dataset_id, model_size, data_pre_handle_file, create_time, update_time, version) - values (#{modelId}, #{datasetId}, #{modelSize}, #{dataPreHandleFile}, #{createTime}, #{updateTime}, #{version}) + insert into model_version ( + model_id, version, dataset_id, model_config, + model_path, status, create_time, update_time, model_size, + data_pre_handle_file, model_super_args, model_args_size, model_source_code_url, model_file, + model_design_document, life_cycle, operate_user + ) + values ( + #{modelId}, #{version}, #{datasetId}, #{modelConfig}, + #{modelPath}, #{status}, #{createTime}, #{updateTime}, #{modelSize}, + #{dataPreHandleFile}, #{modelSuperArgs}, #{modelArgsSize}, #{modelSourceCodeUrl}, #{modelFile}, + #{modelDesignDocument}, #{lifeCycle}, #{operateUser} + ) + + + + + + + + + + UPDATE model_version + + + model_size = #{modelSize}, + + + model_super_args = #{modelSuperArgs}, + + + model_args_size = #{modelArgsSize}, + + + WHERE id = #{id + \ No newline at end of file