feat(studio): 补齐剩余工作台聚合接口与真实对接
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
package com.bruce.rag.ingestion;
|
||||
|
||||
import com.bruce.modelprovider.dto.response.RagStoreModelConfigResponse;
|
||||
import com.bruce.modelprovider.service.IRagStoreModelConfigService;
|
||||
import com.bruce.rag.dto.response.RagDocumentResponse;
|
||||
import com.bruce.rag.dto.response.RagStoreResponse;
|
||||
import com.bruce.rag.entity.RagChunk;
|
||||
import com.bruce.rag.entity.RagChunkEmbedding;
|
||||
import com.bruce.rag.entity.RagDocumentParseResult;
|
||||
import com.bruce.rag.service.IRagChunkEmbeddingService;
|
||||
import com.bruce.rag.service.IRagChunkService;
|
||||
import com.bruce.rag.service.IRagDocumentParseResultService;
|
||||
import com.bruce.rag.service.IRagDocumentService;
|
||||
import com.bruce.rag.service.IRagStoreService;
|
||||
import com.bruce.rag.service.impl.IngestionRunServiceImpl;
|
||||
import com.bruce.rag.vo.IngestionRunVO;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class IngestionRunServiceTests {
|
||||
|
||||
@Mock
|
||||
private IRagStoreService ragStoreService;
|
||||
|
||||
@Mock
|
||||
private IRagDocumentService ragDocumentService;
|
||||
|
||||
@Mock
|
||||
private IRagDocumentParseResultService ragDocumentParseResultService;
|
||||
|
||||
@Mock
|
||||
private IRagChunkService ragChunkService;
|
||||
|
||||
@Mock
|
||||
private IRagChunkEmbeddingService ragChunkEmbeddingService;
|
||||
|
||||
@Mock
|
||||
private IRagStoreModelConfigService ragStoreModelConfigService;
|
||||
|
||||
@InjectMocks
|
||||
private IngestionRunServiceImpl ingestionRunService;
|
||||
|
||||
@Test
|
||||
void getRunShouldAggregatePipelinePreviewAndLogs() {
|
||||
RagStoreResponse store = new RagStoreResponse();
|
||||
store.setId(1001L);
|
||||
store.setStoreCode("PROD_DOC");
|
||||
store.setStoreName("产品制度库");
|
||||
|
||||
RagDocumentResponse document = new RagDocumentResponse();
|
||||
document.setId(11L);
|
||||
document.setStoreId(1001L);
|
||||
document.setAttachmentId(901L);
|
||||
document.setDocumentTitle("售前方案模板.pdf");
|
||||
document.setParseStatus("PARSED");
|
||||
document.setIndexStatus("INDEXED");
|
||||
document.setCreateTime(new Date(1748780000000L));
|
||||
document.setUpdateTime(new Date(1748780300000L));
|
||||
|
||||
RagDocumentParseResult parseResult = new RagDocumentParseResult();
|
||||
parseResult.setDocumentId(11L);
|
||||
parseResult.setParsedText("私有化部署章节应覆盖基础设施、网络、安全与运维边界。平台需说明模型服务商、知识库索引策略与日志留存周期。");
|
||||
parseResult.setTextLength(1280);
|
||||
parseResult.setPageCount(12);
|
||||
parseResult.setCreateTime(new Date(1748780100000L));
|
||||
|
||||
RagChunk chunk = new RagChunk();
|
||||
chunk.setDocumentId(11L);
|
||||
chunk.setChunkIndex(24);
|
||||
chunk.setChunkSummary("chunk_size=800, overlap=120, strategy=FIXED_LENGTH");
|
||||
chunk.setChunkContent("该切片将进入 rag_chunk 并在向量化后写入 rag_chunk_embedding。");
|
||||
chunk.setCreateTime(new Date(1748780200000L));
|
||||
|
||||
RagChunkEmbedding embedding = new RagChunkEmbedding();
|
||||
embedding.setDocumentId(11L);
|
||||
embedding.setEmbeddingDimension(1024);
|
||||
embedding.setCreateTime(new Date(1748780250000L));
|
||||
|
||||
RagStoreModelConfigResponse config = new RagStoreModelConfigResponse();
|
||||
config.setStoreId(1001L);
|
||||
config.setEmbeddingModelId(88L);
|
||||
config.setEmbeddingDimension(1024);
|
||||
config.setChunkStrategy(1);
|
||||
config.setChunkSize(800);
|
||||
config.setChunkOverlap(120);
|
||||
|
||||
when(ragStoreService.getResponseById(1001L)).thenReturn(store);
|
||||
when(ragDocumentService.getResponseById(11L)).thenReturn(document);
|
||||
when(ragDocumentParseResultService.getByDocumentId(11L)).thenReturn(parseResult);
|
||||
when(ragChunkService.list(org.mockito.ArgumentMatchers.<com.baomidou.mybatisplus.core.conditions.Wrapper<RagChunk>>any()))
|
||||
.thenReturn(List.of(chunk));
|
||||
when(ragChunkEmbeddingService.list(org.mockito.ArgumentMatchers.<com.baomidou.mybatisplus.core.conditions.Wrapper<RagChunkEmbedding>>any()))
|
||||
.thenReturn(List.of(embedding));
|
||||
when(ragStoreModelConfigService.getByStoreId(1001L)).thenReturn(config);
|
||||
|
||||
IngestionRunVO view = ingestionRunService.getRun(1001L, 11L);
|
||||
|
||||
assertNotNull(view);
|
||||
assertEquals(1001L, view.getStoreId());
|
||||
assertEquals(11L, view.getDocumentId());
|
||||
assertEquals("PROD_DOC", view.getStoreCode());
|
||||
assertEquals("产品制度库", view.getStoreName());
|
||||
assertEquals(1, view.getFiles().size());
|
||||
assertEquals(5, view.getSteps().size());
|
||||
assertEquals("done", view.getSteps().get(1).getStatus());
|
||||
assertEquals("done", view.getSteps().get(2).getStatus());
|
||||
assertEquals("done", view.getSteps().get(3).getStatus());
|
||||
assertEquals("done", view.getSteps().get(4).getStatus());
|
||||
assertEquals(88L, view.getEmbeddingModelId());
|
||||
assertEquals(1024, view.getEmbeddingDimension());
|
||||
assertEquals(800, view.getChunkSize());
|
||||
assertEquals(120, view.getChunkOverlap());
|
||||
assertEquals(4, view.getLogs().size());
|
||||
assertEquals("售前方案模板.pdf", view.getFiles().get(0).getFileName());
|
||||
assertEquals(true, view.getParsedTextPreview().contains("私有化部署章节"));
|
||||
assertEquals(true, view.getChunkPreview().contains("chunk_size=800"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user