From 05a9260eb19a7489d0b5fa225615a08cd030dcb9 Mon Sep 17 00:00:00 2001
From: CJL6015 <1253368419@qq.com>
Date: Sun, 30 Nov 2025 18:11:04 +0800
Subject: [PATCH] =?UTF-8?q?feat(alert):=20=E5=AE=9E=E7=8E=B0=E8=AF=84?=
=?UTF-8?q?=E4=BC=B0=E6=8A=A5=E5=91=8A=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?=
=?UTF-8?q?=E5=A2=9E=E5=BC=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 新增评估报告列表查询接口,支持按模型ID、版本和有效性过滤
- 新增算法评估配置查询接口,获取底线分数等条件
- 新增旧表 Assess_Report_CFG 兼容插入接口
- 新增评估报告名称查询接口,按模型ID和版本生成RV+时间格式名称
- 修改评估结果响应VO字段类型,durationSeconds、coverage等改为Double并设置默认值
- 完善模型下装逻辑,增加评估报告校验和版本关联
- 新增模型草稿版本创建和历史版本列表查询功能
- 优化模型信息查询,支持指定版本读取
- 增强JSON序列化配置,添加字段别名支持
- 更新相关实体类和Mapper定义
---
.../yudao-module-alert-biz/pom.xml | 6 +
.../assessreport/AssessReportController.java | 37 ++++
.../vo/AssessConditionRespVO.java | 13 ++
.../assessreport/vo/AssessEvaluateRespVO.java | 6 +-
.../vo/AssessReportCreateReqVO.java | 3 +
.../vo/AssessReportNameRespVO.java | 17 ++
.../vo/AssessReportSimpleRespVO.java | 35 ++++
.../admin/model/ModelController.java | 34 +++-
.../admin/model/model/ModelInfo.java | 6 +-
.../controller/admin/model/model/Point.java | 10 +-
.../admin/model/vo/BottomModelReqVO.java | 15 ++
.../admin/model/vo/ModelSimpleVO.java | 5 +
.../admin/model/vo/ModelVersionSimpleVO.java | 16 ++
.../controller/admin/model/vo/TrainInfo.java | 6 +
.../dataobject/model/ModelConditionDO.java | 22 +++
.../dal/mysql/model/ModelConditionMapper.java | 9 +
.../alert/dao/domain/AssessReportCfg.java | 49 +++++
.../module/alert/dao/domain/ModelVersion.java | 5 +-
.../dao/mapper/AssessReportCfgMapper.java | 18 ++
.../alert/dao/mapper/ModelVersionMapper.java | 4 +-
.../dao/service/AssessReportCfgService.java | 13 ++
.../dao/service/ModelVersionService.java | 4 +-
.../impl/AssessReportCfgServiceImpl.java | 22 +++
.../service/impl/ModelVersionServiceImpl.java | 4 +-
.../assessreport/AssessReportService.java | 20 ++
.../impl/AssessReportServiceImpl.java | 180 ++++++++++++++++--
.../alert/service/model/ModelService.java | 20 +-
.../service/model/impl/ModelServiceImpl.java | 131 ++++++++++++-
.../dao/mapper/AssessReportCfgMapper.xml | 33 ++++
.../alert/dao/mapper/ModelVersionMapper.xml | 45 +++++
30 files changed, 745 insertions(+), 43 deletions(-)
create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/vo/AssessConditionRespVO.java
create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/vo/AssessReportNameRespVO.java
create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/vo/AssessReportSimpleRespVO.java
create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/BottomModelReqVO.java
create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelVersionSimpleVO.java
create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/model/ModelConditionDO.java
create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/model/ModelConditionMapper.java
create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/AssessReportCfg.java
create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/AssessReportCfgMapper.java
create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/AssessReportCfgService.java
create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/AssessReportCfgServiceImpl.java
create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/resources/cn/iocoder/yudao/module/alert/dao/mapper/AssessReportCfgMapper.xml
create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/resources/cn/iocoder/yudao/module/alert/dao/mapper/ModelVersionMapper.xml
diff --git a/yudao-module-alert/yudao-module-alert-biz/pom.xml b/yudao-module-alert/yudao-module-alert-biz/pom.xml
index f225cdc..31e5143 100644
--- a/yudao-module-alert/yudao-module-alert-biz/pom.xml
+++ b/yudao-module-alert/yudao-module-alert-biz/pom.xml
@@ -68,6 +68,12 @@
2.4.2-SNAPSHOT
compile
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.14
+ compile
+
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/AssessReportController.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/AssessReportController.java
index 2c6401e..0be29c8 100644
--- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/AssessReportController.java
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/AssessReportController.java
@@ -7,6 +7,8 @@ import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
+import java.util.List;
+
/**
* 评估报告相关接口(从旧 GetData.asmx 迁移)
*/
@@ -49,6 +51,24 @@ public class AssessReportController {
return CommonResult.success(assessReportService.save(reqVO));
}
+ /**
+ * 获取评估报告列表(供下装选择)
+ */
+ @GetMapping("/list")
+ public CommonResult> list(@RequestParam Integer modelId,
+ @RequestParam(required = false) String version,
+ @RequestParam(required = false, defaultValue = "true") Boolean valid) {
+ return CommonResult.success(assessReportService.list(modelId, version, valid));
+ }
+
+ /**
+ * 获取算法对应的评估配置(底线分数等)
+ */
+ @GetMapping("/condition")
+ public CommonResult condition(@RequestParam String algorithm) {
+ return CommonResult.success(assessReportService.getCondition(algorithm));
+ }
+
/**
* 数据清洗概要信息
*/
@@ -56,4 +76,21 @@ public class AssessReportController {
public CommonResult cleanSummary(@Validated AssessCleanQueryReqVO reqVO) {
return CommonResult.success(assessReportService.cleanSummary(reqVO));
}
+
+ /**
+ * 兼容旧表 Assess_Report_CFG 的插入
+ */
+ @PostMapping("/legacy")
+ public CommonResult insertLegacy(@RequestBody @Validated AssessReportCreateReqVO reqVO) {
+ return CommonResult.success(assessReportService.insertLegacyReport(reqVO));
+ }
+
+ /**
+ * 查询评估报告名称(按模型ID和版本,从 Assess_Report_CFG 生成 RV+时间)
+ */
+ @GetMapping("/name")
+ public CommonResult> listNames(@RequestParam Integer modelId,
+ @RequestParam(required = false) String version) {
+ return CommonResult.success(assessReportService.listReportNames(modelId, version));
+ }
}
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/vo/AssessConditionRespVO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/vo/AssessConditionRespVO.java
new file mode 100644
index 0000000..47245cd
--- /dev/null
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/vo/AssessConditionRespVO.java
@@ -0,0 +1,13 @@
+package cn.iocoder.yudao.module.alert.controller.admin.assessreport.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class AssessConditionRespVO {
+ @Schema(description = "模型底线分数")
+ private Double modelScore;
+
+ @Schema(description = "条件配置原文")
+ private String condition;
+}
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/vo/AssessEvaluateRespVO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/vo/AssessEvaluateRespVO.java
index b5f6996..176a025 100644
--- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/vo/AssessEvaluateRespVO.java
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/vo/AssessEvaluateRespVO.java
@@ -12,11 +12,11 @@ public class AssessEvaluateRespVO {
private List points;
@Schema(description = "评估耗时秒")
- private Long durationSeconds;
+ private Double durationSeconds = 0d;
@Schema(description = "覆盖率")
- private Double coverage;
+ private Double coverage = 0d;
@Schema(description = "清洗耗时秒")
- private Long cleanDurationSeconds;
+ private Double cleanDurationSeconds = 0d;
}
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/vo/AssessReportCreateReqVO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/vo/AssessReportCreateReqVO.java
index 4d99183..b7ecd4c 100644
--- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/vo/AssessReportCreateReqVO.java
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/vo/AssessReportCreateReqVO.java
@@ -46,4 +46,7 @@ public class AssessReportCreateReqVO {
@Schema(description = "模式名称")
private String conditionName;
+
+ @Schema(description = "原始报告JSON串(旧表插入用)")
+ private String rawReport;
}
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/vo/AssessReportNameRespVO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/vo/AssessReportNameRespVO.java
new file mode 100644
index 0000000..c33b32f
--- /dev/null
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/vo/AssessReportNameRespVO.java
@@ -0,0 +1,17 @@
+package cn.iocoder.yudao.module.alert.controller.admin.assessreport.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 评估报告名称响应
+ */
+@Data
+public class AssessReportNameRespVO {
+
+ @Schema(description = "报告ID")
+ private Long id;
+
+ @Schema(description = "报告名称,格式 RV<时间>,如 RV2025-11-30T13:57:36")
+ private String name;
+}
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/vo/AssessReportSimpleRespVO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/vo/AssessReportSimpleRespVO.java
new file mode 100644
index 0000000..503886a
--- /dev/null
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/assessreport/vo/AssessReportSimpleRespVO.java
@@ -0,0 +1,35 @@
+package cn.iocoder.yudao.module.alert.controller.admin.assessreport.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 评估报告精简信息(下装选择使用)
+ */
+@Data
+public class AssessReportSimpleRespVO {
+
+ private Integer id;
+
+ @Schema(description = "报告得分")
+ private Double score;
+
+ @Schema(description = "覆盖面")
+ private Double coverRange;
+
+ @Schema(description = "是否有效(已通过验证)")
+ private Boolean validFlag;
+
+ private String identifier;
+
+ private String verifier;
+
+ @Schema(description = "评估时间")
+ private String assessTime;
+
+ private String version;
+
+ private String conditionName;
+}
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 ea241a0..4eea310 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
@@ -32,8 +32,9 @@ public class ModelController {
}
@GetMapping("info/{id}")
- public CommonResult getModelInfo(@PathVariable Integer id) {
- ModelInfoVO modelInfo = modelService.getModelInfo(id);
+ public CommonResult getModelInfo(@PathVariable Integer id,
+ @RequestParam(required = false) String version) {
+ ModelInfoVO modelInfo = modelService.getModelInfo(id, version);
return CommonResult.success(modelInfo);
}
@@ -68,8 +69,33 @@ public class ModelController {
return CommonResult.success(modelTestData);
}
+ /**
+ * 创建草稿版本(v-test)
+ */
+ @PostMapping("/version/new/{id}")
+ public CommonResult createDraft(@PathVariable Integer id) {
+ try {
+ return CommonResult.success(modelService.createDraftVersion(id));
+ } catch (Exception e) {
+ return CommonResult.error(INTERNAL_SERVER_ERROR.getCode(), e.getMessage());
+ }
+ }
+
+ /**
+ * 版本列表
+ */
+ @GetMapping("/version/{id}")
+ public CommonResult> listVersions(@PathVariable Integer id) {
+ return CommonResult.success(modelService.listVersions(id));
+ }
+
@PostMapping("/bottom/{id}")
- public CommonResult bottomModel(@PathVariable Integer id) {
- return CommonResult.success(modelService.bottomModel(id));
+ public CommonResult bottomModel(@PathVariable Integer id, @RequestBody(required = false) BottomModelReqVO reqVO) {
+ try {
+ Long reportId = reqVO != null ? reqVO.getReportId() : null;
+ return CommonResult.success(modelService.bottomModel(id, reportId));
+ } catch (Exception e) {
+ return CommonResult.error(INTERNAL_SERVER_ERROR.getCode(), e.getMessage());
+ }
}
}
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/ModelInfo.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/ModelInfo.java
index 6d5453a..2ff67c2 100644
--- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/ModelInfo.java
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/ModelInfo.java
@@ -1,8 +1,8 @@
package cn.iocoder.yudao.module.alert.controller.admin.model.model;
import cn.iocoder.yudao.module.alert.common.enums.Algorithm;
-import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelInfoVO;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.TrainInfo;
+import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*;
@@ -88,10 +88,12 @@ public class ModelInfo {
private String unit;
@JsonProperty("versionNumber")
+
private Integer versionNumber;
@JsonProperty("alarmmodelset")
+ @JSONField(name = "alarmmodelset")
private AlarmModelSet alarmModelSet;
@JsonProperty("para")
@@ -115,7 +117,7 @@ public class ModelInfo {
private String alarmCondition;
public static AlarmModelSet defaultInit() {
- return new AlarmModelSet("全工况运行", "1==1");
+ return new AlarmModelSet("全工况运行", "1=1");
}
}
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/Point.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/Point.java
index 5d360f9..7a18bc4 100644
--- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/Point.java
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/Point.java
@@ -25,7 +25,7 @@ public class Point {
private BigDecimal Upper;
private Boolean dead;
private Boolean limit;
- private Boolean lock;
+ private Boolean lock = false;
/**
* 残差下限
*/
@@ -34,12 +34,20 @@ public class Point {
* 残差上限
*/
private BigDecimal upperBound;
+ @JsonProperty("TMax")
private BigDecimal TMax;
+ @JsonProperty("TMin")
private BigDecimal TMin;
+ @JsonProperty("TAvg")
private BigDecimal TAvg;
+ @JsonProperty("DMax")
private BigDecimal DMax;
+ @JsonProperty("DMin")
private BigDecimal DMin;
+ @JsonProperty("DAvg")
private BigDecimal DAvg;
+ @JsonProperty("C95")
private BigDecimal C95;
+ @JsonProperty("C99")
private BigDecimal C99;
}
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/BottomModelReqVO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/BottomModelReqVO.java
new file mode 100644
index 0000000..2135dd9
--- /dev/null
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/BottomModelReqVO.java
@@ -0,0 +1,15 @@
+package cn.iocoder.yudao.module.alert.controller.admin.model.vo;
+
+import lombok.Data;
+
+/**
+ * 模型下装请求参数
+ */
+@Data
+public class BottomModelReqVO {
+
+ /**
+ * 评估报告ID(需已通过验证)
+ */
+ private Long reportId;
+}
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelSimpleVO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelSimpleVO.java
index 58e820e..844bc4c 100644
--- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelSimpleVO.java
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelSimpleVO.java
@@ -35,6 +35,11 @@ public class ModelSimpleVO {
*/
private String creator;
+ /**
+ * 当前版本
+ */
+ private String version;
+
/**
* 模型状态
*/
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelVersionSimpleVO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelVersionSimpleVO.java
new file mode 100644
index 0000000..11de1e0
--- /dev/null
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelVersionSimpleVO.java
@@ -0,0 +1,16 @@
+package cn.iocoder.yudao.module.alert.controller.admin.model.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 模型版本精简信息
+ */
+@Data
+public class ModelVersionSimpleVO {
+ private String version;
+ private Date createTime;
+ private Integer status;
+ private String conditionName;
+}
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/TrainInfo.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/TrainInfo.java
index a5e2ec5..97d2668 100644
--- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/TrainInfo.java
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/TrainInfo.java
@@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.alert.controller.admin.model.vo;
+import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -10,17 +11,22 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
public class TrainInfo {
@JsonProperty("Model_info")
+ @JSONField(name = "Model_info")
private ModelInfoDetails modelInfo;
@JsonProperty("Model_type")
+ @JSONField(name = "Model_type")
private String modelType;
@JsonProperty("BeforeCleanSamNum")
+ @JSONField(name = "BeforeCleanSamNum")
private int beforeCleanSamNum;
@JsonProperty("AfterCleanSamNum")
+ @JSONField(name = "AfterCleanSamNum")
private int afterCleanSamNum;
@JsonProperty("CleanOrNot")
+ @JSONField(name = "CleanOrNot")
private boolean cleanOrNot;
}
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/model/ModelConditionDO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/model/ModelConditionDO.java
new file mode 100644
index 0000000..187010c
--- /dev/null
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/model/ModelConditionDO.java
@@ -0,0 +1,22 @@
+package cn.iocoder.yudao.module.alert.dal.dataobject.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 对应表:model_condition
+ */
+@Data
+@TableName("model_condition")
+public class ModelConditionDO {
+
+ @TableId
+ private Long id;
+
+ private String algorithm;
+
+ @TableField("`condition`")
+ private String condition;
+}
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/model/ModelConditionMapper.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/model/ModelConditionMapper.java
new file mode 100644
index 0000000..9ba602e
--- /dev/null
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/model/ModelConditionMapper.java
@@ -0,0 +1,9 @@
+package cn.iocoder.yudao.module.alert.dal.mysql.model;
+
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.alert.dal.dataobject.model.ModelConditionDO;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ModelConditionMapper extends BaseMapperX {
+}
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/AssessReportCfg.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/AssessReportCfg.java
new file mode 100644
index 0000000..b433b40
--- /dev/null
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/AssessReportCfg.java
@@ -0,0 +1,49 @@
+package cn.iocoder.yudao.module.alert.dao.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * @TableName assess_report_cfg
+ */
+@TableName(value ="assess_report_cfg")
+@Data
+public class AssessReportCfg {
+ private Integer id;
+
+ private Integer modelId;
+
+ private String version;
+
+ private String report;
+
+ private Double score;
+
+ private Double coverRange;
+
+ private String valid;
+
+ private String identifier;
+
+ private String verifier;
+
+ private Date time;
+
+ private Integer status;
+
+ private String conditionName;
+
+ private String creator;
+
+ private Date createTime;
+
+ private String updater;
+
+ private Date updateTime;
+
+ private Boolean deleted;
+}
\ No newline at end of file
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/ModelVersion.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/ModelVersion.java
index f54eeda..fb1dda4 100644
--- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/ModelVersion.java
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/ModelVersion.java
@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
import java.util.Date;
import lombok.Data;
@@ -13,7 +12,7 @@ import lombok.Data;
*/
@TableName(value ="model_version")
@Data
-public class ModelVersion implements Serializable {
+public class ModelVersion {
private Integer id;
private Integer modelId;
@@ -67,6 +66,4 @@ public class ModelVersion implements Serializable {
private Date updateTime;
private Boolean deleted;
-
- private static final long serialVersionUID = 1L;
}
\ No newline at end of file
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/AssessReportCfgMapper.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/AssessReportCfgMapper.java
new file mode 100644
index 0000000..96232fe
--- /dev/null
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/AssessReportCfgMapper.java
@@ -0,0 +1,18 @@
+package cn.iocoder.yudao.module.alert.dao.mapper;
+
+import cn.iocoder.yudao.module.alert.dao.domain.AssessReportCfg;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author cjl60
+* @description 针对表【assess_report_cfg】的数据库操作Mapper
+* @createDate 2025-11-30 11:58:22
+* @Entity cn.iocoder.yudao.module.alert.dao.domain.AssessReportCfg
+*/
+public interface AssessReportCfgMapper extends BaseMapper {
+
+}
+
+
+
+
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/ModelVersionMapper.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/ModelVersionMapper.java
index e71e457..cd88366 100644
--- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/ModelVersionMapper.java
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/ModelVersionMapper.java
@@ -4,9 +4,9 @@ import cn.iocoder.yudao.module.alert.dao.domain.ModelVersion;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
-* @author 陈小黑
+* @author cjl60
* @description 针对表【model_version】的数据库操作Mapper
-* @createDate 2025-07-10 16:23:38
+* @createDate 2025-11-30 09:14:52
* @Entity cn.iocoder.yudao.module.alert.dao.domain.ModelVersion
*/
public interface ModelVersionMapper extends BaseMapper {
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/AssessReportCfgService.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/AssessReportCfgService.java
new file mode 100644
index 0000000..ea5fd95
--- /dev/null
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/AssessReportCfgService.java
@@ -0,0 +1,13 @@
+package cn.iocoder.yudao.module.alert.dao.service;
+
+import cn.iocoder.yudao.module.alert.dao.domain.AssessReportCfg;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author cjl60
+* @description 针对表【assess_report_cfg】的数据库操作Service
+* @createDate 2025-11-30 11:58:22
+*/
+public interface AssessReportCfgService extends IService {
+
+}
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/ModelVersionService.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/ModelVersionService.java
index 246ed07..c1a1778 100644
--- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/ModelVersionService.java
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/ModelVersionService.java
@@ -4,9 +4,9 @@ import cn.iocoder.yudao.module.alert.dao.domain.ModelVersion;
import com.baomidou.mybatisplus.extension.service.IService;
/**
-* @author 陈小黑
+* @author cjl60
* @description 针对表【model_version】的数据库操作Service
-* @createDate 2025-07-10 16:23:38
+* @createDate 2025-11-30 09:14:52
*/
public interface ModelVersionService extends IService {
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/AssessReportCfgServiceImpl.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/AssessReportCfgServiceImpl.java
new file mode 100644
index 0000000..e54171b
--- /dev/null
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/AssessReportCfgServiceImpl.java
@@ -0,0 +1,22 @@
+package cn.iocoder.yudao.module.alert.dao.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import cn.iocoder.yudao.module.alert.dao.domain.AssessReportCfg;
+import cn.iocoder.yudao.module.alert.dao.service.AssessReportCfgService;
+import cn.iocoder.yudao.module.alert.dao.mapper.AssessReportCfgMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author cjl60
+* @description 针对表【assess_report_cfg】的数据库操作Service实现
+* @createDate 2025-11-30 11:58:22
+*/
+@Service
+public class AssessReportCfgServiceImpl extends ServiceImpl
+ implements AssessReportCfgService{
+
+}
+
+
+
+
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/ModelVersionServiceImpl.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/ModelVersionServiceImpl.java
index 2805d0a..b3c2a3b 100644
--- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/ModelVersionServiceImpl.java
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/ModelVersionServiceImpl.java
@@ -7,9 +7,9 @@ import cn.iocoder.yudao.module.alert.dao.mapper.ModelVersionMapper;
import org.springframework.stereotype.Service;
/**
-* @author 陈小黑
+* @author cjl60
* @description 针对表【model_version】的数据库操作Service实现
-* @createDate 2025-07-10 16:23:38
+* @createDate 2025-11-30 09:14:52
*/
@Service
public class ModelVersionServiceImpl extends ServiceImpl
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/assessreport/AssessReportService.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/assessreport/AssessReportService.java
index 83a79a1..715d436 100644
--- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/assessreport/AssessReportService.java
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/assessreport/AssessReportService.java
@@ -13,4 +13,24 @@ public interface AssessReportService {
Boolean save(AssessReportCreateReqVO reqVO);
AssessCleanSummaryVO cleanSummary(AssessCleanQueryReqVO reqVO);
+
+ /**
+ * 获取模型的评估报告列表(可按版本、有效性过滤)
+ */
+ java.util.List list(Integer modelId, String version, Boolean onlyValid);
+
+ /**
+ * 获取算法对应的评估配置(底线分数/规则)
+ */
+ AssessConditionRespVO getCondition(String algorithm);
+
+ /**
+ * 兼容旧表 Assess_Report_CFG 的插入
+ */
+ Boolean insertLegacyReport(AssessReportCreateReqVO reqVO);
+
+ /**
+ * 按模型ID和版本查询报告名称列表(从 Assess_Report_CFG 生成 RV+时间)
+ */
+ java.util.List listReportNames(Integer modelId, String version);
}
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 2396546..1943044 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
@@ -7,16 +7,22 @@ import cn.iocoder.yudao.framework.common.util.http.HttpUtils;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
import cn.iocoder.yudao.module.alert.controller.admin.assessreport.vo.*;
import cn.iocoder.yudao.module.alert.dao.domain.ModelCfg;
+import cn.iocoder.yudao.module.alert.dao.domain.AssessReportCfg;
import cn.iocoder.yudao.module.alert.dao.domain.ModelVersion;
+import cn.iocoder.yudao.module.alert.dao.mapper.AssessReportCfgMapper;
import cn.iocoder.yudao.module.alert.dao.service.ModelCfgService;
import cn.iocoder.yudao.module.alert.dao.service.ModelVersionService;
import cn.iocoder.yudao.module.alert.dal.dataobject.assessreport.AssessReportDO;
import cn.iocoder.yudao.module.alert.dal.mysql.assessreport.AssessReportMapper;
+import cn.iocoder.yudao.module.alert.dal.dataobject.model.ModelConditionDO;
+import cn.iocoder.yudao.module.alert.dal.mysql.model.ModelConditionMapper;
import cn.iocoder.yudao.module.alert.service.assessreport.AssessReportService;
import com.alibaba.excel.util.DateUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.fasterxml.jackson.core.type.TypeReference;
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
@@ -24,8 +30,6 @@ import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
-import java.time.Duration;
-import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@@ -38,6 +42,8 @@ public class AssessReportServiceImpl implements AssessReportService {
private final ModelCfgService modelCfgService;
private final ModelVersionService modelVersionService;
private final AssessReportMapper assessReportMapper;
+ private final AssessReportCfgMapper assessReportCfgMapper;
+ private final ModelConditionMapper modelConditionMapper;
@Value("${assess-report.host}")
private String algorithmHost;
@Value("${exa.ip:}")
@@ -52,7 +58,8 @@ public class AssessReportServiceImpl implements AssessReportService {
}
String targetVersion = StringUtils.hasText(reqVO.getVersion()) ? reqVO.getVersion() : modelCfg.getCurVersion();
String modelInfoStr = resolveModelInfo(modelCfg, targetVersion);
- Map modelInfo = JsonUtils.parseObject(modelInfoStr, new TypeReference