diff --git a/src/main/java/com/project/exam/domain/entity/ExamRecordEntity.java b/src/main/java/com/project/exam/domain/entity/ExamRecordEntity.java index 2d7b148..3244c97 100644 --- a/src/main/java/com/project/exam/domain/entity/ExamRecordEntity.java +++ b/src/main/java/com/project/exam/domain/entity/ExamRecordEntity.java @@ -80,10 +80,10 @@ public class ExamRecordEntity extends BaseEntity { @TableField("submit_time") private Date submitTime; - /** 简答题评分状态(0=全部已评分或无需评分,1=有待评分简答题) */ + /** 简答题评分状态(0=全部已评分或无需评分,1=有待评分简答题,2=评分失败) */ @Column(name = "scoring_status") @TableField("scoring_status") - @Comment("简答题评分状态:0-已评分/无需评分,1-待评分") + @Comment("简答题评分状态:2-评分失败,1-已评分/无需评分,0-待评分") private Integer scoringStatus; /** diff --git a/src/main/java/com/project/exam/domain/job/ShortAnswerScoringJob.java b/src/main/java/com/project/exam/domain/job/ShortAnswerScoringJob.java index f72f702..7196bec 100644 --- a/src/main/java/com/project/exam/domain/job/ShortAnswerScoringJob.java +++ b/src/main/java/com/project/exam/domain/job/ShortAnswerScoringJob.java @@ -1,5 +1,6 @@ package com.project.exam.domain.job; +import cn.hutool.core.collection.CollectionUtil; import com.project.exam.domain.entity.ExamRecordEntity; import com.project.exam.mapper.ExamRecordMapper; import com.project.interaction.domain.dto.AiScoringRequestDTO; @@ -83,7 +84,8 @@ public class ShortAnswerScoringJob { // 查询已提交的考试记录 List records = examRecordMapper.selectList( new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper() - .eq(ExamRecordEntity::getScoringStatus , ExamRecordScoringStatusEnum.PENDING.getValue()) + .eq(ExamRecordEntity::getScoringStatus, ExamRecordScoringStatusEnum.PENDING.getValue()) + .isNotNull(ExamRecordEntity::getSubmitTime) .orderByAsc(ExamRecordEntity::getSubmitTime)); if (records.isEmpty()) { @@ -194,6 +196,12 @@ public class ShortAnswerScoringJob { int totalPoints = options.size(); request.setOptions(options); + if (CollectionUtil.isEmpty(options)) { + log.warn(">>> [简答题评分任务] 题目缺少得分点, questionId={}", snapshot.getQuestionId()); + snapshot.setScoringStatus(ExamRecordScoringStatusEnum.FAILED.getValue()); + return; + } + // 调用算法 AiScoringResponseDTO response = postToAiScoringDomainService.requestAiScoring(request);