Explorar o código

feat(knowledge): list 接口支持 sourceType/excludeSourceType 过滤 + id 稳定分页,移除废弃 /article/list 端点

Xiaogang Liao hai 6 días
pai
achega
0e843f763d

+ 0 - 12
cfc-backend/src/main/java/com/etotem/cfc/controller/HealthKnowledgeBaseController.java

@@ -1,6 +1,5 @@
 package com.etotem.cfc.controller;
 
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.etotem.cfc.common.Result;
 import com.etotem.cfc.entity.HealthKnowledgeBase;
 import com.etotem.cfc.service.HealthKnowledgeBaseService;
@@ -67,17 +66,6 @@ public class HealthKnowledgeBaseController {
         return Result.success(healthKnowledgeBaseService.listAll());
     }
 
-    @Operation(summary = "菌群文章分页列表(item_type=article,供 langgraph 向量库同步,替代 microbiome_article)")
-    @PostMapping("/article/list")
-    public Result<Page<HealthKnowledgeBase>> articleList(@RequestBody(required = false) Map<String, Object> params) {
-        int page = (int) ParamUtils.getLong(params == null ? null : params.get("page"), 1L);
-        int size = (int) ParamUtils.getLong(params == null ? null : params.get("size"), 50L);
-        if (size <= 0 || size > 500) {
-            size = 50;
-        }
-        return Result.success(healthKnowledgeBaseService.pageArticles(page, size));
-    }
-
     @Operation(summary = "新增知识库条目")
     @PostMapping("/add")
     public Result add(@RequestBody HealthKnowledgeBase entity) {

+ 3 - 1
cfc-backend/src/main/java/com/etotem/cfc/controller/admin/KnowledgeBaseController.java

@@ -44,9 +44,11 @@ public class KnowledgeBaseController {
         Integer status = parseInteger(params.get("status"));
         Long tagId = parseLong(params.get("tagId"));
         Long dimensionId = parseLong(params.get("dimensionId"));
+        String sourceType = (String) params.get("sourceType");
+        String excludeSourceType = (String) params.get("excludeSourceType");
         int page = params.get("page") != null ? ((Number) params.get("page")).intValue() : 1;
         int size = params.get("size") != null ? ((Number) params.get("size")).intValue() : 20;
-        return Result.success(danKnowledgeBaseService.list(keyword, status, page, size, tagId, dimensionId));
+        return Result.success(danKnowledgeBaseService.list(keyword, status, page, size, tagId, dimensionId, sourceType, excludeSourceType));
     }
 
     private Integer parseInteger(Object o) {

+ 14 - 2
cfc-backend/src/main/java/com/etotem/cfc/service/DanKnowledgeBaseService.java

@@ -52,11 +52,17 @@ public class DanKnowledgeBaseService extends ServiceImpl<DanKnowledgeBaseMapper,
     private LanggraphSyncService langgraphSyncService;
 
     public Map<String, Object> list(String keyword, Integer status, int page, int size) {
-        return list(keyword, status, page, size, null, null);
+        return list(keyword, status, page, size, null, null, null, null);
     }
 
     public Map<String, Object> list(String keyword, Integer status, int page, int size,
                                     Long tagId, Long dimensionId) {
+        return list(keyword, status, page, size, tagId, dimensionId, null, null);
+    }
+
+    public Map<String, Object> list(String keyword, Integer status, int page, int size,
+                                    Long tagId, Long dimensionId, String sourceType,
+                                    String excludeSourceType) {
         Page<DanKnowledgeBase> p = new Page<>(page, size);
         LambdaQueryWrapper<DanKnowledgeBase> wrapper = new LambdaQueryWrapper<>();
         if (keyword != null && !keyword.isEmpty()) {
@@ -77,7 +83,13 @@ public class DanKnowledgeBaseService extends ServiceImpl<DanKnowledgeBaseMapper,
             wrapper.in(DanKnowledgeBase::getId,
                 ids.isEmpty() ? Collections.singletonList(-1L) : ids);
         }
-        wrapper.orderByAsc(DanKnowledgeBase::getSort);
+        if (sourceType != null && !sourceType.isEmpty()) {
+            wrapper.eq(DanKnowledgeBase::getSourceType, sourceType);
+        }
+        if (excludeSourceType != null && !excludeSourceType.isEmpty()) {
+            wrapper.ne(DanKnowledgeBase::getSourceType, excludeSourceType);
+        }
+        wrapper.orderByAsc(DanKnowledgeBase::getSort).orderByAsc(DanKnowledgeBase::getId);
         this.page(p, wrapper);
 
         SortUtil.applySort(wrapper);

+ 0 - 14
cfc-backend/src/main/java/com/etotem/cfc/service/HealthKnowledgeBaseService.java

@@ -1,7 +1,6 @@
 package com.etotem.cfc.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.etotem.cfc.entity.HealthKnowledgeBase;
 import com.etotem.cfc.mapper.HealthKnowledgeBaseMapper;
 import lombok.extern.slf4j.Slf4j;
@@ -62,19 +61,6 @@ public class HealthKnowledgeBaseService {
         return healthKnowledgeBaseMapper.selectList(null);
     }
 
-    /**
-     * 菌群文章分页列表(item_type='article',按 id 升序保证分页稳定)。
-     * 作为 langgraph 向量库的统一数据源,替代已废弃的 microbiome_article 表。
-     */
-    public Page<HealthKnowledgeBase> pageArticles(int page, int size) {
-        return healthKnowledgeBaseMapper.selectPage(
-                new Page<>(page, size),
-                new LambdaQueryWrapper<HealthKnowledgeBase>()
-                        .eq(HealthKnowledgeBase::getItemType, "article")
-                        .orderByAsc(HealthKnowledgeBase::getId)
-        );
-    }
-
     public void save(HealthKnowledgeBase entry) {
         if (entry.getId() != null) {
             healthKnowledgeBaseMapper.updateById(entry);