diff --git a/src/main/java/com/project/milvus/application/impl/MilvusApplicationServiceImpl.java b/src/main/java/com/project/milvus/application/impl/MilvusApplicationServiceImpl.java index 311cc15..0255523 100644 --- a/src/main/java/com/project/milvus/application/impl/MilvusApplicationServiceImpl.java +++ b/src/main/java/com/project/milvus/application/impl/MilvusApplicationServiceImpl.java @@ -45,7 +45,7 @@ public class MilvusApplicationServiceImpl implements MilvusApplicationService { // 1. 基础参数校验(在锁外,快速失败) checkMilvusDomainService.checkBasic(title); - String lockKey = buildLockKey(title.getPointIdsList()); + String lockKey = buildLockKey(title.getAtomIdsList()); RLock lock = redissonClient.getLock(lockKey); boolean locked = false; @@ -103,11 +103,12 @@ public class MilvusApplicationServiceImpl implements MilvusApplicationService { private QuestionDTO buildQuestionDTO(TitleVector title) { QuestionDTO questionDTO = new QuestionDTO(); questionDTO.setUseStatus(false); - questionDTO.setKpIdList(title.getPointIdsList()); + questionDTO.setKpIdList(title.getAtomIdsList()); questionDTO.setUniqueHash(title.getUniqueHash()); questionDTO.setClusterId(title.getClusterId()); questionDTO.setQuestionType(title.QuestionDetailDTO.getType()); questionDTO.setQuestionDetailDTO(title.QuestionDetailDTO); + questionDTO.setTaskId(title.getTaskId()); return questionDTO; } diff --git a/src/main/java/com/project/milvus/domain/dto/TitleVector.java b/src/main/java/com/project/milvus/domain/dto/TitleVector.java index 41b8086..a45303e 100644 --- a/src/main/java/com/project/milvus/domain/dto/TitleVector.java +++ b/src/main/java/com/project/milvus/domain/dto/TitleVector.java @@ -15,18 +15,20 @@ import java.util.stream.Collectors; public class TitleVector { public Long id; //知识点ID - public List pointIds; + public List atomIds; //题目向量 public List titleVector; //题目唯一标识 private String uniqueHash; //知识点簇 private Long clusterId; + //任务ID + private Long taskId; //题目内容 public QuestionDTO.QuestionDetailDTO QuestionDetailDTO; - public String getPointIdsHash() { - List sorted = new ArrayList<>(pointIds); + public String getAtomIdsHash() { + List sorted = new ArrayList<>(atomIds); Collections.sort(sorted); String canonical = sorted.stream() .map(String::valueOf) @@ -35,8 +37,8 @@ public class TitleVector { return DigestUtils.md5Hex(canonical); } - public List getPointIdsList() { - List sorted = new ArrayList<>(pointIds); + public List getAtomIdsList() { + List sorted = new ArrayList<>(atomIds); Collections.sort(sorted); return sorted; } diff --git a/src/main/java/com/project/milvus/domain/service/impl/CheckMilvusDomainServiceImpl.java b/src/main/java/com/project/milvus/domain/service/impl/CheckMilvusDomainServiceImpl.java index 3882699..e29e737 100644 --- a/src/main/java/com/project/milvus/domain/service/impl/CheckMilvusDomainServiceImpl.java +++ b/src/main/java/com/project/milvus/domain/service/impl/CheckMilvusDomainServiceImpl.java @@ -38,7 +38,7 @@ public class CheckMilvusDomainServiceImpl implements CheckMilvusDomainService { throw new MissingParameterException("请求参数缺失或格式错误"); } - List pointIdsList = title.getPointIdsList(); + List pointIdsList = title.getAtomIdsList(); List titleVectorList = title.getTitleVectorList(); if (CollectionUtil.isEmpty(pointIdsList) || CollectionUtil.isEmpty(titleVectorList)) { @@ -49,6 +49,11 @@ public class CheckMilvusDomainServiceImpl implements CheckMilvusDomainService { throw new MissingParameterException("所属知识点簇ID不能为空"); } + if (title.getTaskId() == null){ + throw new MissingParameterException("考试任务ID不能为空"); + } + + if(titleVectorList.size() != 1024){ throw new MissingParameterException("向量格式错误"); } @@ -107,7 +112,7 @@ public class CheckMilvusDomainServiceImpl implements CheckMilvusDomainService { } public String buildQuestionHash(QuestionDTO.QuestionDetailDTO detailDTO, TitleVector title){ //查询知识点并提取非空的 parseName - List knowledgePointEntities = knowledgePointBaseService.listByIds(title.getPointIdsList()); + List knowledgePointEntities = knowledgePointBaseService.listByIds(title.getAtomIdsList()); if (CollectionUtils.isEmpty(knowledgePointEntities)) { throw new IllegalArgumentException("知识点不存在"); // 空值防护 } @@ -129,7 +134,7 @@ public class CheckMilvusDomainServiceImpl implements CheckMilvusDomainService { //生成最终哈希(拆分拼接逻辑,提升可读性;增加分隔符避免字符串拼接歧义) String rawContent = String.format("%s|%s|%s", StringUtils.isNotBlank(detailDTO.getQuestionContent()) ? detailDTO.getQuestionContent() : "", - StringUtils.isNotBlank(title.getPointIdsHash()) ? title.getPointIdsHash() : "", + StringUtils.isNotBlank(title.getAtomIdsHash()) ? title.getAtomIdsHash() : "", DigestUtils.md5Hex(canonicalKnowledgePoints) ); return DigestUtils.md5Hex(rawContent); diff --git a/src/main/java/com/project/milvus/domain/service/impl/MilvusDemoServiceImpl.java b/src/main/java/com/project/milvus/domain/service/impl/MilvusDemoServiceImpl.java index c1fceb7..16012a0 100644 --- a/src/main/java/com/project/milvus/domain/service/impl/MilvusDemoServiceImpl.java +++ b/src/main/java/com/project/milvus/domain/service/impl/MilvusDemoServiceImpl.java @@ -83,7 +83,7 @@ public class MilvusDemoServiceImpl implements MilvusDemoService { JsonObject vector = new JsonObject(); vector.addProperty("id", title.getId()); - vector.addProperty("point_ids", title.getPointIdsHash()); + vector.addProperty("point_ids", title.getAtomIdsHash()); vector.add("title_vector", title.getTitleVectorJson()); InsertReq insertReq = InsertReq.builder() @@ -113,7 +113,7 @@ public class MilvusDemoServiceImpl implements MilvusDemoService { public List> query(TitleVector title){ QuestionTypeEnum questionTypeEnum = QuestionTypeEnum.findByValue(title.getQuestionDetailDTO().getType()); - String expr = String.format("point_ids == '%s'", title.getPointIdsHash()); + String expr = String.format("point_ids == '%s'", title.getAtomIdsHash()); SearchResp searchReq = client.search(SearchReq.builder() .collectionName(COLLECTION_NAME+questionTypeEnum.getType())