Files
SuperBizAgent-java/src/main/java/com/superbiz/agent/service/LookupResultAssembler.java
T

50 lines
2.2 KiB
Java

package com.superbiz.agent.service;
import com.superbiz.agent.dto.ContextPack;
import com.superbiz.agent.dto.EvidencePostprocessResult;
import com.superbiz.agent.dto.LookupResult;
import com.superbiz.agent.dto.RetrievalTrace;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* Assembles evidence-first LookupResult instances.
*/
@Service
public class LookupResultAssembler {
public LookupResult assemble(EvidencePostprocessResult evidence,
ContextPack contextPack,
RetrievalTrace retrievalTrace) {
boolean found = evidence != null && evidence.hasUsableEvidence();
return LookupResult.builder()
.found(found)
.evidenceBlocks(evidence != null ? evidence.getEvidenceBlocks() : List.of())
.evidenceCandidateCount(evidence != null ? evidence.getCandidateCount() : 0)
.evidenceBlockCount(evidence != null ? evidence.getEvidenceBlockCount() : 0)
.contextPack(contextPack)
.retrievalTrace(retrievalTrace)
.rerankTrace(evidence != null ? evidence.getRerankTrace() : null)
.relevanceLevel(evidence != null ? evidence.getRelevanceLevel() : null)
.completenessHint(evidence != null ? evidence.getCompletenessHint() : null)
.message(found ? null : "知识库未检索到可用证据,请结合日志、指标、告警继续排查")
.build();
}
public LookupResult deduped(LookupResult original, List<String> retrievedDomains, String docKey) {
return LookupResult.builder()
.found(false)
.message("文档已在本会话中检索过,无需重复召回: " + docKey)
.evidenceBlocks(List.of())
.evidenceCandidateCount(0)
.evidenceBlockCount(0)
.retrievalTrace(original.getRetrievalTrace())
.rerankTrace(original.getRerankTrace())
.relevanceLevel(original.getRelevanceLevel())
.completenessHint(original.getCompletenessHint())
.retrievedDomainsThisSession(retrievedDomains)
.build();
}
}