查看报告详情修改

This commit is contained in:
sunxiqing 2025-01-04 09:50:45 +08:00
parent f8958337de
commit e2a6f9943f
4 changed files with 218 additions and 3 deletions

View File

@ -1,5 +1,8 @@
package cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanualbackup;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskauto.vo.ModelAssessTaskAutoPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskauto.vo.ModelAssessTaskAutoRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ManualEvaluationReportRespVO;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -79,6 +82,23 @@ public class ModelAssessTaskManualBackupController {
return success(BeanUtils.toBean(pageResult, ModelAssessTaskManualBackupRespVO.class));
}
@GetMapping("/automatic-get")
@Operation(summary = "获得模型评估任务 —— 自动评估")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('llm:model-assess-task-auto:query')")
public CommonResult<ModelAssessTaskAutoRespVO> getModelAssessTaskAuto(@RequestParam("id") Long id) {
ModelAssessTaskAutoRespVO result = modelAssessTaskManualBackupService.getModelAssessTaskAuto(id);
return success(result);
}
@GetMapping("/automatic-page")
@Operation(summary = "获得模型评估任务 —— 自动评估分页")
@PreAuthorize("@ss.hasPermission('llm:model-assess-task-auto:query')")
public CommonResult<PageResult<ModelAssessTaskAutoRespVO>> getModelAssessTaskAutoPage(@Valid ModelAssessTaskAutoPageReqVO pageReqVO) {
PageResult<ModelAssessTaskAutoRespVO> pageResult = modelAssessTaskManualBackupService.getModelAssessTaskAutoPage1(pageReqVO);
return success(pageResult);
}
@GetMapping("/export-excel")
@Operation(summary = "导出人工评估备份 Excel")
@PreAuthorize("@ss.hasPermission('llm:model-assess-task-manual-backup:export')")
@ -91,5 +111,14 @@ public class ModelAssessTaskManualBackupController {
ExcelUtils.write(response, "人工评估备份.xls", "数据", ModelAssessTaskManualBackupRespVO.class,
BeanUtils.toBean(list, ModelAssessTaskManualBackupRespVO.class));
}
@GetMapping("/gitReport")
@Operation(summary = "查看报告详情")
@PreAuthorize("@ss.hasPermission('llm:model-assess-task-manual:query')")
public CommonResult<List<ManualEvaluationReportRespVO>> gitViewTheReportDetails(@RequestParam("id") Long id) {
//TODO 人工评估-查看报告待补充
List<ManualEvaluationReportRespVO> manualEvaluationReportRespVOS = modelAssessTaskManualBackupService.gitViewTheReportDetails(id);
return success(manualEvaluationReportRespVOS);
}
}
}

View File

@ -1,8 +1,11 @@
package cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskauto;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskauto.vo.ModelAssessTaskAutoPageReqVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskauto.ModelAssessTaskAutoBackupDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskauto.ModelAssessTaskAutoDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.*;
@ -16,6 +19,18 @@ import java.util.*;
@Mapper
public interface ModelAssessTaskAutoBackupMapper extends BaseMapperX<ModelAssessTaskAutoBackupDO> {
default PageResult<ModelAssessTaskAutoBackupDO> selectPage(ModelAssessTaskAutoPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ModelAssessTaskAutoBackupDO>()
.eq(ModelAssessTaskAutoBackupDO::getDeleted, false)
.likeIfPresent(ModelAssessTaskAutoBackupDO::getTaskName, reqVO.getTaskName())
.eqIfPresent(ModelAssessTaskAutoBackupDO::getTaskInfro, reqVO.getTaskInfro())
.eqIfPresent(ModelAssessTaskAutoBackupDO::getCpuType, reqVO.getCpuType())
.eqIfPresent(ModelAssessTaskAutoBackupDO::getModelService, reqVO.getModelService())
.eqIfPresent(ModelAssessTaskAutoBackupDO::getDataset, reqVO.getDataset())
.betweenIfPresent(ModelAssessTaskAutoBackupDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(ModelAssessTaskAutoBackupDO::getDimension, reqVO.getDimension())
.orderByDesc(ModelAssessTaskAutoBackupDO::getId));
}
}

View File

