fix(knowledge): preserve retrieved evidence

This commit is contained in:
key
2026-07-30 23:24:34 +08:00
parent a5c835ddd8
commit 6a29f9900c
2 changed files with 18 additions and 1 deletions
@@ -3167,7 +3167,8 @@ public class AihrSopSeedService {
return rawHitResponse(responseCategory, queryText, List.copyOf(docs.values()), snippets, extraCautions); return rawHitResponse(responseCategory, queryText, List.copyOf(docs.values()), snippets, extraCautions);
} }
if (isNoEvidenceAnswer(digest.answer())) { if (isNoEvidenceAnswer(digest.answer())) {
return noEvidenceResponse(queryText, responseCategory, appendCautions(digest.cautions(), extraCautions)); return rawHitResponse(responseCategory, queryText, List.copyOf(docs.values()), snippets,
appendCautions(digest.cautions(), extraCautions));
} }
return new SearchResponse( return new SearchResponse(
queryText, queryText,
@@ -45,6 +45,22 @@ public class AihrSopSeedServiceTest {
assertTrue(response.cautions().contains("未生成结构化概要,已返回命中原文片段。")); assertTrue(response.cautions().contains("未生成结构化概要,已返回命中原文片段。"));
} }
@Test
@Tag("dev")
public void digestCannotDiscardAlreadyRetrievedEvidence() throws Exception {
Path source = Path.of("src/main/java/org/dromara/aihr/service/AihrSopSeedService.java");
if (!Files.exists(source)) {
source = Path.of("ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrSopSeedService.java");
}
String code = Files.readString(source).replace("\r\n", "\n");
String method = code.substring(code.indexOf("private SearchResponse responseFromHits("),
code.indexOf("static List<KnowledgeHit> evidenceHits"));
assertTrue(method.contains("if (isNoEvidenceAnswer(digest.answer()))"));
assertTrue(method.contains("return rawHitResponse("));
assertFalse(method.contains("return noEvidenceResponse("));
}
@Test @Test
@Tag("dev") @Tag("dev")