From d135a7f336834c4f0c6067e395934576a8cd30c9 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sun, 1 Feb 2026 18:46:31 +0800 Subject: [PATCH] =?UTF-8?q?feat(knowledge):=20=E6=B7=BB=E5=8A=A0=E7=9F=A5?= =?UTF-8?q?=E8=AF=86=E5=BA=93=E6=A0=87=E7=AD=BE=E7=BB=9F=E8=AE=A1=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 KnowledgeItemApplicationService 中注入 TagMapper 并调用统计方法 - 新增 countKnowledgeSetTags 方法用于计算知识库中的标签总数 - 在 KnowledgeManagementStatisticsResponse 中添加 totalTags 字段 - 在前端 KnowledgeManagementPage 中显示标签总数统计信息 - 更新统计卡片布局从 3 列改为 4 列以适应新增统计项 - 在知识管理模型中添加 totalTags 类型定义 --- .../KnowledgeItemApplicationService.java | 3 +++ .../persistence/mapper/TagMapper.java | 1 + .../dto/KnowledgeManagementStatisticsResponse.java | 1 + .../src/main/resources/mappers/TagMapper.xml | 13 +++++++++++++ .../Home/KnowledgeManagementPage.tsx | 10 +++++++++- .../knowledge-management.model.ts | 1 + 6 files changed, 28 insertions(+), 1 deletion(-) diff --git a/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/application/KnowledgeItemApplicationService.java b/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/application/KnowledgeItemApplicationService.java index 74c0ee0..77b7d34 100644 --- a/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/application/KnowledgeItemApplicationService.java +++ b/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/application/KnowledgeItemApplicationService.java @@ -16,6 +16,7 @@ import com.datamate.datamanagement.domain.model.knowledge.KnowledgeItem; import com.datamate.datamanagement.domain.model.knowledge.KnowledgeSet; import com.datamate.datamanagement.infrastructure.config.DataManagementProperties; import com.datamate.datamanagement.infrastructure.exception.DataManagementErrorCode; +import com.datamate.datamanagement.infrastructure.persistence.mapper.TagMapper; import com.datamate.datamanagement.infrastructure.persistence.repository.DatasetFileRepository; import com.datamate.datamanagement.infrastructure.persistence.repository.DatasetRepository; import com.datamate.datamanagement.infrastructure.persistence.repository.KnowledgeItemRepository; @@ -86,6 +87,7 @@ public class KnowledgeItemApplicationService { private final DatasetRepository datasetRepository; private final DatasetFileRepository datasetFileRepository; private final DataManagementProperties dataManagementProperties; + private final TagMapper tagMapper; public KnowledgeItem createKnowledgeItem(String setId, CreateKnowledgeItemRequest request) { KnowledgeSet knowledgeSet = requireKnowledgeSet(setId); @@ -233,6 +235,7 @@ public class KnowledgeItemApplicationService { long datasetFileSize = safeLong(knowledgeItemRepository.sumDatasetFileSize()); long uploadFileSize = calculateUploadFileTotalSize(); response.setTotalSize(datasetFileSize + uploadFileSize); + response.setTotalTags(safeLong(tagMapper.countKnowledgeSetTags())); return response; } diff --git a/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/infrastructure/persistence/mapper/TagMapper.java b/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/infrastructure/persistence/mapper/TagMapper.java index 84c1bb2..eaa32f8 100644 --- a/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/infrastructure/persistence/mapper/TagMapper.java +++ b/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/infrastructure/persistence/mapper/TagMapper.java @@ -14,6 +14,7 @@ public interface TagMapper { List findByIdIn(@Param("ids") List ids); List findByKeyword(@Param("keyword") String keyword); List findAllByOrderByUsageCountDesc(); + Long countKnowledgeSetTags(); int insert(Tag tag); int update(Tag tag); diff --git a/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/interfaces/dto/KnowledgeManagementStatisticsResponse.java b/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/interfaces/dto/KnowledgeManagementStatisticsResponse.java index 7abddc1..78a6b39 100644 --- a/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/interfaces/dto/KnowledgeManagementStatisticsResponse.java +++ b/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/interfaces/dto/KnowledgeManagementStatisticsResponse.java @@ -12,4 +12,5 @@ public class KnowledgeManagementStatisticsResponse { private Long totalKnowledgeSets = 0L; private Long totalFiles = 0L; private Long totalSize = 0L; + private Long totalTags = 0L; } diff --git a/backend/services/data-management-service/src/main/resources/mappers/TagMapper.xml b/backend/services/data-management-service/src/main/resources/mappers/TagMapper.xml index accaad8..60a0a97 100644 --- a/backend/services/data-management-service/src/main/resources/mappers/TagMapper.xml +++ b/backend/services/data-management-service/src/main/resources/mappers/TagMapper.xml @@ -53,6 +53,19 @@ ORDER BY usage_count DESC, name ASC + + INSERT INTO t_dm_tags (id, name, description, category, color, usage_count) VALUES (#{id}, #{name}, #{description}, #{category}, #{color}, #{usageCount}) diff --git a/frontend/src/pages/KnowledgeManagement/Home/KnowledgeManagementPage.tsx b/frontend/src/pages/KnowledgeManagement/Home/KnowledgeManagementPage.tsx index ca4f973..0d6fda5 100644 --- a/frontend/src/pages/KnowledgeManagement/Home/KnowledgeManagementPage.tsx +++ b/frontend/src/pages/KnowledgeManagement/Home/KnowledgeManagementPage.tsx @@ -40,6 +40,10 @@ const DEFAULT_STATISTICS: StatisticsItem[] = [ title: "文件总数", value: 0, }, + { + title: "标签总数", + value: 0, + }, { title: "总大小", value: "0 B", @@ -113,6 +117,10 @@ export default function KnowledgeManagementPage() { title: "文件总数", value: stats?.totalFiles ?? 0, }, + { + title: "标签总数", + value: stats?.totalTags ?? 0, + }, { title: "总大小", value: formatBytes(stats?.totalSize ?? 0), @@ -276,7 +284,7 @@ export default function KnowledgeManagementPage() {
-
+
{statisticsData.map((item) => (