@ -2,6 +2,10 @@ package cn.iocoder.yudao.module.llm.service.modelassesstaskmanualbackup;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskauto.vo.ModelAssessTaskAutoPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskauto.vo.ModelAssessTaskAutoRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ManualEvaluationReportRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanualbackup.vo.*;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanualbackup.ModelAssessTaskManualBackupDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
@ -57,4 +61,10 @@ public interface ModelAssessTaskManualBackupService {
void unBackup(Long id);
ModelAssessTaskManualBackupRespVO getModelAssessTaskManualBackup1(Long id);
}
List<ManualEvaluationReportRespVO> gitViewTheReportDetails(Long id);
PageResult<ModelAssessTaskAutoRespVO> getModelAssessTaskAutoPage1(ModelAssessTaskAutoPageReqVO pageReqVO);
ModelAssessTaskAutoRespVO getModelAssessTaskAuto(Long id);
}

View File

@ -1,16 +1,32 @@
package cn.iocoder.yudao.module.llm.service.modelassesstaskmanualbackup;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskauto.vo.ModelAssessTaskAutoPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskauto.vo.ModelAssessTaskAutoRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskauto.vo.ModelAssessTaskStoplistRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.LabelInformationVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ManualEvaluationReportRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ModelAssessTaskDimensionRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ModelAssessTaskManualRespVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.basemodel.BaseModelDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.dataset.DatasetDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassessstoplist.ModelAssessStoplistDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskauto.ModelAssessTaskAutoBackupDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskauto.ModelAssessTaskAutoDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskauto.ModelAssessTaskStoplistBackupDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskauto.ModelAssessTaskStoplistDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ManualModelAnswerDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ModelAssessDimensionDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ModelAssessTaskDimensionDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ModelAssessTaskManualDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanualbackup.ManualModelAnswerBackupDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanualbackup.ModelAssessTaskDimensionBackupDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelservice.ModelServiceDO;
import cn.iocoder.yudao.module.llm.dal.mysql.basemodel.BaseModelMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.dataset.DatasetMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.modelassessstoplist.ModelAssessStoplistMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskauto.ModelAssessTaskAutoBackupMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskauto.ModelAssessTaskStoplistBackupMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskauto.ModelAssessTaskStoplistMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskmanual.ManualModelAnswerMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskmanual.ModelAssessDimensionMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskmanualbackup.ManualModelAnswerBackupMapper;
@ -23,6 +39,8 @@ import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;
@ -60,6 +78,12 @@ public class ModelAssessTaskManualBackupServiceImpl implements ModelAssessTaskMa
private DatasetMapper datasetMapper;
@Resource
private BaseModelMapper baseModelMapper;
@Resource
private ModelAssessTaskAutoBackupMapper modelAssessTaskAutoBaackupMapper;
@Resource
private ModelAssessTaskStoplistBackupMapper modelAssessTaskStoplistBackupMapper;
@Resource
private ModelAssessStoplistMapper modelAssessStoplistMapper;
@Override
public Long createModelAssessTaskManualBackup(ModelAssessTaskManualBackupSaveReqVO createReqVO) {
@ -162,4 +186,141 @@ public class ModelAssessTaskManualBackupServiceImpl implements ModelAssessTaskMa
return result;
}
}
@Override
public List<ManualEvaluationReportRespVO> gitViewTheReportDetails(Long id) {
List<ManualEvaluationReportRespVO> manualEvaluationReportRespVOS = new ArrayList<>();
LambdaQueryWrapper<ManualModelAnswerBackupDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ManualModelAnswerBackupDO::getManalTaskId,id)
.eq(ManualModelAnswerBackupDO::getStatus,2)
.isNotNull(ManualModelAnswerBackupDO::getReqRespVos);
List<ManualModelAnswerBackupDO> manualModelAnswerDOS = manualModelAnswerBackupMapper.selectList(wrapper);
// 获取维度
List<String> collect =new ArrayList<>();
if (CollectionUtils.isNotEmpty(manualModelAnswerDOS)){
List<LabelInformationVO> bean = BeanUtils.toBean(manualModelAnswerDOS.get(0).getReqRespVos(), LabelInformationVO.class);
collect = bean.stream().map(LabelInformationVO::getLabel).collect(Collectors.toList());
}
List<LabelInformationVO> labelInformationVOS = new ArrayList<>();
for (ManualModelAnswerBackupDO manualModelAnswerDO : manualModelAnswerDOS){
List<LabelInformationVO> bean = BeanUtils.toBean(manualModelAnswerDO.getReqRespVos(), LabelInformationVO.class);
labelInformationVOS.addAll(bean);
}
if (CollectionUtils.isNotEmpty(labelInformationVOS)){
// 计算平均分
double average = labelInformationVOS.stream().mapToDouble(LabelInformationVO::getScore).average().getAsDouble();
double score = average * 50.0;
ManualEvaluationReportRespVO reportRespVO = new ManualEvaluationReportRespVO();
double bd = new BigDecimal(average).setScale(2, RoundingMode.HALF_UP).doubleValue();
double v = new BigDecimal(score).setScale(2, RoundingMode.HALF_UP).doubleValue();
reportRespVO.setDimension("平均分");
reportRespVO.setScore(bd);
reportRespVO.setPercent(v);
manualEvaluationReportRespVOS.add(reportRespVO);
for (String collect1 : collect){
List<LabelInformationVO> voList = labelInformationVOS.stream().filter(manualModelAnswerDO -> manualModelAnswerDO.getLabel().equals(collect1)).collect(Collectors.toList());
ManualEvaluationReportRespVO reportRespVO1 = new ManualEvaluationReportRespVO();
reportRespVO1.setDimension(collect1);
double average1 = voList.stream().mapToDouble(LabelInformationVO::getScore).average().getAsDouble();
reportRespVO1.setScore(new BigDecimal(average1).setScale(2, RoundingMode.HALF_UP).doubleValue());
reportRespVO1.setPercent(new BigDecimal(average1 * 50.0).setScale(2, RoundingMode.HALF_UP).doubleValue());
long count = voList.stream().filter(manualModelAnswerDO -> manualModelAnswerDO.getScore() == 0).count();
double zeroPercent = (double) count / voList.size() * 100.0;
reportRespVO1.setZeroPercent(new BigDecimal(zeroPercent).setScale(2, RoundingMode.HALF_UP).doubleValue());
long count1 = voList.stream().filter(manualModelAnswerDO -> manualModelAnswerDO.getScore() == 1).count();
long count2 = voList.stream().filter(manualModelAnswerDO -> manualModelAnswerDO.getScore() == 2).count();
double onePercent = (double)count1 / voList.size() * 100.0;
reportRespVO1.setOnePercent(new BigDecimal(onePercent).setScale(2, RoundingMode.HALF_UP).doubleValue());
double twoPercent = (double)count2 / voList.size() * 100.0;
reportRespVO1.setTwoPercent(new BigDecimal(twoPercent).setScale(2, RoundingMode.HALF_UP).doubleValue());
manualEvaluationReportRespVOS.add(reportRespVO1);
}
}
return manualEvaluationReportRespVOS;
}
@Override
public PageResult<ModelAssessTaskAutoRespVO> getModelAssessTaskAutoPage1(ModelAssessTaskAutoPageReqVO pageReqVO) {
PageResult<ModelAssessTaskAutoBackupDO> modelAssessTaskAutoDOPageResult = modelAssessTaskAutoBaackupMapper.selectPage(pageReqVO);
PageResult<ModelAssessTaskAutoRespVO> result = BeanUtils.toBean(modelAssessTaskAutoDOPageResult, ModelAssessTaskAutoRespVO.class);
if (CollectionUtils.isNotEmpty(result.getList())){
// 我的模型获取校验
List<Long> serviceIds = modelAssessTaskAutoDOPageResult.getList().stream().
filter(modelAssessTaskManualDO -> modelAssessTaskManualDO.getModelType() == 0)
.map(ModelAssessTaskAutoBackupDO::getModelService).collect(Collectors.toList());
Map<Long, ModelServiceDO> longModelServiceDOMap = null;
if (!CollectionUtils.isEmpty(serviceIds)){
LambdaQueryWrapper<ModelServiceDO> wrapper = new LambdaQueryWrapper<>();
wrapper.in(ModelServiceDO::getId,serviceIds);
List<ModelServiceDO> modelServiceDOS = modelServiceMapper.selectList(wrapper);
longModelServiceDOMap = cn.iocoder.yudao.framework.common.util.collection.
CollectionUtils.convertMap(modelServiceDOS, ModelServiceDO::getId);
}
// 人工模型获取校验
List<Long> serviceForeseeIds = modelAssessTaskAutoDOPageResult.getList().stream().
filter(modelAssessTaskManualDO -> modelAssessTaskManualDO.getModelType() == 1)
.map(ModelAssessTaskAutoBackupDO::getModelService).collect(Collectors.toList());
Map<Long, BaseModelDO> serviceForeseeMaps = null;
if (!CollectionUtils.isEmpty(serviceForeseeIds)) {
List<BaseModelDO> baseModelDOS = baseModelMapper.selectList(new LambdaQueryWrapper<BaseModelDO>()
.in(BaseModelDO::getId, serviceForeseeIds));
serviceForeseeMaps = cn.iocoder.yudao.framework.common.util.collection.
CollectionUtils.convertMap(baseModelDOS, BaseModelDO::getId);
}
for (ModelAssessTaskAutoRespVO modelAssessTaskManualRespVO : result.getList()){
if (modelAssessTaskManualRespVO.getModelType() == 0 && longModelServiceDOMap != null){
ModelServiceDO modelServiceDO = longModelServiceDOMap.get(modelAssessTaskManualRespVO.getModelService());
if(modelServiceDO != null){
modelAssessTaskManualRespVO.setModelServiceName(modelServiceDO.getServiceName());
}
}else if (modelAssessTaskManualRespVO.getModelType() == 1 && serviceForeseeMaps != null){
BaseModelDO baseModelDO = serviceForeseeMaps.get(modelAssessTaskManualRespVO.getModelService());
if(baseModelDO != null){
modelAssessTaskManualRespVO.setModelServiceName(baseModelDO.getModelName());
}
}
}
}
return result;
}
@Override
public ModelAssessTaskAutoRespVO getModelAssessTaskAuto(Long id) {
ModelAssessTaskAutoBackupDO modelAssessTaskAutoDO = modelAssessTaskAutoBaackupMapper.selectById(id);
ModelAssessTaskAutoRespVO result = BeanUtils.toBean(modelAssessTaskAutoDO, ModelAssessTaskAutoRespVO.class);
// 标注查询
List<ModelAssessTaskStoplistBackupDO> modelAssessTaskStoplistDOS = modelAssessTaskStoplistBackupMapper.selectList(new LambdaQueryWrapper<ModelAssessTaskStoplistBackupDO>()
.eq(ModelAssessTaskStoplistBackupDO::getTaskId, id)
.eq(ModelAssessTaskStoplistBackupDO::getDeleted, false));
List<ModelAssessTaskStoplistRespVO> stoplistRespVOS = BeanUtils.toBean(modelAssessTaskStoplistDOS, ModelAssessTaskStoplistRespVO.class);
// 提取id
List<Long> stoplistIds = modelAssessTaskStoplistDOS.stream().map(ModelAssessTaskStoplistBackupDO::getStoplistId).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(stoplistIds)){
// 查询停用词表 将词表word返回
LambdaQueryWrapper<ModelAssessStoplistDO> wrapper = new LambdaQueryWrapper<>();
wrapper.in(ModelAssessStoplistDO::getId,stoplistIds);
List<ModelAssessStoplistDO> modelAssessStoplistDOs = modelAssessStoplistMapper.selectList(wrapper);
Map<Long, ModelAssessStoplistDO> longModelServiceDOMap = cn.iocoder.yudao.framework.common.util.collection.
CollectionUtils.convertMap(modelAssessStoplistDOs, ModelAssessStoplistDO::getId);
stoplistRespVOS.stream().forEach(stoplistRespVO -> {
ModelAssessStoplistDO modelAssessStoplistDO = longModelServiceDOMap.get(stoplistRespVO.getStoplistId());
if(modelAssessStoplistDO != null){
stoplistRespVO.setStoplistName(modelAssessStoplistDO.getWord());
}
});
}
result.setStoplists(stoplistRespVOS);
ModelServiceDO modelServiceDO = modelServiceMapper.selectById(modelAssessTaskAutoDO.getModelService());
if (modelServiceDO != null){
result.setModelServiceName(modelServiceDO.getServiceName());
}
DatasetDO datasetDO = datasetMapper.selectById(modelAssessTaskAutoDO.getDataset());
if (datasetDO != null){
result.setDatasetName(datasetDO.getDatasetName());
}
return result;
}
}