From 51e80031ba7d8a12844f6c1022c7cecfd0e6abcf Mon Sep 17 00:00:00 2001 From: NingHuan <2139614357@qq.com> Date: Tue, 13 May 2025 10:47:23 +0800 Subject: [PATCH 01/50] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]:=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E4=BB=A5=E5=8F=8Apom?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E3=80=81test=E6=B5=8B=E8=AF=95=E7=B1=BB?= =?UTF-8?q?=E7=94=A8=E4=BA=8E=E6=95=B0=E6=8D=AE=E5=BA=93=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=EF=BC=8C[=E6=B7=BB=E5=8A=A0]:=E6=96=B0=E5=A2=9E=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E9=A9=B1=E5=8A=A8=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 7 +++++++ src/main/resources/application.properties | 10 ++++++++++ ...ationOrchestrationServiceApplicationTests.java | 15 +++++++++++++-- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index f469829..2e126ea 100644 --- a/pom.xml +++ b/pom.xml @@ -49,6 +49,13 @@ lombok true + + + + com.kingbase8 + kingbase8 + 9.0.0 + org.springframework.boot spring-boot-starter-test diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index d53e06e..c50d915 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,11 @@ spring.application.name=intelligent-application-orchestration-service + + +# 数据库配置 +spring.datasource.url=jdbc:kingbase8://116.205.121.200:54321/Ipz +spring.datasource.username=system +spring.datasource.password=root +spring.datasource.driver-class-name=com.kingbase8.Driver +spring.datasource.hikari.maximum-pool-size=10 +spring.datasource.hikari.minimum-idle=5 +spring.datasource.hikari.connection-timeout=30000 \ No newline at end of file diff --git a/src/test/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplicationTests.java b/src/test/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplicationTests.java index ea39d17..ca59f9d 100644 --- a/src/test/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplicationTests.java +++ b/src/test/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplicationTests.java @@ -1,13 +1,24 @@ package com.bipt.intelligentapplicationorchestrationservice; import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import javax.sql.DataSource; + +import java.sql.SQLException; + +import static org.junit.jupiter.api.Assertions.assertNotNull; + @SpringBootTest class IntelligentApplicationOrchestrationServiceApplicationTests { - + @Autowired + private DataSource dataSource; @Test - void contextLoads() { + void contextLoads() throws SQLException { + // 尝试获取连接 + assertNotNull(dataSource.getConnection(), "无法获取数据库连接!"); + System.out.println("数据库连接成功!"); } } From b953e85704506e96eedb9704c4a88aeaafa9a234 Mon Sep 17 00:00:00 2001 From: xiaohucoding <2307520758@qq.com> Date: Tue, 13 May 2025 21:36:29 +0800 Subject: [PATCH 02/50] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=8F=8A=E4=BF=AE=E6=94=B9=E5=8A=9F=E8=83=BD=E7=89=88?= =?UTF-8?q?=E6=9C=AC1.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 11 ++++ .../controller/DatasetController.java | 43 +++++++++++++ .../enumeration/OperationType.java | 27 ++++++++ .../mapper/DatasetMapper.java | 13 ++++ .../pojo/DatasetDTO.java | 17 ++++++ .../pojo/DatasetEntity.java | 28 +++++++++ .../pojo/OptResult.java | 40 ++++++++++++ .../service/DatasetService.java | 11 ++++ .../service/Impl/DatasetServiceImpl.java | 61 +++++++++++++++++++ src/main/resources/application.properties | 4 ++ src/main/resources/mapper/DatasetMapper.xml | 32 ++++++++++ 11 files changed, 287 insertions(+) create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/DatasetController.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/enumeration/OperationType.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/DatasetMapper.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetDTO.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetEntity.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/OptResult.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/DatasetService.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/DatasetServiceImpl.java create mode 100644 src/main/resources/mapper/DatasetMapper.xml diff --git a/pom.xml b/pom.xml index f469829..5443fde 100644 --- a/pom.xml +++ b/pom.xml @@ -54,6 +54,17 @@ spring-boot-starter-test test + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 3.0.4 + + + org.mybatis.spring.boot + mybatis-spring-boot-starter-test + 3.0.4 + test + diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/DatasetController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/DatasetController.java new file mode 100644 index 0000000..fa47e8c --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/DatasetController.java @@ -0,0 +1,43 @@ +package com.bipt.intelligentapplicationorchestrationservice.controller; + +import com.bipt.intelligentapplicationorchestrationservice.pojo.DatasetDTO; +import com.bipt.intelligentapplicationorchestrationservice.pojo.DatasetEntity; +import com.bipt.intelligentapplicationorchestrationservice.pojo.OptResult; +import com.bipt.intelligentapplicationorchestrationservice.service.DatasetService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/dataset") +@Slf4j +public class DatasetController { + @Autowired + private DatasetService datasetService; + + /** + * 新增数据集 + * @param datasetDTO + * @return + */ + @PostMapping + public OptResult save(@RequestBody DatasetDTO datasetDTO) { + log.info("新增数据集:{}", datasetDTO); + datasetService.save(datasetDTO); + return OptResult.success(); + } + + /** + * 修改数据集 + * @param datasetEntity + * @return + */ + @PutMapping + public OptResult update(@RequestBody DatasetEntity datasetEntity){ + log.info("修改数据集",datasetEntity); + datasetService.update(datasetEntity); + return OptResult.success(); + } + + +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/enumeration/OperationType.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/enumeration/OperationType.java new file mode 100644 index 0000000..cb6c5a1 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/enumeration/OperationType.java @@ -0,0 +1,27 @@ +package com.bipt.intelligentapplicationorchestrationservice.enumeration; + +import org.apache.ibatis.annotations.Delete; + +/** + * 数据库操作类型 + */ +public enum OperationType { + /** + * 更新操作 + */ + UPDATE, + + /** + * 插入操作 + */ + INSERT, + + /** + * 删除操作 + */ + DELETE, + /** + * 查询操作 + */ + SELECT +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/DatasetMapper.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/DatasetMapper.java new file mode 100644 index 0000000..4c55a0a --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/DatasetMapper.java @@ -0,0 +1,13 @@ +package com.bipt.intelligentapplicationorchestrationservice.mapper; + +import com.bipt.intelligentapplicationorchestrationservice.pojo.DatasetEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Update; + +import java.util.Map; + +@Mapper +public interface DatasetMapper { + + void updata(DatasetEntity datasetEntity); +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetDTO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetDTO.java new file mode 100644 index 0000000..ee86df6 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetDTO.java @@ -0,0 +1,17 @@ +package com.bipt.intelligentapplicationorchestrationservice.pojo; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + * @author hky + */ +@Data +public class DatasetDTO implements Serializable { + private Integer datasetId; + private String datasetName; + private Integer datasetType; + private Map args; +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetEntity.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetEntity.java new file mode 100644 index 0000000..7409971 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetEntity.java @@ -0,0 +1,28 @@ +package com.bipt.intelligentapplicationorchestrationservice.pojo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Map; + +/** + * @author hky + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DatasetEntity implements Serializable { + private Integer datasetId; + private String datasetName; + private Integer datasetType; + private Integer datasetStatus; + private String dsPath; + private Map args; + private LocalDateTime createTime; + private LocalDateTime updateTime; +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/OptResult.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/OptResult.java new file mode 100644 index 0000000..d89c6de --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/OptResult.java @@ -0,0 +1,40 @@ +package com.bipt.intelligentapplicationorchestrationservice.pojo; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 后端统一返回结果 + * @author hky + * @param + */ +@Data +public class OptResult implements Serializable { + + private boolean isSuccess; + private String errorInfo; + private int statusCode; + private T data; + + public static OptResult success() { + OptResult result = new OptResult<>(); + result.isSuccess = true; + return result; + } + + public static OptResult success(T object) { + OptResult result = new OptResult<>(); + result.data = object; + result.isSuccess = true; + return result; + } + + public static OptResult error(String errorInfo) { + OptResult result = new OptResult(); + result.errorInfo = errorInfo; + result.isSuccess = false; + return result; + } + +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/DatasetService.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/DatasetService.java new file mode 100644 index 0000000..377d960 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/DatasetService.java @@ -0,0 +1,11 @@ +package com.bipt.intelligentapplicationorchestrationservice.service; + +import com.bipt.intelligentapplicationorchestrationservice.pojo.DatasetDTO; +import com.bipt.intelligentapplicationorchestrationservice.pojo.DatasetEntity; +import org.springframework.stereotype.Service; + +public interface DatasetService { + void save(DatasetDTO datasetDTO); + + void update(DatasetEntity datasetEntity); +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/DatasetServiceImpl.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/DatasetServiceImpl.java new file mode 100644 index 0000000..6b04606 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/DatasetServiceImpl.java @@ -0,0 +1,61 @@ +package com.bipt.intelligentapplicationorchestrationservice.service.Impl; + +import com.bipt.intelligentapplicationorchestrationservice.mapper.DatasetMapper; +import com.bipt.intelligentapplicationorchestrationservice.pojo.DatasetDTO; +import com.bipt.intelligentapplicationorchestrationservice.pojo.DatasetEntity; +import com.bipt.intelligentapplicationorchestrationservice.service.DatasetService; +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; +import java.util.Map; + +@Service +@Slf4j +public class DatasetServiceImpl implements DatasetService { + @Autowired + private DatasetMapper datasetMapper; + + /** + * 新增数据集 + * @param datasetDTO + */ + @Override + public void save(DatasetDTO datasetDTO) { + //判断数据集类型,如果是本地上传则保存,若用调用数据仓库进入下一步 + if (datasetDTO.getDatasetType()==0){ + //TODO 保存到分布式文件系统 + + }else { + Map args = datasetDTO.getArgs(); + Integer datasetType = datasetDTO.getDatasetType(); + //TODO 根据筛选条件调用数据仓库中的数据 + + //TODO 调用数据仓库保存到分布式文件系统 + } + + } + + /** + * 修改数据集 + * @param datasetEntity + */ + @Override + @Transactional + public void update(DatasetEntity datasetEntity) { + if (datasetEntity.getDatasetType()==0){ + //TODO 覆盖保存到分布式文件系统中 + + }else { + + //TODO 覆盖数据文件 + + datasetEntity.setUpdateTime(LocalDateTime.now()); + //maybe需要判断 + datasetMapper.updata(datasetEntity); + } + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index d53e06e..28612b7 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,5 @@ spring.application.name=intelligent-application-orchestration-service +# ????? +spring.datasource.url=jdbc:kingbase8://116.205.121.200:54321/Ipz +spring.datasource.username=system +spring.datasource.password=root \ No newline at end of file diff --git a/src/main/resources/mapper/DatasetMapper.xml b/src/main/resources/mapper/DatasetMapper.xml new file mode 100644 index 0000000..4d89113 --- /dev/null +++ b/src/main/resources/mapper/DatasetMapper.xml @@ -0,0 +1,32 @@ + + + + + + update dataset + + + dataset_name=#{datasetName}, + + + dataset_type=#{datasetType}, + + + dataset_status=#{datasetStatus}, + + + ds_path=#{dsPath}, + + + args=#{args}, + + + create_time=#{createTime}, + + + update_time=#{updateTime} + + + where dataset_id = #{datasetId} + + \ No newline at end of file From 2f8c8940c079abf4aa527b0cc76c1d5da7051a7b Mon Sep 17 00:00:00 2001 From: Lpz Date: Wed, 14 May 2025 09:24:17 +0800 Subject: [PATCH 03/50] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=97=A5=E6=8A=A5?= =?UTF-8?q?=E6=A8=A1=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/WorkReport/2025-05.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 doc/WorkReport/2025-05.md diff --git a/doc/WorkReport/2025-05.md b/doc/WorkReport/2025-05.md new file mode 100644 index 0000000..9ea39c5 --- /dev/null +++ b/doc/WorkReport/2025-05.md @@ -0,0 +1,17 @@ +# 工作日报 +## 2025-05-14 + +### xxx +#### ✅ 今日完成 +- 完成支付接口单元测试 +- 优化数据库查询性能(响应时间降低40%) + +#### 🚧 进行中 +- 用户积分系统开发(完成前端部分) + +#### ⚠️ 问题/障碍 +- 第三方短信服务不稳定(已联系供应商) + +#### 📅 明日计划 +- 继续开发积分系统后端 +- 参加架构设计会议 \ No newline at end of file From e8eddb9c539946e00652cbc028508fe052c00c21 Mon Sep 17 00:00:00 2001 From: Lpz Date: Wed, 14 May 2025 09:33:19 +0800 Subject: [PATCH 04/50] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=A8=A1=E7=89=88?= =?UTF-8?q?=EF=BC=8C=E5=8F=98=E6=9B=B4=E4=B8=BA=E6=AF=8F=E4=BA=BA=E6=AF=8F?= =?UTF-8?q?=E6=9C=88=E5=8D=95=E7=8B=AC=E7=9A=84=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/WorkReport/{2025-05.md => 2025-05-name.md} | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) rename doc/WorkReport/{2025-05.md => 2025-05-name.md} (59%) diff --git a/doc/WorkReport/2025-05.md b/doc/WorkReport/2025-05-name.md similarity index 59% rename from doc/WorkReport/2025-05.md rename to doc/WorkReport/2025-05-name.md index 9ea39c5..f29c8e4 100644 --- a/doc/WorkReport/2025-05.md +++ b/doc/WorkReport/2025-05-name.md @@ -1,17 +1,15 @@ -# 工作日报 -## 2025-05-14 - -### xxx -#### ✅ 今日完成 +# 工作日报 - 2025年5月 +## 2025年5月14日 +### ✅ 今日完成 - 完成支付接口单元测试 - 优化数据库查询性能(响应时间降低40%) -#### 🚧 进行中 +### 🚧 进行中 - 用户积分系统开发(完成前端部分) -#### ⚠️ 问题/障碍 +### ⚠️ 问题/障碍 - 第三方短信服务不稳定(已联系供应商) -#### 📅 明日计划 +### 📅 明日计划 - 继续开发积分系统后端 - 参加架构设计会议 \ No newline at end of file From d6625b52f4f2f1f1c5e6de57501a5498b365fc49 Mon Sep 17 00:00:00 2001 From: NingHuan <2139614357@qq.com> Date: Wed, 14 May 2025 21:16:03 +0800 Subject: [PATCH 05/50] =?UTF-8?q?[=E6=96=B0=E5=A2=9E]:=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E8=AF=84=E4=BC=B0=E6=A8=A1=E5=9D=97=E7=9A=84?= =?UTF-8?q?=E4=B8=80=E9=83=A8=E5=88=86=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...cationOrchestrationServiceApplication.java | 2 ++ .../controller/EvaluationController.java | 31 +++++++++++++++++++ .../enumeration/LogType.java | 7 +++++ .../mapper/EvaluationMapper.java | 13 ++++++++ .../pojo/ModelEvaluation.java | 24 ++++++++++++++ .../pojo/ModelInfo.java | 20 ++++++++++++ .../pojo/ModelLog.java | 24 ++++++++++++++ .../pojo/ModelLogVO.java | 15 +++++++++ .../pojo/ModelVersion.java | 28 +++++++++++++++++ .../service/EvaluationService.java | 7 +++++ .../service/Impl/EvaluationServiceImpl.java | 26 ++++++++++++++++ src/main/resources/application.properties | 9 +++++- .../resources/mapper/EvaluationMapper.xml | 14 +++++++++ 13 files changed, 219 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/EvaluationController.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/enumeration/LogType.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/EvaluationMapper.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelEvaluation.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelInfo.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelLog.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelLogVO.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersion.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/EvaluationService.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/EvaluationServiceImpl.java create mode 100644 src/main/resources/mapper/EvaluationMapper.xml diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplication.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplication.java index c592c40..47290d7 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplication.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplication.java @@ -1,8 +1,10 @@ package com.bipt.intelligentapplicationorchestrationservice; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +@MapperScan("com.bipt.intelligentapplicationorchestrationservice.mapper")//指定扫描Mapper接口的包 @SpringBootApplication public class IntelligentApplicationOrchestrationServiceApplication { diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/EvaluationController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/EvaluationController.java new file mode 100644 index 0000000..fae3608 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/EvaluationController.java @@ -0,0 +1,31 @@ +package com.bipt.intelligentapplicationorchestrationservice.controller; + +import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelLogVO; +import com.bipt.intelligentapplicationorchestrationservice.pojo.OptResult; +import com.bipt.intelligentapplicationorchestrationservice.service.EvaluationService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/evaluation") +@Slf4j +public class EvaluationController { + @Autowired + private EvaluationService evaluationService; + + /** + * 获取日志详情 + * @param id + * @return + */ + @GetMapping("/detail") + public OptResult detail(Long id){ +// log.info("id:{}", id); + ModelLogVO modelLogVO = evaluationService.detail(id); + return OptResult.success(modelLogVO); + } + +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/enumeration/LogType.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/enumeration/LogType.java new file mode 100644 index 0000000..485372b --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/enumeration/LogType.java @@ -0,0 +1,7 @@ +package com.bipt.intelligentapplicationorchestrationservice.enumeration; + +/** + * 日志类型 + */ +public enum LogType { +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/EvaluationMapper.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/EvaluationMapper.java new file mode 100644 index 0000000..b23ffe5 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/EvaluationMapper.java @@ -0,0 +1,13 @@ +package com.bipt.intelligentapplicationorchestrationservice.mapper; + +import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelLogVO; + +public interface EvaluationMapper { + /* + * 查询模型评估日志详情 + * @param id 模型评估日志id + * @return 模型评估日志详情 + */ + ModelLogVO selectLogDetail(Long id); + +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelEvaluation.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelEvaluation.java new file mode 100644 index 0000000..1429342 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelEvaluation.java @@ -0,0 +1,24 @@ +package com.bipt.intelligentapplicationorchestrationservice.pojo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; +/** + * @author nh + * @description:模型评估记录实体类 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ModelEvaluation implements Serializable { + private Long id; // 评估记录id + private Long modelId; // 关联模型id + private LocalDateTime evaluationTime; // 评估时间 + private String evaluationResult; // 评估结果 + private String operator; // 评估操作人员 +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelInfo.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelInfo.java new file mode 100644 index 0000000..268fdd7 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelInfo.java @@ -0,0 +1,20 @@ +package com.bipt.intelligentapplicationorchestrationservice.pojo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +/** + * @author nh + * @description:模型实体类 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ModelInfo implements Serializable { + private Long id; // 模型id + private String modelName; // 模型名称 +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelLog.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelLog.java new file mode 100644 index 0000000..b1b15ee --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelLog.java @@ -0,0 +1,24 @@ +package com.bipt.intelligentapplicationorchestrationservice.pojo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; +/** + * @author :nh + * @description:模型日志实体类 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ModelLog implements Serializable { + private Long id; // 日志id + private Long modelId; // 关联模型id + private Integer logType; // 日志类型(1,2,3...) + private String logPath; // 日志存储路径 + private LocalDateTime logTime; // 日志生成时间 +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelLogVO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelLogVO.java new file mode 100644 index 0000000..6eb6c04 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelLogVO.java @@ -0,0 +1,15 @@ +package com.bipt.intelligentapplicationorchestrationservice.pojo; + +import java.time.LocalDateTime; + +public class ModelLogVO { + private Long id; // 日志id + private Long modelId; // 关联模型id + private String modelName; // 模型名称 + private String version; // 模型版本 + private String modelConfig; // 模型配置 + private Integer logType; // 日志类型(1,2,3...) + private String logPath; // 日志存储路径 + private LocalDateTime logTime; // 日志生成时间 +} + diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersion.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersion.java new file mode 100644 index 0000000..6297b43 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersion.java @@ -0,0 +1,28 @@ +package com.bipt.intelligentapplicationorchestrationservice.pojo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; +/** + * @author :nh + * @description:模型版本信息实体类 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ModelVersion implements Serializable { + private Long id; // 版本信息表id + private Long modelId; // 关联模型id + private String version; // 模型版本 + private Integer datasetId; // 数据集id + private String modelConfig; // 模型配置信息 + private String modelPath; // 模型存储路径 + private Integer status; // 模型状态(1代表上线,0代表不上线) + private LocalDateTime createTime; // 创建时间 + +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/EvaluationService.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/EvaluationService.java new file mode 100644 index 0000000..5f327d5 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/EvaluationService.java @@ -0,0 +1,7 @@ +package com.bipt.intelligentapplicationorchestrationservice.service; + +import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelLogVO; + +public interface EvaluationService { + ModelLogVO detail(Long id); +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/EvaluationServiceImpl.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/EvaluationServiceImpl.java new file mode 100644 index 0000000..8b77c10 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/EvaluationServiceImpl.java @@ -0,0 +1,26 @@ +package com.bipt.intelligentapplicationorchestrationservice.service.Impl; + +import com.bipt.intelligentapplicationorchestrationservice.mapper.EvaluationMapper; +import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelLogVO; +import com.bipt.intelligentapplicationorchestrationservice.service.EvaluationService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +@Slf4j +public class EvaluationServiceImpl implements EvaluationService { + @Autowired + private EvaluationMapper evaluationMapper; + /** + * 获取日志详情 + * @param id 模型日志id + * @return 日志详情 + */ + @Override + public ModelLogVO detail(Long id) { +// log.info("id:{}", id); + ModelLogVO modelLogVO = evaluationMapper.selectLogDetail(id); + return modelLogVO; + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index c50d915..fdc5805 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -8,4 +8,11 @@ spring.datasource.password=root spring.datasource.driver-class-name=com.kingbase8.Driver spring.datasource.hikari.maximum-pool-size=10 spring.datasource.hikari.minimum-idle=5 -spring.datasource.hikari.connection-timeout=30000 \ No newline at end of file +spring.datasource.hikari.connection-timeout=30000 + +# SQL映射文件路径配置 +mybatis.mapper-locations=classpath:mapper/*.xml +# 配置实体类别名所在包 +mybatis.type-aliases-package=com.bipt.intelligentapplicationorchestrationservice.pojo +# 开启驼峰命名转换 +mybatis.configuration.map-underscore-to-camel-case=true \ No newline at end of file diff --git a/src/main/resources/mapper/EvaluationMapper.xml b/src/main/resources/mapper/EvaluationMapper.xml new file mode 100644 index 0000000..c6db155 --- /dev/null +++ b/src/main/resources/mapper/EvaluationMapper.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file From 272d1ea54db13fa5e1139c9afa5982c232ec2b43 Mon Sep 17 00:00:00 2001 From: NingHuan <2139614357@qq.com> Date: Wed, 14 May 2025 21:49:23 +0800 Subject: [PATCH 06/50] =?UTF-8?q?[=E6=8F=90=E4=BA=A4]:=E4=BB=8A=E6=97=A5?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=97=A5=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/WorkReport/2025-05-nh.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 doc/WorkReport/2025-05-nh.md diff --git a/doc/WorkReport/2025-05-nh.md b/doc/WorkReport/2025-05-nh.md new file mode 100644 index 0000000..a23b408 --- /dev/null +++ b/doc/WorkReport/2025-05-nh.md @@ -0,0 +1,16 @@ +# 工作日报 - 2025年5月 +## 2025年5月14日 +### ✅ 今日完成 +- 完成相关数据库表的创建 +- 模型评估部分实体类的定义 +- 新增了SpringBoot配置文件中的一些配置 + +### 🚧 进行中 +- 模型评估部分显示日志后端部分开发 + +### ⚠️ 问题/障碍 +- lombok注解出现问题,没法正常使用 + +### 📅 明日计划 +- 继续开发模型评估部分 +- 尽量解决lombok存在的问题 \ No newline at end of file From 84421e5ae50ae7eb937ff9c594ffd0466a876ccf Mon Sep 17 00:00:00 2001 From: syc <3778699244@qq.com> Date: Wed, 14 May 2025 21:51:38 +0800 Subject: [PATCH 07/50] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20doc/=E7=AE=97?= =?UTF-8?q?=E6=B3=95=E7=94=9F=E5=91=BD=E5=91=A8=E6=9C=9F=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E6=96=87=E6=A1=A3=5F=E5=AD=99=E4=B8=80=E5=9F=8E.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/WorkReport/2025-05-nh.md | 16 ++++++ ...法生命周期设计文档_孙一城.md | 55 ++++++------------- 2 files changed, 32 insertions(+), 39 deletions(-) create mode 100644 doc/WorkReport/2025-05-nh.md diff --git a/doc/WorkReport/2025-05-nh.md b/doc/WorkReport/2025-05-nh.md new file mode 100644 index 0000000..a23b408 --- /dev/null +++ b/doc/WorkReport/2025-05-nh.md @@ -0,0 +1,16 @@ +# 工作日报 - 2025年5月 +## 2025年5月14日 +### ✅ 今日完成 +- 完成相关数据库表的创建 +- 模型评估部分实体类的定义 +- 新增了SpringBoot配置文件中的一些配置 + +### 🚧 进行中 +- 模型评估部分显示日志后端部分开发 + +### ⚠️ 问题/障碍 +- lombok注解出现问题,没法正常使用 + +### 📅 明日计划 +- 继续开发模型评估部分 +- 尽量解决lombok存在的问题 \ No newline at end of file diff --git a/doc/算法生命周期设计文档_孙一城.md b/doc/算法生命周期设计文档_孙一城.md index 70dd6b9..2edebbf 100644 --- a/doc/算法生命周期设计文档_孙一城.md +++ b/doc/算法生命周期设计文档_孙一城.md @@ -1,39 +1,16 @@ -# 算法生命周期管理数据库设计文档 - -## 1. 数据表设计 - -### 1.1 algorithm_info(算法基础信息表) -| 字段名 | 类型 | 是否为空 | 默认值 | 说明 | -|--------|------|----------|--------|------| -| id | BIGINT | NOT NULL | AUTO_INCREMENT | 主键ID | -| algorithm_name | VARCHAR(100) | NOT NULL | | 算法名称(唯一) | -| algorithm_type | VARCHAR(50) | NOT NULL | | 算法分类 | -| description | TEXT | NULL | | 算法描述 | -| created_by | VARCHAR(50) | NOT NULL | | 创建人 | -| create_time | DATETIME | NOT NULL | CURRENT_TIMESTAMP | 创建时间 | -| update_time | DATETIME | NOT NULL | CURRENT_TIMESTAMP ON UPDATE | 更新时间 | -| status | TINYINT | NOT NULL | 1 | 状态(1启用 0禁用 -1删除) | - -### 1.2 algorithm_version(算法版本表) -| 字段名 | 类型 | 是否为空 | 默认值 | 说明 | -|--------|------|----------|--------|------| -| id | BIGINT | NOT NULL | AUTO_INCREMENT | 版本ID | -| algorithm_id | BIGINT | NOT NULL | | 关联算法ID | -| version | VARCHAR(50) | NOT NULL | | 语义版本号 | -| version_desc | TEXT | NULL | | 版本说明 | -| storage_path | VARCHAR(255) | NOT NULL | | 存储路径 | -| config_params | JSON | NULL | | 配置参数 | -| creator | VARCHAR(50) | NOT NULL | | 创建人 | -| create_time | DATETIME | NOT NULL | CURRENT_TIMESTAMP | 创建时间 | -| status | TINYINT | NOT NULL | 0 | 状态(1发布 0开发 -1废弃) | - -### 1.3 algorithm_dependency(算法依赖表) -| 字段名 | 类型 | 是否为空 | 默认值 | 说明 | -|--------|------|----------|--------|------| -| id | BIGINT | NOT NULL | AUTO_INCREMENT | 依赖ID | -| algorithm_id | BIGINT | NOT NULL | | 关联算法ID | -| version_id | BIGINT | NOT NULL | | 关联版本ID | -| dependency_type | VARCHAR(50) | NOT NULL | | 依赖类型 | -| dep_name | VARCHAR(100) | NOT NULL | | 依赖名称 | -| dep_version | VARCHAR(50) | NOT NULL | | 依赖版本 | -| create_time | DATETIME | NULL | CURRENT_TIMESTAMP | 创建时间 | +# 算法生命周期管理数据库设计文档 + +## 1. 数据表设计 + +### 1.1 algorithm_info(算法基础信息表) +| 字段名 | 类型 | 是否为空 | 默认值 | 说明 | +|--------|------|----------|--------|------| +| id | BIGINT | NOT NULL | AUTO_INCREMENT | 算法ID | +| algorithm_name | VARCHAR(100) | NOT NULL | | 算法名称(唯一) | +| algorithm_file | VARCHAR(255) | NOT NULL | | 算法文件路径 | +| algorithm_type | VARCHAR(50) | NOT NULL | | 算法分类 | +| description | TEXT | NULL | | 算法描述 | +| created_by | VARCHAR(50) | NOT NULL | | 创建人 | +| create_time | DATETIME | NOT NULL | CURRENT_TIMESTAMP | 创建时间 | +| update_time | DATETIME | NOT NULL | CURRENT_TIMESTAMP ON UPDATE | 更新时间 | +| file_size | BIGINT | NULL | | 文件大小(字节) | \ No newline at end of file From 606d7cf728cf101f648bcea366a489e01b050e02 Mon Sep 17 00:00:00 2001 From: dc <1736585778@qq.com> Date: Wed, 14 May 2025 21:52:06 +0800 Subject: [PATCH 08/50] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=87=B3=20doc/WorkReport?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/WorkReport/数据库文档-杜冲.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 doc/WorkReport/数据库文档-杜冲.md diff --git a/doc/WorkReport/数据库文档-杜冲.md b/doc/WorkReport/数据库文档-杜冲.md new file mode 100644 index 0000000..f34c069 --- /dev/null +++ b/doc/WorkReport/数据库文档-杜冲.md @@ -0,0 +1,9 @@ +‌**TableName: Gpu_Resource**‌ + +| ֶ | | Լ | ֶ | +|:-------------:|:-------------:|:-----------------:|:----------------------------------:| +| GPUId | BIGINT | | GPUIDȫΨһʶ | +| GPUModel | VARCHAR(64) | NOT NULL | GPUͺ | +| GPUMemorySize | INT | NOT NULL | GPUڴС | +| Ip | VARCHAR(15) | NOT NULL | GPUip | +| CreatedTime | DATETIME | NOT NULL | GPUʱ | From e3b2e24ba1cab0449722264b07037be7814e3da3 Mon Sep 17 00:00:00 2001 From: dc <1736585778@qq.com> Date: Wed, 14 May 2025 21:52:54 +0800 Subject: [PATCH 09/50] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=87=B3=20doc/WorkReport?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/WorkReport/2025-05-杜冲.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 doc/WorkReport/2025-05-杜冲.md diff --git a/doc/WorkReport/2025-05-杜冲.md b/doc/WorkReport/2025-05-杜冲.md new file mode 100644 index 0000000..5ed9a6d --- /dev/null +++ b/doc/WorkReport/2025-05-杜冲.md @@ -0,0 +1,15 @@ +# 工作日报 - 2025年5月 +## 2025年5月14日 +### ✅ 今日完成 +- 完成数据传输对象的编写 +- 完成容错处理和警告信息的编写 + +### 🚧 进行中 +- GPU资源增删改查功能(增加和更改已完成) + +### ⚠️ 问题/障碍 +- 暂无 + +### 📅 明日计划 +- 继续完成删除和查询功能 +- 完成API请求调度缓存层设计实现 \ No newline at end of file From e7099f3a8556a74e4d2bc99639865d2443a9015d Mon Sep 17 00:00:00 2001 From: syc <3778699244@qq.com> Date: Wed, 14 May 2025 22:12:02 +0800 Subject: [PATCH 10/50] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=87=B3=20doc/WorkReport?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/WorkReport/2025-05-孙一城.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 doc/WorkReport/2025-05-孙一城.md diff --git a/doc/WorkReport/2025-05-孙一城.md b/doc/WorkReport/2025-05-孙一城.md new file mode 100644 index 0000000..4c6141f --- /dev/null +++ b/doc/WorkReport/2025-05-孙一城.md @@ -0,0 +1,8 @@ +# 工作日报 - 2025年5月 +## 2025年5月14日 +### ✅ 今日完成 +- 完成建表 + + +### 📅 明日计划 +- 实现需求文档功能 \ No newline at end of file From be5ff6ff74e2992b73988f07729b4bae88a34a8a Mon Sep 17 00:00:00 2001 From: xiaohucoding <2307520758@qq.com> Date: Wed, 14 May 2025 23:07:09 +0800 Subject: [PATCH 11/50] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E6=9F=A5=E8=AF=A2=E5=8F=8A=E9=83=A8=E5=88=86=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/WorkReport/2025-05-14hky.md | 13 +++++ pom.xml | 7 +++ .../controller/DatasetController.java | 32 ++++++++++-- .../mapper/DatasetMapper.java | 16 +++++- .../pojo/DatasetPageQueryDTO.java | 18 +++++++ .../pojo/DatasetVO.java | 18 +++++++ .../pojo/PageResult.java | 19 +++++++ .../service/DatasetService.java | 12 ++++- .../service/Impl/DatasetServiceImpl.java | 51 +++++++++++++++++-- src/main/resources/mapper/DatasetMapper.xml | 31 +++++++++++ 10 files changed, 207 insertions(+), 10 deletions(-) create mode 100644 doc/WorkReport/2025-05-14hky.md create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetPageQueryDTO.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetVO.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/PageResult.java diff --git a/doc/WorkReport/2025-05-14hky.md b/doc/WorkReport/2025-05-14hky.md new file mode 100644 index 0000000..c46cf0f --- /dev/null +++ b/doc/WorkReport/2025-05-14hky.md @@ -0,0 +1,13 @@ +# 工作日报 - 2025年5月 +## 2025年5月14日 +### ✅ 今日完成 +完成分页查询 + +### 🚧 进行中 +删除操作 + +### ⚠️ 问题/障碍 +测试方法不知道怎么写 + +### 📅 明日计划 +写完删除代码,进行测试 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 99aface..27daee5 100644 --- a/pom.xml +++ b/pom.xml @@ -50,6 +50,13 @@ true + + + com.github.pagehelper + pagehelper-spring-boot-starter + 1.4.7 + + com.kingbase8 diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/DatasetController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/DatasetController.java index fa47e8c..7f64e72 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/DatasetController.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/DatasetController.java @@ -1,13 +1,14 @@ package com.bipt.intelligentapplicationorchestrationservice.controller; -import com.bipt.intelligentapplicationorchestrationservice.pojo.DatasetDTO; -import com.bipt.intelligentapplicationorchestrationservice.pojo.DatasetEntity; -import com.bipt.intelligentapplicationorchestrationservice.pojo.OptResult; +import com.bipt.intelligentapplicationorchestrationservice.pojo.*; import com.bipt.intelligentapplicationorchestrationservice.service.DatasetService; +import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequestMapping("/dataset") @Slf4j @@ -27,6 +28,14 @@ public class DatasetController { return OptResult.success(); } + @GetMapping("/page") + public OptResult page(DatasetPageQueryDTO dataSetPageQueryDTO) { + log.info("数据集分页查询:{}", dataSetPageQueryDTO); + PageResult pageResult = datasetService.pageQuery(dataSetPageQueryDTO); + return OptResult.success(pageResult); + } + + /** * 修改数据集 * @param datasetEntity @@ -39,5 +48,22 @@ public class DatasetController { return OptResult.success(); } + /** + * 批量删除数据集 + * @param datasetIds 数据集ID列表 + * @return 操作结果 + */ + @DeleteMapping + public OptResult deleteBatch(@RequestBody List datasetIds) { + log.info("批量删除数据集,ID列表:{}", datasetIds); + datasetService.deleteBatch(datasetIds); + return OptResult.success("批量删除成功"); + } + + + + + + } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/DatasetMapper.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/DatasetMapper.java index 4c55a0a..3e83f61 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/DatasetMapper.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/DatasetMapper.java @@ -1,13 +1,25 @@ package com.bipt.intelligentapplicationorchestrationservice.mapper; import com.bipt.intelligentapplicationorchestrationservice.pojo.DatasetEntity; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Update; +import com.bipt.intelligentapplicationorchestrationservice.pojo.DatasetPageQueryDTO; +import com.bipt.intelligentapplicationorchestrationservice.pojo.DatasetVO; +import com.github.pagehelper.Page; +import org.apache.ibatis.annotations.*; +import java.util.List; import java.util.Map; @Mapper public interface DatasetMapper { void updata(DatasetEntity datasetEntity); + + void insert(DatasetEntity datasetEntity); + + Page pageQuery(DatasetPageQueryDTO dataSetPageQueryDTO); + + @Select("select * from dataset where dataset_id=#{datasetId}") + DatasetEntity getById(Integer datasetId); + @Delete("delete from dataset where dataset_id = #{datasetId}") + void deleteBatch(List datasetIds); } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetPageQueryDTO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetPageQueryDTO.java new file mode 100644 index 0000000..b047610 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetPageQueryDTO.java @@ -0,0 +1,18 @@ +package com.bipt.intelligentapplicationorchestrationservice.pojo; + +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Map; + +/** + * @author hky + */ +@Data +public class DatasetPageQueryDTO implements Serializable{ + private int page; + private int pageSize; + private Integer datasetType; + private Integer datasetStatus; +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetVO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetVO.java new file mode 100644 index 0000000..4ebebc5 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetVO.java @@ -0,0 +1,18 @@ +package com.bipt.intelligentapplicationorchestrationservice.pojo; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Map; + +/** + * @author hky + */ +public class DatasetVO implements Serializable { + private String datasetName; + private Integer datasetType; + private Integer datasetStatus; + private String dsPath; + private Map args; + private LocalDateTime createTime; + private LocalDateTime updateTime; +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/PageResult.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/PageResult.java new file mode 100644 index 0000000..3b6c15b --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/PageResult.java @@ -0,0 +1,19 @@ +package com.bipt.intelligentapplicationorchestrationservice.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 分页 + * @param + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class PageResult { + private Long total; + private List rows; +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/DatasetService.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/DatasetService.java index 377d960..f3e844e 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/DatasetService.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/DatasetService.java @@ -2,10 +2,20 @@ package com.bipt.intelligentapplicationorchestrationservice.service; import com.bipt.intelligentapplicationorchestrationservice.pojo.DatasetDTO; import com.bipt.intelligentapplicationorchestrationservice.pojo.DatasetEntity; -import org.springframework.stereotype.Service; +import com.bipt.intelligentapplicationorchestrationservice.pojo.DatasetPageQueryDTO; +import com.bipt.intelligentapplicationorchestrationservice.pojo.PageResult; +import java.util.List; + +/** + * @author hky + */ public interface DatasetService { void save(DatasetDTO datasetDTO); void update(DatasetEntity datasetEntity); + + PageResult pageQuery(DatasetPageQueryDTO dataSetPageQueryDTO); + + void deleteBatch(List datasetIds); } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/DatasetServiceImpl.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/DatasetServiceImpl.java index 6b04606..3e97b91 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/DatasetServiceImpl.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/DatasetServiceImpl.java @@ -1,9 +1,10 @@ package com.bipt.intelligentapplicationorchestrationservice.service.Impl; import com.bipt.intelligentapplicationorchestrationservice.mapper.DatasetMapper; -import com.bipt.intelligentapplicationorchestrationservice.pojo.DatasetDTO; -import com.bipt.intelligentapplicationorchestrationservice.pojo.DatasetEntity; +import com.bipt.intelligentapplicationorchestrationservice.pojo.*; import com.bipt.intelligentapplicationorchestrationservice.service.DatasetService; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -11,6 +12,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.util.List; import java.util.Map; @Service @@ -36,11 +38,18 @@ public class DatasetServiceImpl implements DatasetService { //TODO 调用数据仓库保存到分布式文件系统 } + DatasetEntity datasetEntity = new DatasetEntity(); + BeanUtils.copyProperties(datasetEntity,datasetDTO); + datasetEntity.setDatasetStatus(1); + datasetEntity.setCreateTime(LocalDateTime.now()); + datasetEntity.setUpdateTime(LocalDateTime.now()); + datasetMapper.insert(datasetEntity); } /** * 修改数据集 + * * @param datasetEntity */ @Override @@ -50,12 +59,46 @@ public class DatasetServiceImpl implements DatasetService { //TODO 覆盖保存到分布式文件系统中 }else { - //TODO 覆盖数据文件 + + //TODO datasetEntity.setUpdateTime(LocalDateTime.now()); - //maybe需要判断 datasetMapper.updata(datasetEntity); } } + + /** + * 分页查询 + * @param dataSetPageQueryDTO + * @return + */ + @Override + public PageResult pageQuery(DatasetPageQueryDTO dataSetPageQueryDTO) { + int pageNum = dataSetPageQueryDTO.getPage(); + int pageSize = dataSetPageQueryDTO.getPageSize(); + PageHelper.startPage(pageNum, pageSize); + Page page = datasetMapper.pageQuery(dataSetPageQueryDTO); + return new PageResult(page.getTotal(), page.getResult()); + } + + /** + * 批量删除 + * @param datasetIds + */ + @Override + @Transactional + public void deleteBatch(List datasetIds) { + for (Integer datasetId : datasetIds) { + DatasetEntity datasetEntity = datasetMapper.getById(datasetId); + if (datasetEntity == null) { + throw new IllegalArgumentException("数据集不存在,ID:" + datasetId); + } + + } + //TODO 在分布式文件系统中删除 + + datasetMapper.deleteBatch(datasetIds); + } + } diff --git a/src/main/resources/mapper/DatasetMapper.xml b/src/main/resources/mapper/DatasetMapper.xml index 4d89113..41d1f85 100644 --- a/src/main/resources/mapper/DatasetMapper.xml +++ b/src/main/resources/mapper/DatasetMapper.xml @@ -1,6 +1,11 @@ + + INSERT INTO dataset + (dataset_name,dataset_type,dataset_status,ds_path,args,create_time,update_time) + values (#{datasetName}, #{datasetType}, #{datasetStatus}, #{dsPath}, #{args},#{createTime},#{updateTime}) + update dataset @@ -29,4 +34,30 @@ where dataset_id = #{datasetId} + \ No newline at end of file From ec38f39a0eb9590e676bb1f0f38931c6850d2cf3 Mon Sep 17 00:00:00 2001 From: Lpz Date: Thu, 15 May 2025 08:28:46 +0800 Subject: [PATCH 12/50] =?UTF-8?q?=E8=A7=A3=E5=86=B3lombok=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E6=8A=A5=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 27daee5..aecd8d1 100644 --- a/pom.xml +++ b/pom.xml @@ -47,6 +47,7 @@ org.projectlombok lombok + 1.18.38 true From 220fdb11217d42701cac07a75255acd1e5d1ec13 Mon Sep 17 00:00:00 2001 From: Lpz Date: Thu, 15 May 2025 08:33:13 +0800 Subject: [PATCH 13/50] =?UTF-8?q?=E8=A7=A3=E5=86=B3lombok=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E6=8A=A5=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index aecd8d1..9a9afc6 100644 --- a/pom.xml +++ b/pom.xml @@ -58,7 +58,7 @@ 1.4.7 - + KingbaseES V8/V9 数据库 JDBC 驱动 com.kingbase8 kingbase8 @@ -92,6 +92,7 @@ org.projectlombok lombok + 1.18.38 From b1772bea6fc87f30a9fbcf7c77b5bb9b3f77373b Mon Sep 17 00:00:00 2001 From: NingHuan <2139614357@qq.com> Date: Thu, 15 May 2025 20:34:18 +0800 Subject: [PATCH 14/50] =?UTF-8?q?[=E6=8F=90=E4=BA=A4]:=E4=BB=8A=E6=97=A5?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=97=A5=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/WorkReport/2025-05-nh.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/doc/WorkReport/2025-05-nh.md b/doc/WorkReport/2025-05-nh.md index a23b408..71eff93 100644 --- a/doc/WorkReport/2025-05-nh.md +++ b/doc/WorkReport/2025-05-nh.md @@ -13,4 +13,19 @@ ### 📅 明日计划 - 继续开发模型评估部分 -- 尽量解决lombok存在的问题 \ No newline at end of file +- 尽量解决lombok存在的问题 + +## 2025年5月15日 + +### ✅ 今日完成 + +- 基本完成模型评估部分的功能开发 +- 加入SpringDoc OpenAPI相关依赖和配置文件(自动生成 REST API 文档和 Swagger UI) + +### 🚧 进行中 + +- 模型评估部分优化 + +### 📅 明日计划 + +- 模型评估部分优化 \ No newline at end of file From d14afaf3ca5b055e72b195e0e4b385b7fcdc71fa Mon Sep 17 00:00:00 2001 From: NingHuan <2139614357@qq.com> Date: Thu, 15 May 2025 20:50:55 +0800 Subject: [PATCH 15/50] =?UTF-8?q?[=E6=96=B0=E5=A2=9E]:=E5=9F=BA=E6=9C=AC?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=A8=A1=E5=9E=8B=E8=AF=84=E4=BC=B0=E9=83=A8?= =?UTF-8?q?=E5=88=86=E7=9A=84=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 11 ++++- .../config/WebMvcConfiguration.java | 47 +++++++++++++++++++ .../controller/EvaluationController.java | 18 ++++++- .../mapper/EvaluationMapper.java | 6 +++ .../pojo/ModelLogVO.java | 12 ++++- .../service/EvaluationService.java | 2 + .../service/Impl/EvaluationServiceImpl.java | 12 ++++- .../resources/mapper/EvaluationMapper.xml | 9 ++++ 8 files changed, 113 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/WebMvcConfiguration.java diff --git a/pom.xml b/pom.xml index 9a9afc6..6a7f800 100644 --- a/pom.xml +++ b/pom.xml @@ -58,12 +58,21 @@ 1.4.7 - KingbaseES V8/V9 数据库 JDBC 驱动 + com.kingbase8 kingbase8 9.0.0 + + + + + org.springdoc + springdoc-openapi-starter-webmvc-ui + 2.2.0 + + org.springframework.boot spring-boot-starter-test diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/WebMvcConfiguration.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/WebMvcConfiguration.java new file mode 100644 index 0000000..8efb176 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/WebMvcConfiguration.java @@ -0,0 +1,47 @@ +package com.bipt.intelligentapplicationorchestrationservice.config; + +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.servers.Server; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; + +import java.util.ArrayList; +import java.util.List; + +/** + * 配置类,注册web层相关组件 + */ +@Configuration +@Slf4j +public class WebMvcConfiguration{ + + /** + * 配置OpenAPI信息 + */ + @Bean + public OpenAPI customOpenAPI() { + // 设置服务器信息(可选) + List servers = new ArrayList<>(); + servers.add(new Server().url("/").description("本地服务器")); + + return new OpenAPI() + .info(new Info() + .title("智能应用服务管理") + .version("2.0") + .description("智能应用服务管理接口文档")) + .servers(servers); + } + +// /** +// * 设置静态资源映射(Springdoc不需要特殊配置,保留可能的其他资源映射) +// */ +// @Override +// protected void addResourceHandlers(ResourceHandlerRegistry registry) { +// // 保留其他静态资源映射(如果有) +// // registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); +// } +} \ No newline at end of file diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/EvaluationController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/EvaluationController.java index fae3608..95bd64a 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/EvaluationController.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/EvaluationController.java @@ -3,12 +3,16 @@ package com.bipt.intelligentapplicationorchestrationservice.controller; import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelLogVO; import com.bipt.intelligentapplicationorchestrationservice.pojo.OptResult; import com.bipt.intelligentapplicationorchestrationservice.service.EvaluationService; +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.GetMapping; +import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +@Tag(name = "模型评估相关接口") @RestController @RequestMapping("/evaluation") @Slf4j @@ -21,11 +25,23 @@ public class EvaluationController { * @param id * @return */ + @Operation(summary = "模型日志信息显示") @GetMapping("/detail") public OptResult detail(Long id){ -// log.info("id:{}", id); + log.info("模型日志信息显示id:{}", id); ModelLogVO modelLogVO = evaluationService.detail(id); return OptResult.success(modelLogVO); } + /** + * 模型评估状态,评估通过则上线(1.上线,0.下线) + * @return + */ + @Operation(summary = "模型评估接口") + @PutMapping("/evaluate") + public OptResult evaluate(Long id, Integer status){ + log.info("模型上线状态修改:id:{}, status:{}", id, status); + evaluationService.startOrStop(id, status); + return OptResult.success(); + } } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/EvaluationMapper.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/EvaluationMapper.java index b23ffe5..35c6778 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/EvaluationMapper.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/EvaluationMapper.java @@ -10,4 +10,10 @@ public interface EvaluationMapper { */ ModelLogVO selectLogDetail(Long id); + /* + * 更新模型评估日志状态(评估通过则上线) + * @param id 模型评估日志id + * @param status 模型评估日志状态 + */ + void update(Long id, Integer status); } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelLogVO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelLogVO.java index 6eb6c04..a708e57 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelLogVO.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelLogVO.java @@ -1,7 +1,17 @@ package com.bipt.intelligentapplicationorchestrationservice.pojo; -import java.time.LocalDateTime; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import java.time.LocalDateTime; +/** + * @author nh + * @description:模型日志视图对象 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor public class ModelLogVO { private Long id; // 日志id private Long modelId; // 关联模型id diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/EvaluationService.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/EvaluationService.java index 5f327d5..38ce226 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/EvaluationService.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/EvaluationService.java @@ -4,4 +4,6 @@ import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelLogVO; public interface EvaluationService { ModelLogVO detail(Long id); + + void startOrStop(Long id, Integer status); } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/EvaluationServiceImpl.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/EvaluationServiceImpl.java index 8b77c10..b68ad7b 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/EvaluationServiceImpl.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/EvaluationServiceImpl.java @@ -19,8 +19,18 @@ public class EvaluationServiceImpl implements EvaluationService { */ @Override public ModelLogVO detail(Long id) { -// log.info("id:{}", id); + log.info("id:{}", id); ModelLogVO modelLogVO = evaluationMapper.selectLogDetail(id); return modelLogVO; } + + /** + * 评估模型决定是否上线 + * @param id 模型id + * @param status 模型评估状态,评估通过则上线(1.上线,0.下线) + */ + @Override + public void startOrStop(Long id, Integer status) { + evaluationMapper.update(id, status); + } } diff --git a/src/main/resources/mapper/EvaluationMapper.xml b/src/main/resources/mapper/EvaluationMapper.xml index c6db155..a3526b5 100644 --- a/src/main/resources/mapper/EvaluationMapper.xml +++ b/src/main/resources/mapper/EvaluationMapper.xml @@ -1,6 +1,7 @@ + + + + update model_version set + + status=#{status} + + where model_id=#{id} + \ No newline at end of file From 64abd2d824839780dc97e5ad1bd877be813a980a Mon Sep 17 00:00:00 2001 From: dc <1736585778@qq.com> Date: Thu, 15 May 2025 22:02:29 +0800 Subject: [PATCH 16/50] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=87=B3=20doc/WorkReport?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/WorkReport/2025-05-杜冲.md | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/doc/WorkReport/2025-05-杜冲.md b/doc/WorkReport/2025-05-杜冲.md index 5ed9a6d..bfb2e7b 100644 --- a/doc/WorkReport/2025-05-杜冲.md +++ b/doc/WorkReport/2025-05-杜冲.md @@ -1,15 +1,28 @@ # 工作日报 - 2025年5月 ## 2025年5月14日 ### ✅ 今日完成 -- 完成数据传输对象的编写 -- 完成容错处理和警告信息的编写 - -### 🚧 进行中 -- GPU资源增删改查功能(增加和更改已完成) +- 完成删除和查询功能 +- 完成API请求调度缓存层设计(未实现) +_ +_### 🚧 进行中 +- API请求调度缓存层实现 ### ⚠️ 问题/障碍 -- 暂无 +- KingBase8数据库方言配置出错 ### 📅 明日计划 -- 继续完成删除和查询功能 -- 完成API请求调度缓存层设计实现 \ No newline at end of file +- +- 完成API请求调度缓存层 + +## 2025年5月15日 +### ✅ 今日完成 +- 完成删除和查询功能 + +_### 🚧 进行中 +- 设计触发服务API请求调度缓存更新类 + +### ⚠️ 问题/障碍 +- KingBase8数据库方言配置出错 + +### 📅 明日计划 +- 完成触发API请求调度缓存更新类 \ No newline at end of file From e096b52c7b43470810c8f29031348bb8163a67f1 Mon Sep 17 00:00:00 2001 From: xiaohucoding <2307520758@qq.com> Date: Thu, 15 May 2025 23:02:53 +0800 Subject: [PATCH 17/50] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E7=94=9F?= =?UTF-8?q?=E5=91=BD=E5=91=A8=E6=9C=9F=E7=89=88=E6=9C=AC2.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/WorkReport/2025-05-14hky.md | 15 +++++- pom.xml | 8 +++- ...cationOrchestrationServiceApplication.java | 5 ++ .../config/WebMvcConfiguration.java | 47 +++++++++++++++++++ .../constant/MessageConstant.java | 6 +++ .../controller/DatasetController.java | 24 +++++----- .../handler/GlobalExceptionHandler.java | 34 ++++++++++++++ .../mapper/DatasetMapper.java | 7 ++- .../pojo/DatasetDTO.java | 14 ++++-- .../pojo/DatasetEntity.java | 9 ++-- .../pojo/DatasetPageQueryDTO.java | 16 ++++++- .../pojo/DatasetVO.java | 12 ++++- .../pojo/PageResult.java | 11 +++-- .../service/DatasetService.java | 5 +- .../service/Impl/DatasetServiceImpl.java | 35 ++++++++------ src/main/resources/mapper/DatasetMapper.xml | 16 ++++--- 16 files changed, 207 insertions(+), 57 deletions(-) create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/WebMvcConfiguration.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/MessageConstant.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/handler/GlobalExceptionHandler.java diff --git a/doc/WorkReport/2025-05-14hky.md b/doc/WorkReport/2025-05-14hky.md index c46cf0f..ceaeb07 100644 --- a/doc/WorkReport/2025-05-14hky.md +++ b/doc/WorkReport/2025-05-14hky.md @@ -10,4 +10,17 @@ 测试方法不知道怎么写 ### 📅 明日计划 -写完删除代码,进行测试 \ No newline at end of file +写完删除代码,进行测试 + +## 2025年5月15日 +### ✅ 今日完成 +完成删除数据集增加数据集,部分测试 + +### 🚧 进行中 +测试(或添加具体异常处理) + +### ⚠️ 问题/障碍 +暂无 + +### 📅 明日计划 +测试完毕,开下一个模块 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 9a9afc6..7dfc8d1 100644 --- a/pom.xml +++ b/pom.xml @@ -57,8 +57,14 @@ pagehelper-spring-boot-starter 1.4.7 + + + org.springdoc + springdoc-openapi-starter-webmvc-ui + 2.3.0 + - KingbaseES V8/V9 数据库 JDBC 驱动 + com.kingbase8 kingbase8 diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplication.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplication.java index 47290d7..1e18dc6 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplication.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplication.java @@ -1,15 +1,20 @@ package com.bipt.intelligentapplicationorchestrationservice; +import lombok.extern.slf4j.Slf4j; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.transaction.annotation.EnableTransactionManagement; @MapperScan("com.bipt.intelligentapplicationorchestrationservice.mapper")//指定扫描Mapper接口的包 @SpringBootApplication +@EnableTransactionManagement +@Slf4j public class IntelligentApplicationOrchestrationServiceApplication { public static void main(String[] args) { SpringApplication.run(IntelligentApplicationOrchestrationServiceApplication.class, args); + log.info("server started"); } } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/WebMvcConfiguration.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/WebMvcConfiguration.java new file mode 100644 index 0000000..8efb176 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/WebMvcConfiguration.java @@ -0,0 +1,47 @@ +package com.bipt.intelligentapplicationorchestrationservice.config; + +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.servers.Server; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; + +import java.util.ArrayList; +import java.util.List; + +/** + * 配置类,注册web层相关组件 + */ +@Configuration +@Slf4j +public class WebMvcConfiguration{ + + /** + * 配置OpenAPI信息 + */ + @Bean + public OpenAPI customOpenAPI() { + // 设置服务器信息(可选) + List servers = new ArrayList<>(); + servers.add(new Server().url("/").description("本地服务器")); + + return new OpenAPI() + .info(new Info() + .title("智能应用服务管理") + .version("2.0") + .description("智能应用服务管理接口文档")) + .servers(servers); + } + +// /** +// * 设置静态资源映射(Springdoc不需要特殊配置,保留可能的其他资源映射) +// */ +// @Override +// protected void addResourceHandlers(ResourceHandlerRegistry registry) { +// // 保留其他静态资源映射(如果有) +// // registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); +// } +} \ No newline at end of file diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/MessageConstant.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/MessageConstant.java new file mode 100644 index 0000000..0985939 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/MessageConstant.java @@ -0,0 +1,6 @@ +package com.bipt.intelligentapplicationorchestrationservice.constant; + +public class MessageConstant { + public static final String UNKNOWN_ERROR = "未知错误"; + public static final String ALREADY_EXISTS = "数据集已存在"; +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/DatasetController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/DatasetController.java index 7f64e72..be81792 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/DatasetController.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/DatasetController.java @@ -2,7 +2,6 @@ package com.bipt.intelligentapplicationorchestrationservice.controller; import com.bipt.intelligentapplicationorchestrationservice.pojo.*; import com.bipt.intelligentapplicationorchestrationservice.service.DatasetService; -import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -28,6 +27,11 @@ public class DatasetController { return OptResult.success(); } + /** + * 分页查询 + * @param dataSetPageQueryDTO + * @return + */ @GetMapping("/page") public OptResult page(DatasetPageQueryDTO dataSetPageQueryDTO) { log.info("数据集分页查询:{}", dataSetPageQueryDTO); @@ -38,32 +42,28 @@ public class DatasetController { /** * 修改数据集 - * @param datasetEntity + * @param datasetDTO * @return */ @PutMapping - public OptResult update(@RequestBody DatasetEntity datasetEntity){ - log.info("修改数据集",datasetEntity); - datasetService.update(datasetEntity); + public OptResult update(@RequestBody DatasetDTO datasetDTO){ + log.info("修改数据集",datasetDTO); + datasetService.update(datasetDTO); return OptResult.success(); } + + /** * 批量删除数据集 * @param datasetIds 数据集ID列表 * @return 操作结果 */ @DeleteMapping - public OptResult deleteBatch(@RequestBody List datasetIds) { + public OptResult deleteBatch(@RequestBody List datasetIds) { log.info("批量删除数据集,ID列表:{}", datasetIds); datasetService.deleteBatch(datasetIds); return OptResult.success("批量删除成功"); } - - - - - - } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/handler/GlobalExceptionHandler.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..910eaf4 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/handler/GlobalExceptionHandler.java @@ -0,0 +1,34 @@ +package com.bipt.intelligentapplicationorchestrationservice.handler; + +import com.bipt.intelligentapplicationorchestrationservice.constant.MessageConstant; +import com.bipt.intelligentapplicationorchestrationservice.pojo.OptResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +import java.sql.SQLIntegrityConstraintViolationException; + +/** + * 全局异常处理器,处理项目中抛出的业务异常 + */ +@RestControllerAdvice +@Slf4j +public class GlobalExceptionHandler { + /* + * 捕获SQL异常 + * */ + @ExceptionHandler + public OptResult exceptionHandler(SQLIntegrityConstraintViolationException ex){ + String message = ex.getMessage(); + if(message.contains("Duplicate entry")) { + String[] split = message.split(" "); + String username = split[2]; + String msg = username + MessageConstant.ALREADY_EXISTS; + return OptResult.error(msg); + }else { + return OptResult.error(MessageConstant.UNKNOWN_ERROR); + + } + } + +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/DatasetMapper.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/DatasetMapper.java index 3e83f61..d1869f2 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/DatasetMapper.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/DatasetMapper.java @@ -7,7 +7,6 @@ import com.github.pagehelper.Page; import org.apache.ibatis.annotations.*; import java.util.List; -import java.util.Map; @Mapper public interface DatasetMapper { @@ -19,7 +18,7 @@ public interface DatasetMapper { Page pageQuery(DatasetPageQueryDTO dataSetPageQueryDTO); @Select("select * from dataset where dataset_id=#{datasetId}") - DatasetEntity getById(Integer datasetId); - @Delete("delete from dataset where dataset_id = #{datasetId}") - void deleteBatch(List datasetIds); + DatasetEntity getById(Long datasetId); + + void deleteBatch(@Param("datasetIds") List datasetIds); } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetDTO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetDTO.java index ee86df6..fe7a3a9 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetDTO.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetDTO.java @@ -1,6 +1,9 @@ package com.bipt.intelligentapplicationorchestrationservice.pojo; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import java.io.Serializable; import java.util.Map; @@ -9,9 +12,14 @@ import java.util.Map; * @author hky */ @Data +@Builder +@NoArgsConstructor +@AllArgsConstructor public class DatasetDTO implements Serializable { - private Integer datasetId; + private Long datasetId; private String datasetName; - private Integer datasetType; - private Map args; + private int datasetType; + private String dsPath; +// private Map args; + private String args; } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetEntity.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetEntity.java index 7409971..6b065b9 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetEntity.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetEntity.java @@ -17,12 +17,13 @@ import java.util.Map; @NoArgsConstructor @AllArgsConstructor public class DatasetEntity implements Serializable { - private Integer datasetId; + private Long datasetId; private String datasetName; - private Integer datasetType; - private Integer datasetStatus; + private int datasetType; + private int datasetStatus; private String dsPath; - private Map args; +// private Map args; + private String args; private LocalDateTime createTime; private LocalDateTime updateTime; } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetPageQueryDTO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetPageQueryDTO.java index b047610..8971274 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetPageQueryDTO.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetPageQueryDTO.java @@ -1,6 +1,9 @@ package com.bipt.intelligentapplicationorchestrationservice.pojo; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import java.io.Serializable; import java.time.LocalDateTime; @@ -10,9 +13,18 @@ import java.util.Map; * @author hky */ @Data +@Builder +@NoArgsConstructor +@AllArgsConstructor public class DatasetPageQueryDTO implements Serializable{ private int page; private int pageSize; - private Integer datasetType; - private Integer datasetStatus; + private String datasetName; + private int datasetType; + private int datasetStatus; + private String dsPath; + private String args; + private LocalDateTime createTime; + private LocalDateTime updateTime; + } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetVO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetVO.java index 4ebebc5..17b9194 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetVO.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/DatasetVO.java @@ -1,5 +1,10 @@ package com.bipt.intelligentapplicationorchestrationservice.pojo; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + import java.io.Serializable; import java.time.LocalDateTime; import java.util.Map; @@ -7,12 +12,17 @@ import java.util.Map; /** * @author hky */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor public class DatasetVO implements Serializable { private String datasetName; private Integer datasetType; private Integer datasetStatus; private String dsPath; - private Map args; +// private Map args; + private String args; private LocalDateTime createTime; private LocalDateTime updateTime; } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/PageResult.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/PageResult.java index 3b6c15b..a979d9a 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/PageResult.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/PageResult.java @@ -4,16 +4,17 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.io.Serializable; import java.util.List; /** * 分页 - * @param */ @Data -@NoArgsConstructor @AllArgsConstructor -public class PageResult { - private Long total; - private List rows; +@NoArgsConstructor +public class PageResult implements Serializable { + private long total; + private List records; + } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/DatasetService.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/DatasetService.java index f3e844e..8e99918 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/DatasetService.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/DatasetService.java @@ -1,7 +1,6 @@ package com.bipt.intelligentapplicationorchestrationservice.service; import com.bipt.intelligentapplicationorchestrationservice.pojo.DatasetDTO; -import com.bipt.intelligentapplicationorchestrationservice.pojo.DatasetEntity; import com.bipt.intelligentapplicationorchestrationservice.pojo.DatasetPageQueryDTO; import com.bipt.intelligentapplicationorchestrationservice.pojo.PageResult; @@ -13,9 +12,9 @@ import java.util.List; public interface DatasetService { void save(DatasetDTO datasetDTO); - void update(DatasetEntity datasetEntity); + void update(DatasetDTO datasetDTO); PageResult pageQuery(DatasetPageQueryDTO dataSetPageQueryDTO); - void deleteBatch(List datasetIds); + void deleteBatch(List datasetIds); } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/DatasetServiceImpl.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/DatasetServiceImpl.java index 3e97b91..dafc65e 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/DatasetServiceImpl.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/DatasetServiceImpl.java @@ -12,8 +12,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.util.Collections; import java.util.List; -import java.util.Map; @Service @Slf4j @@ -26,20 +26,22 @@ public class DatasetServiceImpl implements DatasetService { * @param datasetDTO */ @Override + @Transactional public void save(DatasetDTO datasetDTO) { //判断数据集类型,如果是本地上传则保存,若用调用数据仓库进入下一步 if (datasetDTO.getDatasetType()==0){ //TODO 保存到分布式文件系统 }else { - Map args = datasetDTO.getArgs(); - Integer datasetType = datasetDTO.getDatasetType(); +// Map args = datasetDTO.getArgs(); + String args = datasetDTO.getArgs(); + int datasetType = datasetDTO.getDatasetType(); //TODO 根据筛选条件调用数据仓库中的数据 //TODO 调用数据仓库保存到分布式文件系统 } DatasetEntity datasetEntity = new DatasetEntity(); - BeanUtils.copyProperties(datasetEntity,datasetDTO); + BeanUtils.copyProperties(datasetDTO,datasetEntity); datasetEntity.setDatasetStatus(1); datasetEntity.setCreateTime(LocalDateTime.now()); datasetEntity.setUpdateTime(LocalDateTime.now()); @@ -50,12 +52,14 @@ public class DatasetServiceImpl implements DatasetService { /** * 修改数据集 * - * @param datasetEntity + * @param datasetDTO */ @Override @Transactional - public void update(DatasetEntity datasetEntity) { - if (datasetEntity.getDatasetType()==0){ + public void update(DatasetDTO datasetDTO) { + /*DatasetEntity datasetEntity = new DatasetEntity(); + BeanUtils.copyProperties(datasetDTO,datasetEntity);*/ + if (datasetDTO.getDatasetType()==0){ //TODO 覆盖保存到分布式文件系统中 }else { @@ -63,9 +67,12 @@ public class DatasetServiceImpl implements DatasetService { //TODO - datasetEntity.setUpdateTime(LocalDateTime.now()); - datasetMapper.updata(datasetEntity); + } + DatasetEntity datasetEntity = new DatasetEntity(); + BeanUtils.copyProperties(datasetDTO,datasetEntity); + datasetEntity.setUpdateTime(LocalDateTime.now()); + datasetMapper.updata(datasetEntity); } /** @@ -75,9 +82,7 @@ public class DatasetServiceImpl implements DatasetService { */ @Override public PageResult pageQuery(DatasetPageQueryDTO dataSetPageQueryDTO) { - int pageNum = dataSetPageQueryDTO.getPage(); - int pageSize = dataSetPageQueryDTO.getPageSize(); - PageHelper.startPage(pageNum, pageSize); + PageHelper.startPage(dataSetPageQueryDTO.getPage(), dataSetPageQueryDTO.getPageSize()); Page page = datasetMapper.pageQuery(dataSetPageQueryDTO); return new PageResult(page.getTotal(), page.getResult()); } @@ -88,16 +93,16 @@ public class DatasetServiceImpl implements DatasetService { */ @Override @Transactional - public void deleteBatch(List datasetIds) { - for (Integer datasetId : datasetIds) { + public void deleteBatch(List datasetIds) { + for (Long datasetId : datasetIds) { DatasetEntity datasetEntity = datasetMapper.getById(datasetId); if (datasetEntity == null) { throw new IllegalArgumentException("数据集不存在,ID:" + datasetId); } + } //TODO 在分布式文件系统中删除 - datasetMapper.deleteBatch(datasetIds); } diff --git a/src/main/resources/mapper/DatasetMapper.xml b/src/main/resources/mapper/DatasetMapper.xml index 41d1f85..9a0e67f 100644 --- a/src/main/resources/mapper/DatasetMapper.xml +++ b/src/main/resources/mapper/DatasetMapper.xml @@ -25,15 +25,19 @@ args=#{args}, - - create_time=#{createTime}, - - + update_time=#{updateTime} where dataset_id = #{datasetId} + + DELETE FROM dataset + WHERE dataset_id IN + + #{id} + + + select m1.*, + m2.model_name, + m3.model_config, m3.version + from model_log m1, + model_info m2, + model_version m3 + where m1.model_id=m2.id and m3.model_id=m2.id and m1.model_id = #{id} + + + + + update model_version set + + status=#{status} + + where model_id=#{id} + + \ No newline at end of file From 5654a5a05cf137bdd5f3a3d5f991f5d621cd1867 Mon Sep 17 00:00:00 2001 From: dc <1736585778@qq.com> Date: Tue, 20 May 2025 23:21:48 +0800 Subject: [PATCH 29/50] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=87=B3=20doc/WorkReport?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/WorkReport/2025-05-杜冲.md | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/doc/WorkReport/2025-05-杜冲.md b/doc/WorkReport/2025-05-杜冲.md index bfb2e7b..093ceae 100644 --- a/doc/WorkReport/2025-05-杜冲.md +++ b/doc/WorkReport/2025-05-杜冲.md @@ -25,4 +25,30 @@ _### 🚧 进行中 - KingBase8数据库方言配置出错 ### 📅 明日计划 -- 完成触发API请求调度缓存更新类 \ No newline at end of file +- 完成触发API请求调度缓存更新类 +- ## 2025年5月19日 +### ✅ 今日完成 +- 完成缓存层设计与配置 + +_### 🚧 进行中 +- 实现缓存更新逻辑 + +### ⚠️ 问题/障碍 +- 暂无 + +### 📅 明日计划 +- 完成缓存更新逻辑 +- 设计模型部署类 +- ## 2025年5月20日 +### ✅ 今日完成 +- 完成缓存更新逻辑 + +_### 🚧 进行中 +- 设计模型部署类 + +### ⚠️ 问题/障碍 +- 暂无 + +### 📅 明日计划 +- 完成模型部署类的设计 +- 完成数据结构和基本配置 From b7913f7a09fb66f9450075a3d76f7d6d96503a5e Mon Sep 17 00:00:00 2001 From: NingHuan <2139614357@qq.com> Date: Wed, 21 May 2025 09:49:44 +0800 Subject: [PATCH 30/50] =?UTF-8?q?Revert=20"[=E6=92=A4=E9=94=80=E6=8F=90?= =?UTF-8?q?=E4=BA=A4]:=E6=92=A4=E9=94=80=E6=8F=90=E4=BA=A4=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=97=A5=E6=8A=A5"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 370a2d3ce0410fe91c7c1dcacb86881050948754. --- doc/WorkReport/2025-05-nh.md | 35 +++++++++---------- .../controller/ModelController.java | 2 -- .../mapper/ModelMapper.java | 2 -- .../pojo/ModelDTO.java | 2 -- .../service/Impl/ModelServiceImpl.java | 2 -- .../service/ModelService.java | 4 --- src/main/resources/mapper/ModelMapper.xml | 23 ------------ 7 files changed, 17 insertions(+), 53 deletions(-) delete mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java delete mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java delete mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java delete mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java delete mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java delete mode 100644 src/main/resources/mapper/ModelMapper.xml diff --git a/doc/WorkReport/2025-05-nh.md b/doc/WorkReport/2025-05-nh.md index 228d654..d3faa27 100644 --- a/doc/WorkReport/2025-05-nh.md +++ b/doc/WorkReport/2025-05-nh.md @@ -15,7 +15,7 @@ - 继续开发模型评估部分 - 尽量解决lombok存在的问题 -## 2025年5月15日 +## 2025年5月14日 ### ✅ 今日完成 @@ -30,6 +30,21 @@ * 继续优化模型评估部分 +## 2025年5月15日 + +### ✅ 今日完成 + +- 基本完成模型评估部分的功能开发 +- 加入SpringDoc OpenAPI相关依赖和配置文件(自动生成 REST API 文档和 Swagger UI) + +### 🚧 进行中 + +- 模型评估部分优化 + +### 📅 明日计划 + +- 模型评估部分优化 + ## 2025年5月19日 ### ✅ 今日完成 @@ -43,20 +58,4 @@ ### 📅 明日计划 -- 基本完成创建模型部分后端开发 - -## 2025年5月20日 - -### ✅ 今日完成 - -- 数据库表字段新增 -- 实体类定义与修改 -- 基本完成创建模型部分后端开发 - -### 🚧 进行中 - -- 创建模型部分后端优化 - -### 📅 明日计划 - -- 模型信息管理部分后端开发 \ No newline at end of file +- 基本完成创建模型部分后端开发 \ No newline at end of file diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java deleted file mode 100644 index d144fd5..0000000 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java +++ /dev/null @@ -1,2 +0,0 @@ -package com.bipt.intelligentapplicationorchestrationservice.controller;public class ModelController { -} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java deleted file mode 100644 index ce28cbe..0000000 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java +++ /dev/null @@ -1,2 +0,0 @@ -package com.bipt.intelligentapplicationorchestrationservice.mapper;public interface ModelMapper { -} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java deleted file mode 100644 index 0c10581..0000000 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java +++ /dev/null @@ -1,2 +0,0 @@ -package com.bipt.intelligentapplicationorchestrationservice.pojo;public class ModelDTO { -} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java deleted file mode 100644 index c36831c..0000000 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java +++ /dev/null @@ -1,2 +0,0 @@ -package com.bipt.intelligentapplicationorchestrationservice.service.Impl;public class ModelServiceImpl { -} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java deleted file mode 100644 index 5288295..0000000 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.bipt.intelligentapplicationorchestrationservice.service.Impl; - -public interface ModelService { -} diff --git a/src/main/resources/mapper/ModelMapper.xml b/src/main/resources/mapper/ModelMapper.xml deleted file mode 100644 index a3526b5..0000000 --- a/src/main/resources/mapper/ModelMapper.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - update model_version set - - status=#{status} - - where model_id=#{id} - - \ No newline at end of file From 52ea1233e09cad0a99bbba62efee306230ac297f Mon Sep 17 00:00:00 2001 From: NingHuan <2139614357@qq.com> Date: Wed, 21 May 2025 09:53:38 +0800 Subject: [PATCH 31/50] Revert "Merge remote-tracking branch 'origin/main'" This reverts commit 4f9aed896559f17d9007b00470ad63986b1f3070, reversing changes made to 35f12bc54757b29afe85e9e3b3af4ded79456de4. --- doc/WorkReport/2025-05-nh.md | 32 +---------------------------- doc/WorkReport/2025-05-孙一城.md | 12 +---------- 2 files changed, 2 insertions(+), 42 deletions(-) diff --git a/doc/WorkReport/2025-05-nh.md b/doc/WorkReport/2025-05-nh.md index d3faa27..71eff93 100644 --- a/doc/WorkReport/2025-05-nh.md +++ b/doc/WorkReport/2025-05-nh.md @@ -15,21 +15,6 @@ - 继续开发模型评估部分 - 尽量解决lombok存在的问题 -## 2025年5月14日 - -### ✅ 今日完成 - -* 基本完成模型评估部分开发 -* 引入了SpringDoc OpenAPI相关依赖和配置 - -### 🚧 进行中 - -* 继续优化模型评估部分 - -### 📅 明日计划 - -* 继续优化模型评估部分 - ## 2025年5月15日 ### ✅ 今日完成 @@ -43,19 +28,4 @@ ### 📅 明日计划 -- 模型评估部分优化 - -## 2025年5月19日 - -### ✅ 今日完成 - -- 项目设计文档分析 -- 尝试项目前端页面开发(数据集管理页面) - -### 🚧 进行中 - -- 项目设计文档分析 - -### 📅 明日计划 - -- 基本完成创建模型部分后端开发 \ No newline at end of file +- 模型评估部分优化 \ No newline at end of file diff --git a/doc/WorkReport/2025-05-孙一城.md b/doc/WorkReport/2025-05-孙一城.md index 554548a..4c6141f 100644 --- a/doc/WorkReport/2025-05-孙一城.md +++ b/doc/WorkReport/2025-05-孙一城.md @@ -5,14 +5,4 @@ ### 📅 明日计划 -- 实现需求文档功能 - - -## 2025年5月15日 -### ✅ 今日完成 -- 完成算法生命周期后端开发 - - -## 2025年5月19日 -### ✅ 今日完成 -- 完成算法创建后端开发 \ No newline at end of file +- 实现需求文档功能 \ No newline at end of file From 19e6032ba70443c8693f91754569c5d6317225e8 Mon Sep 17 00:00:00 2001 From: NingHuan <2139614357@qq.com> Date: Wed, 21 May 2025 10:28:57 +0800 Subject: [PATCH 32/50] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=97=A5=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/WorkReport/2025-05-nh.md | 39 ++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/doc/WorkReport/2025-05-nh.md b/doc/WorkReport/2025-05-nh.md index 71eff93..228d654 100644 --- a/doc/WorkReport/2025-05-nh.md +++ b/doc/WorkReport/2025-05-nh.md @@ -19,13 +19,44 @@ ### ✅ 今日完成 -- 基本完成模型评估部分的功能开发 -- 加入SpringDoc OpenAPI相关依赖和配置文件(自动生成 REST API 文档和 Swagger UI) +* 基本完成模型评估部分开发 +* 引入了SpringDoc OpenAPI相关依赖和配置 ### 🚧 进行中 -- 模型评估部分优化 +* 继续优化模型评估部分 ### 📅 明日计划 -- 模型评估部分优化 \ No newline at end of file +* 继续优化模型评估部分 + +## 2025年5月19日 + +### ✅ 今日完成 + +- 项目设计文档分析 +- 尝试项目前端页面开发(数据集管理页面) + +### 🚧 进行中 + +- 项目设计文档分析 + +### 📅 明日计划 + +- 基本完成创建模型部分后端开发 + +## 2025年5月20日 + +### ✅ 今日完成 + +- 数据库表字段新增 +- 实体类定义与修改 +- 基本完成创建模型部分后端开发 + +### 🚧 进行中 + +- 创建模型部分后端优化 + +### 📅 明日计划 + +- 模型信息管理部分后端开发 \ No newline at end of file From 0b454413c0ab18fee98746b0080b11965fa215a5 Mon Sep 17 00:00:00 2001 From: xiaohucoding <2307520758@qq.com> Date: Sun, 18 May 2025 21:59:19 +0800 Subject: [PATCH 33/50] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E7=94=9F?= =?UTF-8?q?=E5=91=BD=E5=91=A8=E6=9C=9F=E7=89=88=E6=9C=AC2.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 +- .../constant/MessageConstant.java | 2 +- .../constant/StatusConstant.java | 13 +++++ .../controller/DatasetController.java | 8 ++- .../enumeration/DatasetType.java | 35 ++++++++++++ .../service/Impl/DatasetServiceImpl.java | 56 ++++++++++--------- 6 files changed, 90 insertions(+), 30 deletions(-) create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/StatusConstant.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/enumeration/DatasetType.java diff --git a/pom.xml b/pom.xml index 2d08e34..ba0fbb6 100644 --- a/pom.xml +++ b/pom.xml @@ -1,11 +1,11 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 org.springframework.boot spring-boot-starter-parent - 3.4.5 + 3.2.5 com.bipt @@ -27,7 +27,7 @@ - 24 + 21 diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/MessageConstant.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/MessageConstant.java index 0985939..3240df9 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/MessageConstant.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/MessageConstant.java @@ -2,5 +2,5 @@ package com.bipt.intelligentapplicationorchestrationservice.constant; public class MessageConstant { public static final String UNKNOWN_ERROR = "未知错误"; - public static final String ALREADY_EXISTS = "数据集已存在"; + public static final String ALREADY_EXISTS = "已存在"; } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/StatusConstant.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/StatusConstant.java new file mode 100644 index 0000000..58abe56 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/StatusConstant.java @@ -0,0 +1,13 @@ +package com.bipt.intelligentapplicationorchestrationservice.constant; + +/** + * 状态常量,启用或者禁用 + * @author hky + */ +public class StatusConstant { + //启用 + public static final Integer ENABLE = 1; + + //禁用 + public static final Integer DISABLE = 0; +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/DatasetController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/DatasetController.java index be81792..fb86a00 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/DatasetController.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/DatasetController.java @@ -2,12 +2,14 @@ package com.bipt.intelligentapplicationorchestrationservice.controller; import com.bipt.intelligentapplicationorchestrationservice.pojo.*; import com.bipt.intelligentapplicationorchestrationservice.service.DatasetService; +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.*; import java.util.List; - +@Tag(name ="数据集相关接口") @RestController @RequestMapping("/dataset") @Slf4j @@ -20,6 +22,7 @@ public class DatasetController { * @param datasetDTO * @return */ + @Operation(summary ="新增数据集") @PostMapping public OptResult save(@RequestBody DatasetDTO datasetDTO) { log.info("新增数据集:{}", datasetDTO); @@ -32,6 +35,7 @@ public class DatasetController { * @param dataSetPageQueryDTO * @return */ + @Operation(summary ="分页查询") @GetMapping("/page") public OptResult page(DatasetPageQueryDTO dataSetPageQueryDTO) { log.info("数据集分页查询:{}", dataSetPageQueryDTO); @@ -45,6 +49,7 @@ public class DatasetController { * @param datasetDTO * @return */ + @Operation(summary ="修改数据集") @PutMapping public OptResult update(@RequestBody DatasetDTO datasetDTO){ log.info("修改数据集",datasetDTO); @@ -59,6 +64,7 @@ public class DatasetController { * @param datasetIds 数据集ID列表 * @return 操作结果 */ + @Operation(summary ="删除数据集") @DeleteMapping public OptResult deleteBatch(@RequestBody List datasetIds) { log.info("批量删除数据集,ID列表:{}", datasetIds); diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/enumeration/DatasetType.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/enumeration/DatasetType.java new file mode 100644 index 0000000..75e7752 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/enumeration/DatasetType.java @@ -0,0 +1,35 @@ +package com.bipt.intelligentapplicationorchestrationservice.enumeration; + +import lombok.Getter; + +/** + * @author hky + */ + +@Getter +public enum DatasetType { + UPLOAD(0,"用户上传"), + FROM_DATABASE(1,"来源于数据库"); + + private final Integer code; + private final String description; + + DatasetType(Integer code, String description) { + this.code = code; + this.description = description; + } + + /** + * 根据状态码获取对应的枚举值 + * @param code 状态码 + * @return 对应的枚举值 + */ + public static DatasetType fromCode(Integer code) { + for (DatasetType datasetType : DatasetType.values()) { + if (datasetType.getCode().equals(code)) { + return datasetType; + } + } + throw new IllegalArgumentException("无效的数据集状态码: " + code); + } +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/DatasetServiceImpl.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/DatasetServiceImpl.java index dafc65e..9e04dd4 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/DatasetServiceImpl.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/DatasetServiceImpl.java @@ -1,5 +1,7 @@ package com.bipt.intelligentapplicationorchestrationservice.service.Impl; +import com.bipt.intelligentapplicationorchestrationservice.constant.StatusConstant; +import com.bipt.intelligentapplicationorchestrationservice.enumeration.DatasetType; import com.bipt.intelligentapplicationorchestrationservice.mapper.DatasetMapper; import com.bipt.intelligentapplicationorchestrationservice.pojo.*; import com.bipt.intelligentapplicationorchestrationservice.service.DatasetService; @@ -15,6 +17,8 @@ import java.time.LocalDateTime; import java.util.Collections; import java.util.List; +import static com.bipt.intelligentapplicationorchestrationservice.enumeration.DatasetType.FROM_DATABASE; + @Service @Slf4j public class DatasetServiceImpl implements DatasetService { @@ -29,20 +33,26 @@ public class DatasetServiceImpl implements DatasetService { @Transactional public void save(DatasetDTO datasetDTO) { //判断数据集类型,如果是本地上传则保存,若用调用数据仓库进入下一步 - if (datasetDTO.getDatasetType()==0){ - //TODO 保存到分布式文件系统 + // 获取数据集类型 + DatasetType datasetType = DatasetType.fromCode(datasetDTO.getDatasetType()); + // 根据类型处理数据 + switch (datasetType) { + case UPLOAD: + //TODO 保存到分布式文件系统 + break; + case FROM_DATABASE: + String args = datasetDTO.getArgs(); + //TODO 根据筛选条件调用数据仓库中的数据 - }else { -// Map args = datasetDTO.getArgs(); - String args = datasetDTO.getArgs(); - int datasetType = datasetDTO.getDatasetType(); - //TODO 根据筛选条件调用数据仓库中的数据 - - //TODO 调用数据仓库保存到分布式文件系统 + //TODO 调用数据仓库保存到分布式文件系统 + break; + default: + throw new IllegalArgumentException("不支持的数据集类型: " + datasetType); } + DatasetEntity datasetEntity = new DatasetEntity(); BeanUtils.copyProperties(datasetDTO,datasetEntity); - datasetEntity.setDatasetStatus(1); + datasetEntity.setDatasetStatus(StatusConstant.ENABLE); datasetEntity.setCreateTime(LocalDateTime.now()); datasetEntity.setUpdateTime(LocalDateTime.now()); datasetMapper.insert(datasetEntity); @@ -59,15 +69,18 @@ public class DatasetServiceImpl implements DatasetService { public void update(DatasetDTO datasetDTO) { /*DatasetEntity datasetEntity = new DatasetEntity(); BeanUtils.copyProperties(datasetDTO,datasetEntity);*/ - if (datasetDTO.getDatasetType()==0){ - //TODO 覆盖保存到分布式文件系统中 - - }else { - //TODO 覆盖数据文件 - - - //TODO + DatasetType datasetType = DatasetType.fromCode(datasetDTO.getDatasetType()); + // 根据类型处理数据 + switch (datasetType) { + case UPLOAD: + //TODO 覆盖保存到分布式文件系统中 + break; + case FROM_DATABASE: + //TODO 覆盖数据文件 + break; + default: + throw new IllegalArgumentException("不支持的数据集类型: " + datasetType); } DatasetEntity datasetEntity = new DatasetEntity(); BeanUtils.copyProperties(datasetDTO,datasetEntity); @@ -94,14 +107,7 @@ public class DatasetServiceImpl implements DatasetService { @Override @Transactional public void deleteBatch(List datasetIds) { - for (Long datasetId : datasetIds) { - DatasetEntity datasetEntity = datasetMapper.getById(datasetId); - if (datasetEntity == null) { - throw new IllegalArgumentException("数据集不存在,ID:" + datasetId); - } - - } //TODO 在分布式文件系统中删除 datasetMapper.deleteBatch(datasetIds); } From eee91c212aac861b30aa75c8f04d81eb96ed652f Mon Sep 17 00:00:00 2001 From: xiaohucoding <2307520758@qq.com> Date: Sun, 18 May 2025 22:06:03 +0800 Subject: [PATCH 34/50] =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/WorkReport/2025-05-hky.md | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/doc/WorkReport/2025-05-hky.md b/doc/WorkReport/2025-05-hky.md index 6d8f14d..fd40f2e 100644 --- a/doc/WorkReport/2025-05-hky.md +++ b/doc/WorkReport/2025-05-hky.md @@ -36,17 +36,4 @@ 暂无 ### 📅 明日计划 -完成模型服务的数据库表设计 - -## 2025年5月19日 -### ✅ 今日完成 -完成了服务发布的表设计 - -### 🚧 进行中 -缓存设计 - -### ⚠️ 问题/障碍 -暂无 - -### 📅 明日计划 -完成缓存设计,以及实体类设计 \ No newline at end of file +完成模型服务的数据库表设计 \ No newline at end of file From 3599a052a300f2339a750584b25a73e2977a284b Mon Sep 17 00:00:00 2001 From: xiaohucoding <2307520758@qq.com> Date: Tue, 20 May 2025 16:33:07 +0800 Subject: [PATCH 35/50] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=8F=91=E5=B8=83?= =?UTF-8?q?=EF=BC=88=E6=97=A0redis=E7=89=88=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/DesignDocument/模型服务表--hky.md | 16 ++++++ pom.xml | 4 ++ .../config/RedisConfiguration.java | 26 ++++++++++ .../controller/publishController.java | 41 +++++++++++++++ .../mapper/PublishMapper.java | 21 ++++++++ .../pojo/ServicePublish.java | 23 +++++++++ .../pojo/ServicePublishDTO.java | 22 ++++++++ .../pojo/ServicePublishVO.java | 29 +++++++++++ .../service/Impl/PublishServiceImpl.java | 50 +++++++++++++++++++ .../service/PublishService.java | 10 ++++ src/main/resources/application.properties | 13 ++++- src/main/resources/mapper/PublishMapper.xml | 20 ++++++++ 12 files changed, 274 insertions(+), 1 deletion(-) create mode 100644 doc/DesignDocument/模型服务表--hky.md create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/RedisConfiguration.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/PublishMapper.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublish.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishDTO.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishVO.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/PublishServiceImpl.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/PublishService.java create mode 100644 src/main/resources/mapper/PublishMapper.xml diff --git a/doc/DesignDocument/模型服务表--hky.md b/doc/DesignDocument/模型服务表--hky.md new file mode 100644 index 0000000..f4e8c64 --- /dev/null +++ b/doc/DesignDocument/模型服务表--hky.md @@ -0,0 +1,16 @@ +# 数据库设计文档 + +## 服务发布 + +### 服务发布 + +#### 1.服务发布表(service_publish) + +| 序号 | 数据表名 | 中文名称 | +| ---- | -------- | ------------------ | +| 1 | id | 发布表id(发布记录唯一标识) | +| 2 | model_id | 模型id | +| 3 | api_url | api路径 | +| 4 | create_time | 发布请求创建时间 | + +#### diff --git a/pom.xml b/pom.xml index ba0fbb6..8255ccc 100644 --- a/pom.xml +++ b/pom.xml @@ -39,6 +39,10 @@ spring-boot-starter-web + + org.springframework.boot + spring-boot-starter-data-redis + org.postgresql postgresql diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/RedisConfiguration.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/RedisConfiguration.java new file mode 100644 index 0000000..8e3a30a --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/RedisConfiguration.java @@ -0,0 +1,26 @@ +package com.bipt.intelligentapplicationorchestrationservice.config; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.StringRedisSerializer; + + +@Configuration +@Slf4j +public class RedisConfiguration { + @Bean + public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){ + log.info("开始创建redis模板对象..."); + RedisTemplate redisTemplate = new RedisTemplate(); + //设置redis的连接工厂对象 + redisTemplate.setConnectionFactory(redisConnectionFactory); + //设置redis key的序列化器 + redisTemplate.setKeySerializer(new StringRedisSerializer()); + + return redisTemplate; + + } +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java new file mode 100644 index 0000000..586f991 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java @@ -0,0 +1,41 @@ +package com.bipt.intelligentapplicationorchestrationservice.controller; + +import com.bipt.intelligentapplicationorchestrationservice.pojo.OptResult; +import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishDTO; +import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishVO; +import com.bipt.intelligentapplicationorchestrationservice.service.PublishService; +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.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name ="服务发布相关接口") +@RestController +@RequestMapping("/publish") +@Slf4j +public class publishController { + @Autowired + private PublishService publishService; + + /** + * 新增请求发布 + * @param servicePublishDTO + * @return + */ + @PostMapping + @Operation(summary ="新增发布请求") + public OptResult save(@RequestBody ServicePublishDTO servicePublishDTO){ + log.info("模型发布请求:{}", servicePublishDTO); + publishService.save(servicePublishDTO); + ServicePublishVO servicePublishVO = publishService.getByModelId(servicePublishDTO); + return OptResult.success(servicePublishVO); + } + + + + +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/PublishMapper.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/PublishMapper.java new file mode 100644 index 0000000..177c38e --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/PublishMapper.java @@ -0,0 +1,21 @@ +package com.bipt.intelligentapplicationorchestrationservice.mapper; + +import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersion; +import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishDTO; +import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishVO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface PublishMapper { + + + + void insert(ServicePublishDTO servicePublishDTO); + + Long getByApiUrl(String apiUrl); + @Select("select * from model_version where model_id=#{modelId} and status = 1") + ModelVersion getById(Long modelId); + + ServicePublishVO getByModelId(Long modelId); +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublish.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublish.java new file mode 100644 index 0000000..d17b386 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublish.java @@ -0,0 +1,23 @@ +package com.bipt.intelligentapplicationorchestrationservice.pojo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author hky + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ServicePublish implements Serializable { + private Long id; + private Long modelId; + private String apiUrl; + private LocalDateTime createTime; +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishDTO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishDTO.java new file mode 100644 index 0000000..039a6a5 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishDTO.java @@ -0,0 +1,22 @@ +package com.bipt.intelligentapplicationorchestrationservice.pojo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; +/** + * @author hky + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ServicePublishDTO implements Serializable { + private Long id; + private Long modelId; + private String apiUrl; + private LocalDateTime createTime; +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishVO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishVO.java new file mode 100644 index 0000000..ec12f7f --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishVO.java @@ -0,0 +1,29 @@ +package com.bipt.intelligentapplicationorchestrationservice.pojo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author hky + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ServicePublishVO implements Serializable { + private Long modelId; + private String apiUrl; + private String version; + private Integer datasetId; + private String modelConfig; + private String modelPath; + private Integer status; + private LocalDateTime createTime; + + +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/PublishServiceImpl.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/PublishServiceImpl.java new file mode 100644 index 0000000..5e34fc9 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/PublishServiceImpl.java @@ -0,0 +1,50 @@ +package com.bipt.intelligentapplicationorchestrationservice.service.Impl; + +import com.bipt.intelligentapplicationorchestrationservice.mapper.PublishMapper; +import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersion; +import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishDTO; +import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishVO; +import com.bipt.intelligentapplicationorchestrationservice.service.PublishService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * @author hky + */ +@Service +@Slf4j +public class PublishServiceImpl implements PublishService { + + @Autowired + private PublishMapper publishMapper; + /** + * 新增服务请求 + * @param servicePublishDTO + */ + @Override + @Transactional + public void save(ServicePublishDTO servicePublishDTO) { + String apiUrl = servicePublishDTO.getApiUrl(); + Long id = publishMapper.getByApiUrl(apiUrl); + if (id != null){ + throw new IllegalArgumentException("请求已存在: " + apiUrl); + } + Long modelId = servicePublishDTO.getModelId(); + ModelVersion modelVersion = publishMapper.getById(modelId); + String modelConfig = modelVersion.getModelConfig(); + //todo 调用GPU分配 + + + publishMapper.insert(servicePublishDTO); + } + + @Override + public ServicePublishVO getByModelId(ServicePublishDTO servicePublishDTO) { + Long modelId = servicePublishDTO.getModelId(); + return publishMapper.getByModelId(modelId); + } + + +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/PublishService.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/PublishService.java new file mode 100644 index 0000000..b4a22ca --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/PublishService.java @@ -0,0 +1,10 @@ +package com.bipt.intelligentapplicationorchestrationservice.service; + +import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishDTO; +import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishVO; + +public interface PublishService { + void save(ServicePublishDTO servicePublishDTO); + + ServicePublishVO getByModelId(ServicePublishDTO servicePublishDTO); +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index fdc5805..30ffe18 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -15,4 +15,15 @@ mybatis.mapper-locations=classpath:mapper/*.xml # 配置实体类别名所在包 mybatis.type-aliases-package=com.bipt.intelligentapplicationorchestrationservice.pojo # 开启驼峰命名转换 -mybatis.configuration.map-underscore-to-camel-case=true \ No newline at end of file +mybatis.configuration.map-underscore-to-camel-case=true + +# Redis服务器地址 +spring.data.redis.host=localhost +# Redis服务器端口 +spring.data.redis.port=6379 +# Redis密码(如果有) +spring.data.redis.password=123456 +# Redis数据库索引(默认为0) +spring.data.redis.database=2 +# 连接超时时间(毫秒) +spring.data.redis.timeout=3000 diff --git a/src/main/resources/mapper/PublishMapper.xml b/src/main/resources/mapper/PublishMapper.xml new file mode 100644 index 0000000..d69505c --- /dev/null +++ b/src/main/resources/mapper/PublishMapper.xml @@ -0,0 +1,20 @@ + + + + + INSERT INTO service_publish + (id,model_id,api_url,create_time) + values (#{id}, #{modelId}, #{apiUrl}, #{createTime}) + + + + + \ No newline at end of file From ed38bb26009d2aa4b4ce7b5066d4ad9defb4f0a6 Mon Sep 17 00:00:00 2001 From: xiaohucoding <2307520758@qq.com> Date: Tue, 20 May 2025 16:36:54 +0800 Subject: [PATCH 36/50] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=8F=91=E5=B8=83?= =?UTF-8?q?=EF=BC=88=E6=97=A0redis=E7=89=88=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/WorkReport/2025-05-hky.md | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/doc/WorkReport/2025-05-hky.md b/doc/WorkReport/2025-05-hky.md index fd40f2e..45598e5 100644 --- a/doc/WorkReport/2025-05-hky.md +++ b/doc/WorkReport/2025-05-hky.md @@ -36,4 +36,30 @@ 暂无 ### 📅 明日计划 -完成模型服务的数据库表设计 \ No newline at end of file +完成模型服务的数据库表设计 + +## 2025年5月19日 +### ✅ 今日完成 +模型发布的数据库设计 + +### 🚧 进行中 +模型发布的逻辑开发 + +### ⚠️ 问题/障碍 +暂无 + +### 📅 明日计划 +完成模型发布的逻辑开发 + +## 2025年5月20日 +### ✅ 今日完成 +服务发布逻辑开发(无GPU版) + +### 🚧 进行中 +redis设计 + +### ⚠️ 问题/障碍 +暂无 + +### 📅 明日计划 +完成redis设计,做完服务发布的逻辑开发 \ No newline at end of file From de32099ea9bb72cea884314a9ac752cb9627e05c Mon Sep 17 00:00:00 2001 From: xiaohucoding <2307520758@qq.com> Date: Wed, 21 May 2025 15:56:02 +0800 Subject: [PATCH 37/50] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=8F=91=E5=B8=83?= =?UTF-8?q?=EF=BC=88=E6=97=A0redis=E7=89=88=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application.properties | 6 +-- .../RedisTest.java | 53 +++++++++++++++++++ 2 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 src/test/java/com/bipt/intelligentapplicationorchestrationservice/RedisTest.java diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 30ffe18..20c8a9e 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -18,12 +18,12 @@ mybatis.type-aliases-package=com.bipt.intelligentapplicationorchestrationservice mybatis.configuration.map-underscore-to-camel-case=true # Redis服务器地址 -spring.data.redis.host=localhost +spring.data.redis.host=116.205.121.200 # Redis服务器端口 spring.data.redis.port=6379 # Redis密码(如果有) -spring.data.redis.password=123456 +spring.data.redis.password=Jbjhhzstsl97@ # Redis数据库索引(默认为0) -spring.data.redis.database=2 +spring.data.redis.database=0 # 连接超时时间(毫秒) spring.data.redis.timeout=3000 diff --git a/src/test/java/com/bipt/intelligentapplicationorchestrationservice/RedisTest.java b/src/test/java/com/bipt/intelligentapplicationorchestrationservice/RedisTest.java new file mode 100644 index 0000000..72461e5 --- /dev/null +++ b/src/test/java/com/bipt/intelligentapplicationorchestrationservice/RedisTest.java @@ -0,0 +1,53 @@ +package com.bipt.intelligentapplicationorchestrationservice; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.redis.core.*; + +import java.util.List; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +@SpringBootTest +public class RedisTest { + + @Autowired + private RedisTemplate redisTemplate; + + @Test + public void testRedisTemplate(){ + System.out.println(redisTemplate); + ValueOperations valueOperations = redisTemplate.opsForValue(); + HashOperations hashOperations = redisTemplate.opsForHash(); + ListOperations listOperations = redisTemplate.opsForList(); + SetOperations setOperations = redisTemplate.opsForSet(); + ZSetOperations zSetOperations = redisTemplate.opsForZSet(); + } + @Test + public void testString(){ + //set get setex setnx + redisTemplate.opsForValue().set("name","小明"); + String city =(String) redisTemplate.opsForValue().get("name"); + System.out.println(city); + redisTemplate.opsForValue().set("code","1234",3, TimeUnit.MINUTES); + redisTemplate.opsForValue().setIfAbsent("lock","1"); + redisTemplate.opsForValue().setIfAbsent("lock","2"); + } + @Test + public void testHash(){ +// hset hget hdel hkeys hvals + HashOperations hashOperations = redisTemplate.opsForHash(); + hashOperations.put("100","name","tom"); + hashOperations.put("100","age","20"); + + String name = (String) hashOperations.get("100", "name"); + System.out.println(name); + + Set keys = hashOperations.keys("100"); + System.out.println(keys); + List values = hashOperations.values("100"); + System.out.println(values); + hashOperations.delete("100","age"); + } +} From 5af1b7a5771e286537b3bd8cbe4db0938880c8db Mon Sep 17 00:00:00 2001 From: xiaohucoding <2307520758@qq.com> Date: Wed, 21 May 2025 22:18:31 +0800 Subject: [PATCH 38/50] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/WorkReport/2025-05-hky.md | 16 +++++++++- .../controller/publishController.java | 31 ++++++++++++++++--- .../mapper/PublishMapper.java | 5 ++- .../pojo/ServicePublish.java | 6 ++-- .../pojo/ServicePublishDTO.java | 1 + .../pojo/ServicePublishVO.java | 10 ++---- .../service/Impl/PublishServiceImpl.java | 18 +++++------ .../service/PublishService.java | 7 +++-- src/main/resources/application.properties | 4 +-- 9 files changed, 64 insertions(+), 34 deletions(-) diff --git a/doc/WorkReport/2025-05-hky.md b/doc/WorkReport/2025-05-hky.md index 45598e5..08580ac 100644 --- a/doc/WorkReport/2025-05-hky.md +++ b/doc/WorkReport/2025-05-hky.md @@ -62,4 +62,18 @@ redis设计 暂无 ### 📅 明日计划 -完成redis设计,做完服务发布的逻辑开发 \ No newline at end of file +完成redis设计,做完服务发布的逻辑开发 + +## 2025年5月21日 +### ✅ 今日完成 +redis的服务器配置 + +### 🚧 进行中 +开发服务发布的redis内容 + +### ⚠️ 问题/障碍 +如何把model_version表中的配置中相关GPU资源的内容提取出来。 + + +### 📅 明日计划 +完成服务发布的开发 \ No newline at end of file diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java index 586f991..8cd5599 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java @@ -1,18 +1,21 @@ package com.bipt.intelligentapplicationorchestrationservice.controller; -import com.bipt.intelligentapplicationorchestrationservice.pojo.OptResult; -import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishDTO; -import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishVO; +import com.bipt.intelligentapplicationorchestrationservice.config.RedisConfiguration; +import com.bipt.intelligentapplicationorchestrationservice.pojo.*; import com.bipt.intelligentapplicationorchestrationservice.service.PublishService; 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.data.redis.core.RedisTemplate; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + @Tag(name ="服务发布相关接口") @RestController @RequestMapping("/publish") @@ -21,6 +24,8 @@ public class publishController { @Autowired private PublishService publishService; + @Autowired + private RedisTemplate redisTemplate; /** * 新增请求发布 * @param servicePublishDTO @@ -28,11 +33,27 @@ public class publishController { */ @PostMapping @Operation(summary ="新增发布请求") + @Transactional public OptResult save(@RequestBody ServicePublishDTO servicePublishDTO){ log.info("模型发布请求:{}", servicePublishDTO); publishService.save(servicePublishDTO); - ServicePublishVO servicePublishVO = publishService.getByModelId(servicePublishDTO); - return OptResult.success(servicePublishVO); + Long modelId = servicePublishDTO.getModelId(); + String key="Model_" + modelId; + //查询redis是否存在GPU相关资源数据 + ServicePublishVO servicePublishVO = (ServicePublishVO) redisTemplate.opsForValue().get(key); + //如果存在,直接返回,无须查询数据库 + if (servicePublishVO != null){ + return OptResult.success(servicePublishVO); + } + + String modelConfig = publishService.getByModelId(modelId); + //todo 序列化结果提出来 + + ServicePublish servicePublish = new ServicePublish(); + String ip = servicePublishDTO.getIp(); + servicePublish.setIp(ip); + + return OptResult.success(); } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/PublishMapper.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/PublishMapper.java index 177c38e..5582b45 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/PublishMapper.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/PublishMapper.java @@ -14,8 +14,7 @@ public interface PublishMapper { void insert(ServicePublishDTO servicePublishDTO); Long getByApiUrl(String apiUrl); - @Select("select * from model_version where model_id=#{modelId} and status = 1") - ModelVersion getById(Long modelId); + @Select("select model_config from model_version where model_id=#{modelId} and status = 1") + String getById(Long modelId); - ServicePublishVO getByModelId(Long modelId); } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublish.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublish.java index d17b386..9dd928b 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublish.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublish.java @@ -16,8 +16,8 @@ import java.time.LocalDateTime; @NoArgsConstructor @AllArgsConstructor public class ServicePublish implements Serializable { - private Long id; private Long modelId; - private String apiUrl; - private LocalDateTime createTime; + private String GPUModel; + private String ip; + private String GPUMemorySize; } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishDTO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishDTO.java index 039a6a5..31f384f 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishDTO.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishDTO.java @@ -19,4 +19,5 @@ public class ServicePublishDTO implements Serializable { private Long modelId; private String apiUrl; private LocalDateTime createTime; + private String ip; } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishVO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishVO.java index ec12f7f..d49a340 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishVO.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishVO.java @@ -17,13 +17,9 @@ import java.time.LocalDateTime; @AllArgsConstructor public class ServicePublishVO implements Serializable { private Long modelId; - private String apiUrl; - private String version; - private Integer datasetId; - private String modelConfig; - private String modelPath; - private Integer status; - private LocalDateTime createTime; + private String GPUModel; + private String ip; + private String GPUMemorySize; } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/PublishServiceImpl.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/PublishServiceImpl.java index 5e34fc9..52b422a 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/PublishServiceImpl.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/PublishServiceImpl.java @@ -1,9 +1,7 @@ package com.bipt.intelligentapplicationorchestrationservice.service.Impl; import com.bipt.intelligentapplicationorchestrationservice.mapper.PublishMapper; -import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersion; import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishDTO; -import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishVO; import com.bipt.intelligentapplicationorchestrationservice.service.PublishService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -31,19 +29,17 @@ public class PublishServiceImpl implements PublishService { if (id != null){ throw new IllegalArgumentException("请求已存在: " + apiUrl); } - Long modelId = servicePublishDTO.getModelId(); - ModelVersion modelVersion = publishMapper.getById(modelId); - String modelConfig = modelVersion.getModelConfig(); - //todo 调用GPU分配 - - publishMapper.insert(servicePublishDTO); } + /** + * 根据id查找配置信息 + * @param modelId + * @return + */ @Override - public ServicePublishVO getByModelId(ServicePublishDTO servicePublishDTO) { - Long modelId = servicePublishDTO.getModelId(); - return publishMapper.getByModelId(modelId); + public String getByModelId(Long modelId) { + return publishMapper.getById(modelId); } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/PublishService.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/PublishService.java index b4a22ca..4d3b410 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/PublishService.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/PublishService.java @@ -1,10 +1,13 @@ package com.bipt.intelligentapplicationorchestrationservice.service; import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishDTO; -import com.bipt.intelligentapplicationorchestrationservice.pojo.ServicePublishVO; public interface PublishService { + void save(ServicePublishDTO servicePublishDTO); - ServicePublishVO getByModelId(ServicePublishDTO servicePublishDTO); + + + + String getByModelId(Long modelId); } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 20c8a9e..2b97d0a 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -24,6 +24,6 @@ spring.data.redis.port=6379 # Redis密码(如果有) spring.data.redis.password=Jbjhhzstsl97@ # Redis数据库索引(默认为0) -spring.data.redis.database=0 +spring.data.redis.database = 0 # 连接超时时间(毫秒) -spring.data.redis.timeout=3000 +spring.data.redis.timeout = 3000 From d01f3bfcbf63cb67d2f96b8e486249627264177a Mon Sep 17 00:00:00 2001 From: xiaohucoding <2307520758@qq.com> Date: Thu, 22 May 2025 15:57:15 +0800 Subject: [PATCH 39/50] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/publishController.java | 84 +++++++++++++++---- .../pojo/MachineInfo.java | 39 +++++++++ .../pojo/ServicePublishVO.java | 1 + 3 files changed, 107 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/MachineInfo.java diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java index 8cd5599..ea333da 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java @@ -9,11 +9,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.List; @Tag(name ="服务发布相关接口") @@ -34,29 +32,81 @@ public class publishController { @PostMapping @Operation(summary ="新增发布请求") @Transactional - public OptResult save(@RequestBody ServicePublishDTO servicePublishDTO){ + public OptResult> save(@RequestBody ServicePublishDTO servicePublishDTO) { log.info("模型发布请求:{}", servicePublishDTO); publishService.save(servicePublishDTO); Long modelId = servicePublishDTO.getModelId(); - String key="Model_" + modelId; + String key = "Model_" + modelId; //查询redis是否存在GPU相关资源数据 - ServicePublishVO servicePublishVO = (ServicePublishVO) redisTemplate.opsForValue().get(key); + List list; + list = (List) redisTemplate.opsForValue().get(key); //如果存在,直接返回,无须查询数据库 - if (servicePublishVO != null){ - return OptResult.success(servicePublishVO); + if (list != null) { + return OptResult.success(list); + }else { + list = new ArrayList<>(); + } + String modelConfig = publishService.getByModelId(modelId); + if (modelConfig == null) { + log.error("模型配置为空,modelId={}", modelId); + } + String[] keyValuePairs = modelConfig.split("\\|"); + String GPUMemorySize = null; + String GPUModel = null; + for (String pair : keyValuePairs) { + pair = pair.trim(); + if (pair.startsWith("GPU")) { + GPUModel = pair.split(";", 2)[1]; + } else if (pair.startsWith("Memory:")) { + GPUMemorySize = pair.split(":", 2)[1]; + } + } + ServicePublishVO servicePublishVO = new ServicePublishVO(); + servicePublishVO.setIp(servicePublishDTO.getIp()); + servicePublishVO.setModelId(servicePublishDTO.getModelId()); + servicePublishVO.setGPUMemorySize(GPUMemorySize); + servicePublishVO.setGPUModel(GPUModel); + //todo 调用模型部署,传递信息 + + servicePublishVO.setApiUrl(servicePublishDTO.getApiUrl()); + list.add(servicePublishVO); + redisTemplate.opsForValue().set(key,list); + //一个ip上有多个机器 + // 假设从 Redis 获取的列表元素是 MachineInfo 类型 + String ip = servicePublishVO.getIp(); + String key1 = ip; + List machineList = (List) redisTemplate.opsForValue().get(key1); + + + // 模型所需的 GPU 资源 + String requiredGPUModel = servicePublishVO.getGPUModel(); + Integer requiredGPUMemory = Integer.valueOf(servicePublishVO.getGPUMemorySize()); + + if (machineList != null) { + for (MachineInfo machine : machineList) { + // 获取机器的 GPU 资源 + String machineGPUModel = machine.getGPUModel(); + Integer machineGPUMemory = machine.getGPUMemorySize(); + + // 判断机器是否满足模型需求 + if (requiredGPUModel.equals(machineGPUModel) && + machineGPUMemory >= requiredGPUMemory) { + return OptResult.success(list); + } + } + String key3 = "wait_queue"; + redisTemplate.opsForValue().set(key3,list); + //todo资源释放时候优先分配等待队列中任务 + } - String modelConfig = publishService.getByModelId(modelId); - //todo 序列化结果提出来 - - ServicePublish servicePublish = new ServicePublish(); - String ip = servicePublishDTO.getIp(); - servicePublish.setIp(ip); - - return OptResult.success(); + return OptResult.success(list); } + + + } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/MachineInfo.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/MachineInfo.java new file mode 100644 index 0000000..ccd4920 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/MachineInfo.java @@ -0,0 +1,39 @@ +package com.bipt.intelligentapplicationorchestrationservice.pojo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; +import java.util.Map; + +/** + * 机器信息实体类 + * @author hky + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MachineInfo implements Serializable { + private static final long serialVersionUID = 1L; + + private String id; // 机器唯一标识 + private String ip; // IP 地址 + private String hostname; // 主机名 + private Integer cpuCoreNum; // CPU 核心数 + private Long memoryTotal; // 总内存 (MB) + private Long memoryUsed; // 已用内存 (MB) + private String GPUModel; // GPU 型号 + private Integer GPUMemorySize; // GPU 显存大小 (GB) + private Integer GPUCount; // GPU 数量 + private Integer status; // 机器状态 (0: 离线, 1: 在线, 2: 繁忙) + private String os; // 操作系统 + private String region; // 所属区域 + private String zone; // 可用区 + private Date createTime; // 创建时间 + private Date updateTime; // 更新时间 + private Map labels; // 自定义标签 +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishVO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishVO.java index d49a340..0500cf5 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishVO.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ServicePublishVO.java @@ -20,6 +20,7 @@ public class ServicePublishVO implements Serializable { private String GPUModel; private String ip; private String GPUMemorySize; + private String apiUrl; } From f235f2d111e25c9aa08c37de12a0f5ccd063032d Mon Sep 17 00:00:00 2001 From: xiaohucoding <2307520758@qq.com> Date: Thu, 22 May 2025 16:01:31 +0800 Subject: [PATCH 40/50] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/WorkReport/2025-05-hky.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/doc/WorkReport/2025-05-hky.md b/doc/WorkReport/2025-05-hky.md index 08580ac..7fc9fad 100644 --- a/doc/WorkReport/2025-05-hky.md +++ b/doc/WorkReport/2025-05-hky.md @@ -74,6 +74,20 @@ redis的服务器配置 ### ⚠️ 问题/障碍 如何把model_version表中的配置中相关GPU资源的内容提取出来。 +### 📅 明日计划 +完成服务发布的开发 + +## 2025年5月22日 +### ✅ 今日完成 +服务发布,拦截器部分功能 + +### 🚧 进行中 +拦截器等待队列算法 + +### ⚠️ 问题/障碍 +不知道怎么优先分配等待队列中任务 ### 📅 明日计划 -完成服务发布的开发 \ No newline at end of file +完成拦截器功能 + + From 28b5ca1dfcb5db21b84a7ed5fa059460f8d44567 Mon Sep 17 00:00:00 2001 From: xiaohucoding <2307520758@qq.com> Date: Sun, 25 May 2025 17:24:57 +0800 Subject: [PATCH 41/50] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=8F=91=E5=B8=83?= =?UTF-8?q?=EF=BC=88nacos=E7=89=88=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 78 +++++++++++++------ ...cationOrchestrationServiceApplication.java | 2 + .../controller/publishController.java | 78 ++++--------------- .../util/NacosServiceUtil.java | 21 +++++ src/main/resources/application.properties | 16 +--- src/main/resources/bootstrap.properties | 10 +++ 6 files changed, 105 insertions(+), 100 deletions(-) create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/util/NacosServiceUtil.java create mode 100644 src/main/resources/bootstrap.properties diff --git a/pom.xml b/pom.xml index 8255ccc..7b91012 100644 --- a/pom.xml +++ b/pom.xml @@ -2,34 +2,51 @@ 4.0.0 + org.springframework.boot spring-boot-starter-parent - 3.2.5 + 3.1.5 + com.bipt intelligent-application-orchestration-service 0.0.1-SNAPSHOT intelligent-application-orchestration-service intelligent-application-orchestration-service - - - - - - - - - - - - + 21 + + 2022.0.4 + + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + 2022.0.0.0 + pom + import + + + + + org.springframework.boot spring-boot-starter-jdbc @@ -38,42 +55,53 @@ org.springframework.boot spring-boot-starter-web - org.springframework.boot spring-boot-starter-data-redis + + org.postgresql postgresql runtime + + com.kingbase8 + kingbase8 + 9.0.0 + + + org.projectlombok lombok 1.18.38 true - - com.github.pagehelper pagehelper-spring-boot-starter 1.4.7 - org.springdoc springdoc-openapi-starter-webmvc-ui - 2.3.0 + 2.3.0 - + - com.kingbase8 - kingbase8 - 9.0.0 + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + org.springframework.cloud + spring-cloud-starter-bootstrap + + + org.springframework.boot spring-boot-starter-test @@ -98,6 +126,9 @@ org.apache.maven.plugins maven-compiler-plugin + + ${java.version} + ${java.version} org.projectlombok @@ -121,5 +152,4 @@ - - + \ No newline at end of file diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplication.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplication.java index 1e18dc6..5d34a0f 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplication.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/IntelligentApplicationOrchestrationServiceApplication.java @@ -4,11 +4,13 @@ import lombok.extern.slf4j.Slf4j; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.transaction.annotation.EnableTransactionManagement; @MapperScan("com.bipt.intelligentapplicationorchestrationservice.mapper")//指定扫描Mapper接口的包 @SpringBootApplication @EnableTransactionManagement +@EnableDiscoveryClient @Slf4j public class IntelligentApplicationOrchestrationServiceApplication { diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java index ea333da..6d98284 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java @@ -1,8 +1,8 @@ package com.bipt.intelligentapplicationorchestrationservice.controller; -import com.bipt.intelligentapplicationorchestrationservice.config.RedisConfiguration; import com.bipt.intelligentapplicationorchestrationservice.pojo.*; import com.bipt.intelligentapplicationorchestrationservice.service.PublishService; +import com.bipt.intelligentapplicationorchestrationservice.util.NacosServiceUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; @@ -24,11 +24,9 @@ public class publishController { @Autowired private RedisTemplate redisTemplate; - /** - * 新增请求发布 - * @param servicePublishDTO - * @return - */ + @Autowired + private NacosServiceUtil nacosServiceUtil; + @PostMapping @Operation(summary ="新增发布请求") @Transactional @@ -37,70 +35,22 @@ public class publishController { publishService.save(servicePublishDTO); Long modelId = servicePublishDTO.getModelId(); String key = "Model_" + modelId; - //查询redis是否存在GPU相关资源数据 - List list; - list = (List) redisTemplate.opsForValue().get(key); - //如果存在,直接返回,无须查询数据库 - if (list != null) { - return OptResult.success(list); - }else { - list = new ArrayList<>(); - } - String modelConfig = publishService.getByModelId(modelId); - if (modelConfig == null) { - log.error("模型配置为空,modelId={}", modelId); - } - String[] keyValuePairs = modelConfig.split("\\|"); - String GPUMemorySize = null; - String GPUModel = null; - for (String pair : keyValuePairs) { - pair = pair.trim(); - if (pair.startsWith("GPU")) { - GPUModel = pair.split(";", 2)[1]; - } else if (pair.startsWith("Memory:")) { - GPUMemorySize = pair.split(":", 2)[1]; - } - } - ServicePublishVO servicePublishVO = new ServicePublishVO(); - servicePublishVO.setIp(servicePublishDTO.getIp()); - servicePublishVO.setModelId(servicePublishDTO.getModelId()); - servicePublishVO.setGPUMemorySize(GPUMemorySize); - servicePublishVO.setGPUModel(GPUModel); - //todo 调用模型部署,传递信息 - - servicePublishVO.setApiUrl(servicePublishDTO.getApiUrl()); - list.add(servicePublishVO); - redisTemplate.opsForValue().set(key,list); - //一个ip上有多个机器 - // 假设从 Redis 获取的列表元素是 MachineInfo 类型 - String ip = servicePublishVO.getIp(); - String key1 = ip; - List machineList = (List) redisTemplate.opsForValue().get(key1); - // 模型所需的 GPU 资源 - String requiredGPUModel = servicePublishVO.getGPUModel(); - Integer requiredGPUMemory = Integer.valueOf(servicePublishVO.getGPUMemorySize()); - if (machineList != null) { - for (MachineInfo machine : machineList) { - // 获取机器的 GPU 资源 - String machineGPUModel = machine.getGPUModel(); - Integer machineGPUMemory = machine.getGPUMemorySize(); - - // 判断机器是否满足模型需求 - if (requiredGPUModel.equals(machineGPUModel) && - machineGPUMemory >= requiredGPUMemory) { - return OptResult.success(list); - } - } - String key3 = "wait_queue"; - redisTemplate.opsForValue().set(key3,list); - //todo资源释放时候优先分配等待队列中任务 + try { + nacosServiceUtil.registerService( + servicePublishDTO.getModelId().toString(), + servicePublishDTO.getIp(), + 8080 + ); + log.info("Nacos服务注册成功"); + } catch (Exception e) { + log.error("Nacos服务注册失败", e); } - return OptResult.success(list); + return OptResult.success(); } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/util/NacosServiceUtil.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/util/NacosServiceUtil.java new file mode 100644 index 0000000..53861a1 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/util/NacosServiceUtil.java @@ -0,0 +1,21 @@ +package com.bipt.intelligentapplicationorchestrationservice.util; + +import com.alibaba.nacos.api.naming.NamingFactory; +import com.alibaba.nacos.api.naming.NamingService; +import com.alibaba.nacos.api.naming.pojo.Instance; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +@Component +public class NacosServiceUtil { + @Value("${spring.cloud.nacos.discovery.server-addr}") + private String nacosServerAddr; + + public void registerService(String serviceName, String ip, int port) throws Exception { + NamingService naming = NamingFactory.createNamingService(nacosServerAddr); + Instance instance = new Instance(); + instance.setIp(ip); + instance.setPort(port); + naming.registerInstance(serviceName, instance); + } +} \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 2b97d0a..d8ff972 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,5 +1,3 @@ -spring.application.name=intelligent-application-orchestration-service - # 数据库配置 spring.datasource.url=jdbc:kingbase8://116.205.121.200:54321/Ipz @@ -10,20 +8,14 @@ spring.datasource.hikari.maximum-pool-size=10 spring.datasource.hikari.minimum-idle=5 spring.datasource.hikari.connection-timeout=30000 -# SQL映射文件路径配置 +# MyBatis配置 mybatis.mapper-locations=classpath:mapper/*.xml -# 配置实体类别名所在包 mybatis.type-aliases-package=com.bipt.intelligentapplicationorchestrationservice.pojo -# 开启驼峰命名转换 mybatis.configuration.map-underscore-to-camel-case=true -# Redis服务器地址 +# Redis配置 spring.data.redis.host=116.205.121.200 -# Redis服务器端口 spring.data.redis.port=6379 -# Redis密码(如果有) spring.data.redis.password=Jbjhhzstsl97@ -# Redis数据库索引(默认为0) -spring.data.redis.database = 0 -# 连接超时时间(毫秒) -spring.data.redis.timeout = 3000 +spring.data.redis.database=0 +spring.data.redis.timeout=3000 \ No newline at end of file diff --git a/src/main/resources/bootstrap.properties b/src/main/resources/bootstrap.properties new file mode 100644 index 0000000..b24d590 --- /dev/null +++ b/src/main/resources/bootstrap.properties @@ -0,0 +1,10 @@ +# 应用名称(必须与Nacos配置的dataId前缀一致) +spring.application.name=intelligent-application-orchestration-service + +# Nacos配置中心地址(引导阶段加载配置) +spring.cloud.nacos.config.server-addr=192.168.100.1:8848 +spring.cloud.nacos.config.data-id=${spring.application.name}.properties +spring.cloud.nacos.config.group=DEFAULT_GROUP + +# Nacos服务注册地址(引导阶段注册服务) +spring.cloud.nacos.discovery.server-addr=192.168.100.1:8848 \ No newline at end of file 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 42/50] =?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 43/50] =?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 From 12a9355bb8ebc9da92246f9fac9aab7926068a7a Mon Sep 17 00:00:00 2001 From: NingHuan <2139614357@qq.com> Date: Sun, 25 May 2025 19:55:07 +0800 Subject: [PATCH 44/50] =?UTF-8?q?[=E6=8F=90=E4=BA=A4]:=E7=AC=AC=E4=BA=8C?= =?UTF-8?q?=E5=91=A8=E5=B7=A5=E4=BD=9C=E6=97=A5=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/WorkReport/2025-05-nh.md | 48 +++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/doc/WorkReport/2025-05-nh.md b/doc/WorkReport/2025-05-nh.md index 228d654..6e2c848 100644 --- a/doc/WorkReport/2025-05-nh.md +++ b/doc/WorkReport/2025-05-nh.md @@ -59,4 +59,50 @@ ### 📅 明日计划 -- 模型信息管理部分后端开发 \ No newline at end of file +- 模型信息管理部分后端开发 + +## 2025年5月23日 + +### ✅ 今日完成 + +- 模型信息管理前端页面基础搭建 + +### 🚧 进行中 + +- 模型信息管理前端页面搭建 + +### 📅 明日计划 + +- 模型信息管理前端页面搭建 + +## 2025年5月24日 + +### ✅ 今日完成 + +- 模型信息管理前端页面部分数据与后端联调 +- 模型信息管理后端开发20% + +### 🚧 进行中 + +- 模型信息管理后端开发 +- 模型信息管理前端页面部分数据与后端联调 + +### 📅 明日计划 + +- 模型信息管理后端开发 +- 模型信息管理前端页面部分数据与后端联调 + +## 2025年5月25日 + +### ✅ 今日完成 + +- 模型信息管理前端页面开发 +- 模型信息管理后端开发90%(后续可能还需要根据需求优化) + +### 🚧 进行中 + +- 模型信息管理前端页面开发 + +### 📅 明日计划 + +- 模型信息管理前端页面开发 \ No newline at end of file From 60a71a121c15a1bc56c1155e7c6e29b6732d1a0a Mon Sep 17 00:00:00 2001 From: xiaohucoding <2307520758@qq.com> Date: Sun, 25 May 2025 20:38:36 +0800 Subject: [PATCH 45/50] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=8F=91=E5=B8=83?= =?UTF-8?q?=EF=BC=88nacos=E7=89=88=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/WebMvcConfiguration.java | 18 ++++----------- .../controller/publishController.java | 13 ++++++----- .../util/NacosServiceUtil.java | 23 ++++++++++++++++++- 3 files changed, 33 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/WebMvcConfiguration.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/WebMvcConfiguration.java index 8efb176..003a69a 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/WebMvcConfiguration.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/config/WebMvcConfiguration.java @@ -4,20 +4,18 @@ import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.servers.Server; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import java.util.ArrayList; import java.util.List; -/** - * 配置类,注册web层相关组件 - */ @Configuration @Slf4j -public class WebMvcConfiguration{ +public class WebMvcConfiguration implements WebMvcConfigurer { /** * 配置OpenAPI信息 @@ -36,12 +34,4 @@ public class WebMvcConfiguration{ .servers(servers); } -// /** -// * 设置静态资源映射(Springdoc不需要特殊配置,保留可能的其他资源映射) -// */ -// @Override -// protected void addResourceHandlers(ResourceHandlerRegistry registry) { -// // 保留其他静态资源映射(如果有) -// // registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); -// } } \ No newline at end of file diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java index 6d98284..ebfe15f 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java @@ -12,7 +12,10 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; @Tag(name ="服务发布相关接口") @RestController @@ -33,17 +36,15 @@ public class publishController { public OptResult> save(@RequestBody ServicePublishDTO servicePublishDTO) { log.info("模型发布请求:{}", servicePublishDTO); publishService.save(servicePublishDTO); - Long modelId = servicePublishDTO.getModelId(); - String key = "Model_" + modelId; - - - + //todo 调用模型部署 try { + // 新增传递apiUrl参数 nacosServiceUtil.registerService( servicePublishDTO.getModelId().toString(), servicePublishDTO.getIp(), - 8080 + 8080, + servicePublishDTO.getApiUrl() ); log.info("Nacos服务注册成功"); } catch (Exception e) { diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/util/NacosServiceUtil.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/util/NacosServiceUtil.java index 53861a1..bc1a665 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/util/NacosServiceUtil.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/util/NacosServiceUtil.java @@ -6,16 +6,37 @@ import com.alibaba.nacos.api.naming.pojo.Instance; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + @Component public class NacosServiceUtil { + @Value("${spring.cloud.nacos.discovery.server-addr}") private String nacosServerAddr; - public void registerService(String serviceName, String ip, int port) throws Exception { + public void registerService(String serviceName, String ip, int port, String url) throws Exception { // 新增url参数 NamingService naming = NamingFactory.createNamingService(nacosServerAddr); Instance instance = new Instance(); instance.setIp(ip); instance.setPort(port); + // 添加元数据存储URL + Map metadata = new HashMap<>(); + metadata.put("url", url); // 将URL存入元数据 + instance.setMetadata(metadata); naming.registerInstance(serviceName, instance); } + + /** + * 获取服务所有实例IP + */ + public List getServiceInstances(String serviceName) throws Exception { + NamingService naming = NamingFactory.createNamingService(nacosServerAddr); + List instances = naming.getAllInstances(serviceName); + return instances.stream() + .map(Instance::getIp) + .collect(Collectors.toList()); + } } \ No newline at end of file From 5692cca3e73610a5c4d1d952c649f68a45dc4405 Mon Sep 17 00:00:00 2001 From: xiaohucoding <2307520758@qq.com> Date: Sun, 25 May 2025 20:42:25 +0800 Subject: [PATCH 46/50] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=8F=91=E5=B8=83?= =?UTF-8?q?=EF=BC=88nacos=E7=89=88=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/WorkReport/2025-05-hky.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/doc/WorkReport/2025-05-hky.md b/doc/WorkReport/2025-05-hky.md index 7fc9fad..6744694 100644 --- a/doc/WorkReport/2025-05-hky.md +++ b/doc/WorkReport/2025-05-hky.md @@ -90,4 +90,17 @@ redis的服务器配置 ### 📅 明日计划 完成拦截器功能 +## 2025年5月25日 +### ✅ 今日完成 +服务发布可注册到nacos上 + +### 🚧 进行中 +拦截器开发 + +### ⚠️ 问题/障碍 +模型api请求不知道是什么 + +### 📅 明日计划 +开发拦截器功能 + From 77fb43e95da2233fc8f92b7a1024227b92b061b5 Mon Sep 17 00:00:00 2001 From: xiaohucoding <2307520758@qq.com> Date: Mon, 26 May 2025 21:49:13 +0800 Subject: [PATCH 47/50] =?UTF-8?q?=E8=B0=83=E5=BA=A6=E8=AF=B7=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 8 +- ...Controller.java => PublishController.java} | 38 ++-- .../controller/ServiceAPIController.java | 178 ++++++++++++++++++ .../mapper/PublishMapper.java | 3 +- .../mapper/ServiceAPIMapper.java | 11 ++ .../service/Impl/PublishServiceImpl.java | 12 +- .../service/Impl/ServiceAPIImpl.java | 23 +++ .../service/PublishService.java | 1 - .../service/ServiceAPIService.java | 5 + src/main/resources/application.properties | 8 +- 10 files changed, 259 insertions(+), 28 deletions(-) rename src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/{publishController.java => PublishController.java} (57%) create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ServiceAPIController.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ServiceAPIMapper.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ServiceAPIImpl.java create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ServiceAPIService.java diff --git a/pom.xml b/pom.xml index 7b91012..5aac308 100644 --- a/pom.xml +++ b/pom.xml @@ -51,10 +51,10 @@ org.springframework.boot spring-boot-starter-jdbc - + org.springframework.boot spring-boot-starter-data-redis @@ -100,6 +100,10 @@ org.springframework.cloud spring-cloud-starter-bootstrap + + org.springframework.cloud + spring-cloud-starter-gateway + diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/PublishController.java similarity index 57% rename from src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java rename to src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/PublishController.java index ebfe15f..5cdf455 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/publishController.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/PublishController.java @@ -11,17 +11,13 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.concurrent.TimeUnit; @Tag(name ="服务发布相关接口") @RestController @RequestMapping("/publish") @Slf4j -public class publishController { +public class PublishController { @Autowired private PublishService publishService; @@ -38,19 +34,35 @@ public class publishController { publishService.save(servicePublishDTO); //todo 调用模型部署 + // 获取前端传来的IP字符串 + String ipListStr = servicePublishDTO.getIp(); + if (ipListStr == null || ipListStr.trim().isEmpty()) { + log.warn("IP列表为空,不进行Nacos注册"); + return OptResult.success(); + } + try { - // 新增传递apiUrl参数 - nacosServiceUtil.registerService( - servicePublishDTO.getModelId().toString(), - servicePublishDTO.getIp(), - 8080, - servicePublishDTO.getApiUrl() - ); - log.info("Nacos服务注册成功"); + // 使用逗号分割IP字符串 + String[] ipArray = ipListStr.split(","); + // 循环注册每个IP到Nacos + for (String ip : ipArray) { + String trimmedIp = ip.trim(); + if (!trimmedIp.isEmpty()) { + nacosServiceUtil.registerService( + servicePublishDTO.getModelId().toString(), + trimmedIp, + 8080, + servicePublishDTO.getApiUrl() + ); + log.info("Nacos服务注册成功: {}", trimmedIp); + } + } } catch (Exception e) { log.error("Nacos服务注册失败", e); + return OptResult.error("Nacos服务注册失败"); // 根据业务需求返回错误 } + return OptResult.success(); } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ServiceAPIController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ServiceAPIController.java new file mode 100644 index 0000000..f08513e --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ServiceAPIController.java @@ -0,0 +1,178 @@ +package com.bipt.intelligentapplicationorchestrationservice.controller; + + +import com.bipt.intelligentapplicationorchestrationservice.pojo.OptResult; +import com.bipt.intelligentapplicationorchestrationservice.service.ServiceAPIService; +import com.bipt.intelligentapplicationorchestrationservice.util.NacosServiceUtil; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.models.security.SecurityScheme; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +@Tag(name ="服务API相关接口") +@RestController +@RequestMapping("/API") +@Slf4j +public class ServiceAPIController { + + @Autowired + private ServiceAPIService serviceAPIService; + + @Autowired + private NacosServiceUtil nacosServiceUtil; + + @Autowired + private RedisTemplate redisTemplate; + @PostMapping("/release") + @Operation(summary = "结束访问") + @Transactional + public OptResult releaseResource(@PathVariable Long modelId) { + String key = "modelId:" + modelId; + String modelConfig = (String) redisTemplate.opsForValue().get(key); + int userMemorySize = parseGpuMemorySize(modelConfig); + List instanceIps; + try { + instanceIps = nacosServiceUtil.getServiceInstances(modelId.toString()); + } catch (Exception e) { + log.error("获取Nacos实例失败", e); + return OptResult.error("获取实例失败"); + } + int memorySize; + for (String ip : instanceIps) { + String ipKey = "ip:" + ip; + Integer nowMemorySizeOBJ = (Integer) redisTemplate.opsForValue().get(ipKey); + int nowMemorySize = nowMemorySizeOBJ; + memorySize = nowMemorySize + userMemorySize; + // 更新IP对应的资源值 + redisTemplate.opsForValue().set(ipKey, memorySize); + // 设置缓存过期时间(3600秒) + redisTemplate.expire(ipKey, 3600, TimeUnit.SECONDS); + } + + // 处理等待队列(先来先服务) + String waitQueueKey = "waitQueue:" + modelId; + // 取出队列头部的任务(最早加入的) + Long waitModelId = (Long) redisTemplate.opsForList().leftPop(waitQueueKey); + if (waitModelId != null) { + log.info("检测到等待队列任务,尝试调度模型ID: {}", waitModelId); + return schedule(waitModelId); // 重新调度最早的任务 + } else { + log.info("等待队列为空,无任务需要处理"); + } + + return OptResult.success("资源释放成功"); + } + + @PostMapping("/request") + @Operation(summary = "请求调度") + @Transactional + public OptResult schedule(@PathVariable Long modelId) { + // 1. 存储modelConfig到缓存 + String modelConfig = serviceAPIService.getByModelId(modelId); + int requestMemorySize = parseGpuMemorySize(modelConfig); + String modelConfigKey = "modelConfig:" + modelId; + redisTemplate.opsForValue().set(modelConfigKey, modelConfig); + // 2. 获取Nacos实例IP列表 + List instanceIps; + try { + instanceIps = nacosServiceUtil.getServiceInstances(modelId.toString()); + } catch (Exception e) { + log.error("获取Nacos实例失败", e); + return OptResult.error("获取实例失败"); + } + Set gpuKeys = redisTemplate.keys("gpu:*"); + //根据IP列表查找资源 + for (String instanceIp : instanceIps) { + for (String gpuKey : gpuKeys) { + String GPUConfig = (String) redisTemplate.opsForValue().get(gpuKey); + if (GPUConfig != null) { + // 分割键值对 + String[] pairs = GPUConfig.split(","); + String ip = null; + int memorySize = 0; + for (String pair : pairs) { + String[] keyValue = pair.split(":", 2); + if (keyValue.length == 2) { + String key = keyValue[0].trim(); + String value = keyValue[1].trim(); + if ("IP".equalsIgnoreCase(key)) { + ip = value; + } else if ("GPUMemorySize".equalsIgnoreCase(key)) { + memorySize = Integer.parseInt(value); + } + } + } + // 检查解析出的 IP 是否在 Nacos 实例列表中 + if (instanceIp.equals(ip)) { + log.info("找到 IP {} 对应的 GPU 内存: {} ", ip, memorySize); + if (memorySize>=requestMemorySize){ + int newMemorySize = memorySize - requestMemorySize; + String ipKey = "ip:" + ip; + redisTemplate.opsForValue().set(ipKey,newMemorySize); + //访问请求最大时间为3600s + redisTemplate.expire(ipKey, 3600, TimeUnit.SECONDS); + } + return OptResult.success("资源分配成功,使用ip:" + ip); + }else { + log.info("资源不足"); + } + } + } + } + // 所有实例检查完毕未找到足够资源 + String waitQueueKey = "waitQueue:" + modelId; + // 改为右插入,保证队列顺序为FIFO(最早的任务在列表头部) + redisTemplate.opsForList().rightPush(waitQueueKey, modelId); + log.info("未找到足够资源,任务 {} 加入等待队列", modelId); + return OptResult.error("资源不足,等待中"); + } + /** + * 从模型配置字符串中解析GPU内存需求 + * @param modelConfig 模型配置字符串,格式如 "GPUMemorySize:8000,version:1" + * @return 解析到的GPU内存大小(MB),若解析失败返回-1 + */ + private int parseGpuMemorySize(String modelConfig) { + if (modelConfig == null || modelConfig.isEmpty()) { + log.error("模型配置为空,无法解析GPU内存需求"); + return -1; + } + int requestMemorySize = 0; + String[] config = modelConfig.split(","); + for (String pair : config) { + // 按冒号分割键值对 + String[] keyValue = pair.split(":", 2); + if (keyValue.length == 2) { + String key = keyValue[0].trim(); + String value = keyValue[1].trim(); + // 匹配 GPUMemorySize 字段(忽略大小写) + if ("GPUMemorySize".equalsIgnoreCase(key)) { + try { + requestMemorySize = Integer.parseInt(value); + log.info("模型GPU内存: {} MB", requestMemorySize); + break; // 找到后即可退出循环 + } catch (NumberFormatException e) { + log.error("解析GPUMemorySize失败,值: {}", value, e); + return -1; + } + } + } + } + if (requestMemorySize <= 0) { + log.error("模型需求GPU内存未配置或无效"); + return -1; + } + return requestMemorySize; + } + +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/PublishMapper.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/PublishMapper.java index 5582b45..38c48a6 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/PublishMapper.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/PublishMapper.java @@ -14,7 +14,6 @@ public interface PublishMapper { void insert(ServicePublishDTO servicePublishDTO); Long getByApiUrl(String apiUrl); - @Select("select model_config from model_version where model_id=#{modelId} and status = 1") - String getById(Long modelId); + } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ServiceAPIMapper.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ServiceAPIMapper.java new file mode 100644 index 0000000..c27b445 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ServiceAPIMapper.java @@ -0,0 +1,11 @@ +package com.bipt.intelligentapplicationorchestrationservice.mapper; + + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface ServiceAPIMapper { + @Select("select model_config from model_version where model_id=#{modelId} and status = 1") + String getById(Long modelId); +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/PublishServiceImpl.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/PublishServiceImpl.java index 52b422a..4788340 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/PublishServiceImpl.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/PublishServiceImpl.java @@ -29,18 +29,12 @@ public class PublishServiceImpl implements PublishService { if (id != null){ throw new IllegalArgumentException("请求已存在: " + apiUrl); } + + //todo调用服务部署 + publishMapper.insert(servicePublishDTO); } - /** - * 根据id查找配置信息 - * @param modelId - * @return - */ - @Override - public String getByModelId(Long modelId) { - return publishMapper.getById(modelId); - } } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ServiceAPIImpl.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ServiceAPIImpl.java new file mode 100644 index 0000000..b2a0d54 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ServiceAPIImpl.java @@ -0,0 +1,23 @@ +package com.bipt.intelligentapplicationorchestrationservice.service.Impl; + +import com.bipt.intelligentapplicationorchestrationservice.mapper.ServiceAPIMapper; +import com.bipt.intelligentapplicationorchestrationservice.service.ServiceAPIService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +@Slf4j +public class ServiceAPIImpl implements ServiceAPIService { + @Autowired + private ServiceAPIMapper serviceAPIMapper; + /** + * 根据id查找配置信息 + * @param modelId + * @return + */ + @Override + public String getByModelId(Long modelId) { + return serviceAPIMapper.getById(modelId); + }; +} diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/PublishService.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/PublishService.java index 4d3b410..851891f 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/PublishService.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/PublishService.java @@ -9,5 +9,4 @@ public interface PublishService { - String getByModelId(Long modelId); } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ServiceAPIService.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ServiceAPIService.java new file mode 100644 index 0000000..4c95bb4 --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ServiceAPIService.java @@ -0,0 +1,5 @@ +package com.bipt.intelligentapplicationorchestrationservice.service; + +public interface ServiceAPIService { + String getByModelId(Long modelId); +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index d8ff972..aa70b38 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -18,4 +18,10 @@ spring.data.redis.host=116.205.121.200 spring.data.redis.port=6379 spring.data.redis.password=Jbjhhzstsl97@ spring.data.redis.database=0 -spring.data.redis.timeout=3000 \ No newline at end of file +spring.data.redis.timeout=3000 + +# 服务路由配置 +spring.cloud.gateway.routes[0].id=request-service-route +spring.cloud.gateway.routes[0].uri=lb://intelligent-application-orchestration-service +spring.cloud.gateway.routes[0].predicates[0]=Path=/request + From 2aaf3d96f05f5c2bfdcf96497afb5697765affeb Mon Sep 17 00:00:00 2001 From: xiaohucoding <2307520758@qq.com> Date: Mon, 26 May 2025 21:50:27 +0800 Subject: [PATCH 48/50] =?UTF-8?q?=E5=85=A8=E5=B1=80=E6=8B=A6=E6=88=AA?= =?UTF-8?q?=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filter/ApiRequestGlobalFilter.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/filter/ApiRequestGlobalFilter.java diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/filter/ApiRequestGlobalFilter.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/filter/ApiRequestGlobalFilter.java new file mode 100644 index 0000000..41eb59c --- /dev/null +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/filter/ApiRequestGlobalFilter.java @@ -0,0 +1,36 @@ +package com.bipt.intelligentapplicationorchestrationservice.filter; + +import org.springframework.cloud.gateway.filter.GatewayFilterChain; +import org.springframework.cloud.gateway.filter.GlobalFilter; +import org.springframework.core.Ordered; +import org.springframework.http.HttpMethod; +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.stereotype.Component; +import org.springframework.web.server.ServerWebExchange; +import reactor.core.publisher.Mono; + +@Component +public class ApiRequestGlobalFilter implements GlobalFilter, Ordered { + + @Override + public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { + ServerHttpRequest request = exchange.getRequest(); + + // 检查请求路径和方法 + if (request.getURI().getPath().equals("/request") && + request.getMethod() == HttpMethod.POST) { + + // 在此处添加拦截逻辑 + System.out.println("拦截到POST /request请求"); + + } + + // 继续处理请求 + return chain.filter(exchange); + } + + @Override + public int getOrder() { + return 1; // 过滤器执行顺序,数值越小越先执行 + } +} \ No newline at end of file From c24d640de4c0baa30e7d57546b59f191eb5e02e9 Mon Sep 17 00:00:00 2001 From: xiaohucoding <2307520758@qq.com> Date: Mon, 26 May 2025 21:56:51 +0800 Subject: [PATCH 49/50] =?UTF-8?q?=E5=85=A8=E5=B1=80=E6=8B=A6=E6=88=AA?= =?UTF-8?q?=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/WorkReport/2025-05-hky.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/doc/WorkReport/2025-05-hky.md b/doc/WorkReport/2025-05-hky.md index 7fc9fad..2711707 100644 --- a/doc/WorkReport/2025-05-hky.md +++ b/doc/WorkReport/2025-05-hky.md @@ -77,7 +77,7 @@ redis的服务器配置 ### 📅 明日计划 完成服务发布的开发 -## 2025年5月22日 +## 2025年5月23日 ### ✅ 今日完成 服务发布,拦截器部分功能 @@ -90,4 +90,17 @@ redis的服务器配置 ### 📅 明日计划 完成拦截器功能 +## 2025年5月26日 +### ✅ 今日完成 +服务调度 + +### 🚧 进行中 +无 + +### ⚠️ 问题/障碍 +暂无 + +### 📅 明日计划 +已完成 + From 789108aaa3ce1f92eccebdcffe9a2dd323ecfa2c Mon Sep 17 00:00:00 2001 From: NingHuan <2139614357@qq.com> Date: Fri, 30 May 2025 13:09:47 +0800 Subject: [PATCH 50/50] =?UTF-8?q?[=E6=8F=90=E4=BA=A4]:=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=BA=86=E6=9F=A5=E8=AF=A2=E6=95=B0=E6=8D=AE=E9=9B=86=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=92=8C=E7=94=9F=E5=91=BD=E5=91=A8=E6=9C=9F=E5=88=97?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ModelController.java | 16 +++++++++++++++ .../mapper/ModelMapper.java | 12 +++++++---- .../service/Impl/ModelServiceImpl.java | 20 +++++++++++++++++++ .../service/ModelService.java | 10 ++++++---- 4 files changed, 50 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java index 11012ae..f78cebd 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java @@ -9,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Map; @Slf4j @RestController @@ -75,5 +76,20 @@ public class ModelController { return OptResult.success(); } + @Operation(summary = "查询生命周期列表") + @GetMapping("/listLifeCycle") + public OptResult listLifeCycle(){ + log.info("查询生命周期列表"); + List> lifeCycleList = modelService.listLifeCycle(); + return OptResult.success(lifeCycleList); + } + + @Operation(summary = "查询数据集列表") + @GetMapping("/listDataset") + public OptResult listDataset(){ + List datasetList = modelService.listDataset(); + return OptResult.success(datasetList); + } + } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java index fb3106f..c8d5e03 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java @@ -1,9 +1,6 @@ package com.bipt.intelligentapplicationorchestrationservice.mapper; -import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelInfo; -import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVO; -import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersion; -import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersionDTO; +import com.bipt.intelligentapplicationorchestrationservice.pojo.*; import org.apache.ibatis.annotations.*; import java.util.List; @@ -72,4 +69,11 @@ public interface ModelMapper { */ @Update("update model_version set life_cycle=#{dbValue} where id=#{id}") int updateLifeCycleById(Long id, String dbValue); + + /** + * 查询数据集列表 + * @return + */ + @Select("select dataset_id,dataset_name from dataset") + List listDataset(); } 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 cc8d32a..8b25ff1 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java @@ -12,7 +12,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.util.Arrays; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; @Slf4j @Service @@ -145,4 +148,21 @@ public class ModelServiceImpl implements ModelService { log.info("模型生命周期更新成功,新状态为: {}", targetLifeCycle); } + @Override + public List> listLifeCycle() { + return Arrays.stream(ModelLifecycle.values()) + .map(lifecycle -> Map.of( + "code", lifecycle.name(), // 枚举名称(如 "DESIGNING") + "description", lifecycle.getDescription() // 中文描述(如 "设计中") + )) + .collect(Collectors.toList()); + } + + @Override + public List listDataset() { + List datasetEntityList = modelMapper.listDataset(); + return datasetEntityList; + + } + } diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java index 0933085..dc468f0 100644 --- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java +++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java @@ -1,11 +1,9 @@ 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 com.bipt.intelligentapplicationorchestrationservice.pojo.*; import java.util.List; +import java.util.Map; public interface ModelService { void createModel(ModelDTO dto); @@ -21,4 +19,8 @@ public interface ModelService { void deleteModelVersion(Long id); void updateLifeCycle(Long id, String lifeCycle); + + List> listLifeCycle(); + + List listDataset(); }