feat(enlish-service): 新增自动判卷功能及学生单词记忆管理模块

- 支持数据库多语句查询,修改数据源连接配置增加allowMultiQueries参数
- 添加定时任务AutoJudgeExamWordsTask,实现每5秒自动触发判卷
- 增加ExamWordsJudge接口及其实现类ExamWordsJudgeImpl,完成考试判卷逻辑
- 新增多张数据库映射文件及对应Mapper,如ExamWordsDOMapper、ExamWordsJudgeResultDOMapper、StudentExamWordsDOMapper和WordMasteryLogDOMapper,支持相关数据操作
- 扩展PngUtil工具类,支持从答题卡图片中解析学生考试信息和识别未记忆单词
- 修改数据库表结构映射,新增word_mastery_log表和相关字段,管理学生单词记忆强度及复习次数
- 配置@EnableScheduling以启用定时任务调度功能
- 增加测试用例包括ExamWordsJudgeTest和WordMasteryLogInsertTest,验证判卷和学生单词记忆初始化功能
- 重命名测试类TestInsert为TestVocabularyBankInsert,提升代码语义清晰度
This commit is contained in:
lbw
2025-12-14 11:30:26 +08:00
parent a5b23057d3
commit 1002eaf591
22 changed files with 320 additions and 18 deletions

View File

@@ -4,6 +4,7 @@ import com.yinlihupo.enlish.service.domain.dataobject.UnitDO;
import com.yinlihupo.enlish.service.domain.dataobject.VocabularyBankDO;
import com.yinlihupo.enlish.service.domain.mapper.UnitDOMapper;
import com.yinlihupo.enlish.service.domain.mapper.VocabularyBankDOMapper;
import com.yinlihupo.enlish.service.domain.mapper.WordMasteryLogDOMapper;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Row;
@@ -20,12 +21,14 @@ import java.util.HashMap;
@SpringBootTest
@Slf4j
public class TestInsert {
public class TestVocabularyBankInsert {
@Resource
private VocabularyBankDOMapper vocabularyBankMapper;
@Resource
private UnitDOMapper unitDOMapper;
@Resource
private WordMasteryLogDOMapper wordMasteryLogDOMapper;
@Test
void test() {

View File

@@ -0,0 +1,28 @@
package com.yinlihupo.enlish.service.mapper;
import com.yinlihupo.enlish.service.domain.mapper.UnitDOMapper;
import com.yinlihupo.enlish.service.domain.mapper.VocabularyBankDOMapper;
import com.yinlihupo.enlish.service.domain.mapper.WordMasteryLogDOMapper;
import jakarta.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
public class WordMasteryLogInsertTest {
@Resource
private VocabularyBankDOMapper vocabularyBankMapper;
@Resource
private UnitDOMapper unitDOMapper;
@Resource
private WordMasteryLogDOMapper wordMasteryLogDOMapper;
@Test
void test() {
List<Integer> integers = vocabularyBankMapper.selectAllIds();
wordMasteryLogDOMapper.batchInsertInitialization(integers, 1);
}
}

View File

@@ -42,7 +42,7 @@ public class TestOmr {
public void testInteger(){
String filePath = "C:\\project\\java\\enlish_edu\\enlish\\enlish-service\\src\\main\\resources\\templates\\p3.png";
List<CoordinatesXY> coordinatesXIES = PngUtil.analysisXY(filePath);
StudentExamId studentExamId = PngUtil.analyzeExamWordsId(filePath, tessdataPath, coordinatesXIES);
StudentExamId studentExamId = PngUtil.analyzeExamWordsIdAndStudentId(filePath, tessdataPath, coordinatesXIES);
log.info("studentExamId:{}",studentExamId);
}
}

View File

@@ -0,0 +1,19 @@
package com.yinlihupo.enlish.service.service.exam;
import com.yinlihupo.enlish.service.service.ExamWordsJudge;
import jakarta.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class ExamWordsJudgeTest {
@Resource
private ExamWordsJudge examWordsJudge;
@Test
public void judgeExamWords() {
examWordsJudge.judgeExamWords(1);
}
}