feat(KnowledgeManagement): 为知识集详情页添加标签功能

- 引入 updateKnowledgeSetByIdUsingPut、createDatasetTagUsingPost 和 queryDatasetTagsUsingGet API
- 添加 Clock 图标用于显示更新时间
- 替换条目数和更新时间的图标为 File 和 Clock 组件
- 配置标签组件以支持添加、获取和创建标签
- 实现标签的创建和添加逻辑
- 集成标签的异步加载和更新功能
This commit is contained in:
2026-02-01 23:26:54 +08:00
parent 9014dca1ac
commit 10fad39e02

View File

@@ -28,7 +28,12 @@ import {
queryKnowledgeItemsUsingGet, queryKnowledgeItemsUsingGet,
queryKnowledgeItemPreviewStatusUsingGet, queryKnowledgeItemPreviewStatusUsingGet,
queryKnowledgeSetByIdUsingGet, queryKnowledgeSetByIdUsingGet,
updateKnowledgeSetByIdUsingPut,
} from "../knowledge-management.api"; } from "../knowledge-management.api";
import {
createDatasetTagUsingPost,
queryDatasetTagsUsingGet,
} from "../../DataManagement/dataset.api";
import { import {
knowledgeContentTypeOptions, knowledgeContentTypeOptions,
knowledgeSourceTypeOptions, knowledgeSourceTypeOptions,
@@ -48,7 +53,7 @@ import CreateKnowledgeSet from "../components/CreateKnowledgeSet";
import KnowledgeItemEditor from "../components/KnowledgeItemEditor"; import KnowledgeItemEditor from "../components/KnowledgeItemEditor";
import ImportKnowledgeItemsDialog from "../components/ImportKnowledgeItemsDialog"; import ImportKnowledgeItemsDialog from "../components/ImportKnowledgeItemsDialog";
import { formatDate } from "@/utils/unit"; import { formatDate } from "@/utils/unit";
import { File, Folder } from "lucide-react"; import { File, Folder, Clock } from "lucide-react";
import { import {
PREVIEW_TEXT_MAX_LENGTH, PREVIEW_TEXT_MAX_LENGTH,
resolvePreviewFileType, resolvePreviewFileType,
@@ -527,14 +532,12 @@ const KnowledgeSetDetail = () => {
() => [ () => [
{ {
key: "items", key: "items",
icon: <PlusOutlined className="text-blue-500" />, icon: <File className="text-blue-400 w-4 h-4" />,
label: "条目数",
value: allItems.length, value: allItems.length,
}, },
{ {
key: "updated", key: "updated",
icon: <EditOutlined className="text-gray-500" />, icon: <Clock className="text-blue-400 w-4 h-4" />,
label: "更新时间",
value: knowledgeSet?.updatedAt ? formatDate(knowledgeSet.updatedAt) : "-", value: knowledgeSet?.updatedAt ? formatDate(knowledgeSet.updatedAt) : "-",
}, },
], ],
@@ -916,6 +919,38 @@ const KnowledgeSetDetail = () => {
}, },
}, },
]} ]}
tagConfig={{
showAdd: true,
tags: (knowledgeSet?.tags || []) as any,
onFetchTags: async () => {
const res = await queryDatasetTagsUsingGet({
page: 0,
pageSize: 1000,
});
return res.data || [];
},
onCreateAndTag: async (tagName) => {
const res = await createDatasetTagUsingPost({ name: tagName });
if (res.data && knowledgeSet) {
const currentTags = knowledgeSet.tags || [];
await updateKnowledgeSetByIdUsingPut(knowledgeSet.id, {
tags: [...currentTags.map((tag) => tag.name), res.data.name],
});
fetchKnowledgeSet();
}
},
onAddTag: async (tag: any) => {
if (knowledgeSet) {
const currentTags = knowledgeSet.tags || [];
const newTagName = typeof tag === "string" ? tag : tag?.name;
if (!newTagName) return;
await updateKnowledgeSetByIdUsingPut(knowledgeSet.id, {
tags: [...currentTags.map((tag) => tag.name), newTagName],
});
fetchKnowledgeSet();
}
},
}}
/> />
<CreateKnowledgeSet <CreateKnowledgeSet