Skip to content

Commit 4506fa8

Browse files
authored
feat: Enhance AddDataDialog with dataset file selection and improved upload process (#91)
1 parent 5da992d commit 4506fa8

File tree

5 files changed

+740
-238
lines changed

5 files changed

+740
-238
lines changed

backend/services/data-management-service/src/main/java/com/datamate/datamanagement/infrastructure/persistence/repository/impl/DatasetRepositoryImpl.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,14 @@ public AllDatasetStatisticsResponse getAllDatasetStatistics() {
5151
@Override
5252
public IPage<Dataset> findByCriteria(IPage<Dataset> page, DatasetPagingQuery query) {
5353
LambdaQueryWrapper<Dataset> wrapper = new LambdaQueryWrapper<Dataset>()
54-
.eq(query.getType() != null, Dataset::getDatasetType, query.getType())
55-
.eq(query.getStatus() != null, Dataset::getStatus, query.getStatus())
56-
.like(StringUtils.isNotBlank(query.getKeyword()), Dataset::getName, query.getKeyword())
57-
.like(StringUtils.isNotBlank(query.getKeyword()), Dataset::getDescription, query.getKeyword());
54+
.eq(query.getType() != null, Dataset::getDatasetType, query.getType())
55+
.eq(query.getStatus() != null, Dataset::getStatus, query.getStatus());
56+
57+
if (StringUtils.isNotBlank(query.getKeyword())) {
58+
wrapper.and(w ->
59+
w.like(Dataset::getName, query.getKeyword()).or()
60+
.like(Dataset::getDescription, query.getKeyword()));
61+
}
5862

5963
/*
6064
标签过滤 {@link Tag}

backend/services/rag-indexer-service/src/main/java/com/datamate/rag/indexer/application/KnowledgeBaseService.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
import com.datamate.rag.indexer.domain.repository.KnowledgeBaseRepository;
1515
import com.datamate.rag.indexer.domain.repository.RagFileRepository;
1616
import com.datamate.rag.indexer.infrastructure.event.DataInsertedEvent;
17+
import com.datamate.rag.indexer.infrastructure.milvus.MilvusService;
1718
import com.datamate.rag.indexer.interfaces.dto.*;
18-
import io.milvus.client.MilvusClient;
1919
import io.milvus.param.collection.DropCollectionParam;
2020
import io.milvus.param.dml.DeleteParam;
2121
import lombok.RequiredArgsConstructor;
@@ -42,7 +42,7 @@ public class KnowledgeBaseService {
4242
private final RagFileRepository ragFileRepository;
4343
private final ApplicationEventPublisher eventPublisher;
4444
private final ModelConfigRepository modelConfigRepository;
45-
private final MilvusClient milvusClient;
45+
private final MilvusService milvusService;
4646

4747
/**
4848
* 创建知识库
@@ -81,7 +81,7 @@ public void delete(String knowledgeBaseId) {
8181
.orElseThrow(() -> BusinessException.of(KnowledgeBaseErrorCode.KNOWLEDGE_BASE_NOT_FOUND));
8282
knowledgeBaseRepository.removeById(knowledgeBaseId);
8383
ragFileRepository.removeByKnowledgeBaseId(knowledgeBaseId);
84-
milvusClient.dropCollection(DropCollectionParam.newBuilder().withCollectionName(knowledgeBase.getName()).build());
84+
milvusService.getMilvusClient().dropCollection(DropCollectionParam.newBuilder().withCollectionName(knowledgeBase.getName()).build());
8585
}
8686

8787
public KnowledgeBaseResp getById(String knowledgeBaseId) {
@@ -147,7 +147,7 @@ public void deleteFiles(String knowledgeBaseId, DeleteFilesReq request) {
147147
KnowledgeBase knowledgeBase = Optional.ofNullable(knowledgeBaseRepository.getById(knowledgeBaseId))
148148
.orElseThrow(() -> BusinessException.of(KnowledgeBaseErrorCode.KNOWLEDGE_BASE_NOT_FOUND));
149149
ragFileRepository.removeByIds(request.getIds());
150-
milvusClient.delete(DeleteParam.newBuilder()
150+
milvusService.getMilvusClient().delete(DeleteParam.newBuilder()
151151
.withCollectionName(knowledgeBase.getName())
152152
.withExpr("metadata[\"rag_file_id\"] in [" + org.apache.commons.lang3.StringUtils.join(request.getIds().stream().map(id -> "\"" + id + "\"").toArray(), ",") + "]")
153153
.build());

backend/services/rag-indexer-service/src/main/java/com/datamate/rag/indexer/infrastructure/milvus/MilvusService.java

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
import io.milvus.client.MilvusClient;
88
import io.milvus.client.MilvusServiceClient;
99
import io.milvus.param.ConnectParam;
10+
import lombok.extern.slf4j.Slf4j;
1011
import org.springframework.beans.factory.annotation.Value;
11-
import org.springframework.context.annotation.Bean;
1212
import org.springframework.stereotype.Component;
1313

1414
/**
@@ -17,13 +17,16 @@
1717
* @author dallas
1818
* @since 2025-11-17
1919
*/
20+
@Slf4j
2021
@Component
2122
public class MilvusService {
2223
@Value("${datamate.rag.milvus-host:milvus-standalone}")
2324
private String milvusHost;
2425
@Value("${datamate.rag.milvus-port:19530}")
2526
private int milvusPort;
2627

28+
private volatile MilvusClient milvusClient;
29+
2730
public EmbeddingStore<TextSegment> embeddingStore(EmbeddingModel embeddingModel, String knowledgeBaseName) {
2831
return MilvusEmbeddingStore.builder()
2932
.host(milvusHost)
@@ -33,12 +36,24 @@ public EmbeddingStore<TextSegment> embeddingStore(EmbeddingModel embeddingModel,
3336
.build();
3437
}
3538

36-
@Bean
37-
public MilvusClient milvusClient() {
38-
ConnectParam connectParam = ConnectParam.newBuilder()
39-
.withHost(milvusHost)
40-
.withPort(milvusPort)
41-
.build();
42-
return new MilvusServiceClient(connectParam);
39+
public MilvusClient getMilvusClient() {
40+
if (milvusClient == null) {
41+
synchronized (this) {
42+
if (milvusClient == null) {
43+
try {
44+
ConnectParam connectParam = ConnectParam.newBuilder()
45+
.withHost(milvusHost)
46+
.withPort(milvusPort)
47+
.build();
48+
milvusClient = new MilvusServiceClient(connectParam);
49+
log.info("Milvus client connected successfully");
50+
} catch (Exception e) {
51+
log.error("Milvus client connection failed: {}", e.getMessage());
52+
throw new RuntimeException("Milvus client connection failed", e);
53+
}
54+
}
55+
}
56+
}
57+
return milvusClient;
4358
}
4459
}

frontend/src/pages/KnowledgeBase/Detail/KnowledgeBaseDetail.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ const KnowledgeBaseDetailPage: React.FC = () => {
221221
showReload={false}
222222
/>
223223
</div>
224-
<AddDataDialog knowledgeBase={knowledgeBase} />
224+
<AddDataDialog knowledgeBase={knowledgeBase} onDataAdded={handleRefreshPage} />
225225
</div>
226226

227227
<Table

0 commit comments

Comments
 (0)