From 8855d6e11a2f8663d54471bdd97b0a5b3b35b15b Mon Sep 17 00:00:00 2001 From: chenjiale Date: Mon, 1 Dec 2025 21:00:06 +0800 Subject: [PATCH] =?UTF-8?q?feat(alert):=20=E6=B7=BB=E5=8A=A0=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E5=88=A0=E9=99=A4=E5=8A=9F=E8=83=BD=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E8=AF=84=E4=BC=B0=E6=8A=A5=E5=91=8A=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 ModelController 中新增 DELETE /{id} 接口用于删除模型 - 实现 ModelService 的 deleteModel 方法,支持软删除 - 删除 AssessReportServiceImpl 中冗余的覆盖率计算逻辑 - 移除 payload 中不再使用的 coverage、low_f 和 high_f 字段 - 添加 VSCode Java 空值分析配置文件 --- .vscode/settings.json | 3 +++ .../admin/model/ModelController.java | 9 ++++++++ .../impl/AssessReportServiceImpl.java | 12 ---------- .../alert/service/model/ModelService.java | 8 +++++++ .../service/model/impl/ModelServiceImpl.java | 23 +++++++++++++++++++ 5 files changed, 43 insertions(+), 12 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..7b016a8 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.compile.nullAnalysis.mode": "automatic" +} \ No newline at end of file diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/ModelController.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/ModelController.java index 4eea310..b1fe66d 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/ModelController.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/ModelController.java @@ -38,6 +38,15 @@ public class ModelController { return CommonResult.success(modelInfo); } + @DeleteMapping("/{id}") + public CommonResult deleteModel(@PathVariable Integer id) { + try { + return CommonResult.success(modelService.deleteModel(id)); + } catch (Exception e) { + return CommonResult.error(INTERNAL_SERVER_ERROR.getCode(), e.getMessage()); + } + } + @PostMapping("/") public CommonResult saveModel(@RequestBody ModelInitVO model) { Integer id = modelService.createModel(model); diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/assessreport/impl/AssessReportServiceImpl.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/assessreport/impl/AssessReportServiceImpl.java index b819a0d..24994f3 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/assessreport/impl/AssessReportServiceImpl.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/assessreport/impl/AssessReportServiceImpl.java @@ -193,11 +193,6 @@ public class AssessReportServiceImpl implements AssessReportService { } else { throw new RuntimeException(tempAll); } - Double cov = mt.getCoverage(); - if (cov == null) { - cov = fetchCoverage(modelInfo); - } - respVO.setCoverage(cov == null ? 0d : cov); return respVO; } @@ -528,7 +523,6 @@ public class AssessReportServiceImpl implements AssessReportService { payload.setNumber(0); payload.setK(numberVal(modelInfo, "principal") == null ? 0 : numberVal(modelInfo, "principal").intValue()); payload.setVersion(reqVO.getVersion()); - payload.setCoverage(fetchCoverage(modelInfo)); payload.setTest_Data(buildTestData(reqVO, modelInfo, pointRows)); // payload.setLow_f(joinDouble(hi)); // payload.setHigh_f(joinDouble(hi)); @@ -701,14 +695,8 @@ class ModelTestNew { private int number; @com.fasterxml.jackson.annotation.JsonProperty("version") private String version; - @com.fasterxml.jackson.annotation.JsonProperty("low_f") - private String low_f; - @com.fasterxml.jackson.annotation.JsonProperty("high_f") - private String high_f; @com.fasterxml.jackson.annotation.JsonProperty("k") private Integer k; - @com.fasterxml.jackson.annotation.JsonProperty("coverage") - private Double coverage; } diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/ModelService.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/ModelService.java index cdf3b09..b4002d2 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/ModelService.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/ModelService.java @@ -45,6 +45,14 @@ public interface ModelService { */ Boolean updateModelInfo(ModelInfoVO info); + /** + * 删除模型(软删除) + * + * @param id 模型id + * @return 是否成功 + */ + Boolean deleteModel(Integer id); + TrainInfo trainModel(TrainParam param); ModelTestData getModelTestData(ModelTestParam param); diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelServiceImpl.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelServiceImpl.java index f659246..de6a0ad 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelServiceImpl.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelServiceImpl.java @@ -169,6 +169,29 @@ public class ModelServiceImpl implements ModelService { return modelCfgService.updateById(modelCfg); } + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean deleteModel(Integer id) { + ModelCfg modelCfg = modelCfgService.getById(id); + if (Objects.isNull(modelCfg)) { + throw new RuntimeException("模型不存在"); + } + ModelCfg update = ModelCfg.builder() + .id(id) + .trash(ModelTrash.TRASH.code) + .visible(ModelVisible.INVISIBLE.code) + .updateTime(new Date()) + .build(); + boolean result = modelCfgService.updateById(update); + LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate() + .eq(ModelVersion::getModelId, id) + .set(ModelVersion::getTrash, ModelTrash.TRASH.code) + .set(ModelVersion::getVisible, ModelVisible.INVISIBLE.code) + .set(ModelVersion::getUpdateTime, new Date()); + modelVersionService.update(wrapper); + return result; + } + @Override public TrainInfo trainModel(TrainParam param) { String trainBody = HttpUtils.post(algorithmHost + "/api/test/ClearTrain", null, JsonUtils.toJsonString(param));