Compare commits

..

2 Commits

Author SHA1 Message Date
2f2e0d6a8d feat(KnowledgeManagement): 保留知识集原始字段信息
- 在更新标签时保持知识集的名称、描述、状态等核心属性
- 保留领域、业务线、负责人等元数据信息
- 维护有效期、敏感度等配置项
- 确保源类型和自定义元数据字段不被覆盖
- 防止更新标签操作意外丢失其他重要字段值
2026-02-01 23:30:01 +08:00
10fad39e02 feat(KnowledgeManagement): 为知识集详情页添加标签功能
- 引入 updateKnowledgeSetByIdUsingPut、createDatasetTagUsingPost 和 queryDatasetTagsUsingGet API
- 添加 Clock 图标用于显示更新时间
- 替换条目数和更新时间的图标为 File 和 Clock 组件
- 配置标签组件以支持添加、获取和创建标签
- 实现标签的创建和添加逻辑
- 集成标签的异步加载和更新功能
2026-02-01 23:26:54 +08:00

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,60 @@ 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, {
name: knowledgeSet.name,
description: knowledgeSet.description,
status: knowledgeSet.status,
domain: knowledgeSet.domain,
businessLine: knowledgeSet.businessLine,
owner: knowledgeSet.owner,
validFrom: knowledgeSet.validFrom,
validTo: knowledgeSet.validTo,
sourceType: knowledgeSet.sourceType,
sensitivity: knowledgeSet.sensitivity,
metadata: knowledgeSet.metadata,
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, {
name: knowledgeSet.name,
description: knowledgeSet.description,
status: knowledgeSet.status,
domain: knowledgeSet.domain,
businessLine: knowledgeSet.businessLine,
owner: knowledgeSet.owner,
validFrom: knowledgeSet.validFrom,
validTo: knowledgeSet.validTo,
sourceType: knowledgeSet.sourceType,
sensitivity: knowledgeSet.sensitivity,
metadata: knowledgeSet.metadata,
tags: [...currentTags.map((tag) => tag.name), newTagName],
});
fetchKnowledgeSet();
}
},
}}
/> />
<CreateKnowledgeSet <CreateKnowledgeSet