import {
BookOpen,
BookOpenText,
BookType,
ChartNoAxesColumn,
CheckCircle,
CircleEllipsis,
Clock,
Database,
File,
VectorSquare,
XCircle,
} from "lucide-react";
import {
KBFile,
KBFileStatus,
KBType,
KnowledgeBaseItem,
} from "./knowledge-base.model";
import { formatBytes, formatDateTime, formatNumber } from "@/utils/unit";
export const KBFileStatusMap = {
[KBFileStatus.PROCESSED]: {
value: KBFileStatus.PROCESSED,
label: "已处理",
icon: CheckCircle,
color: "#389e0d",
},
[KBFileStatus.PROCESSING]: {
value: KBFileStatus.PROCESSING,
label: "处理中",
icon: Clock,
color: "#faad14",
},
[KBFileStatus.PROCESS_FAILED]: {
value: KBFileStatus.PROCESS_FAILED,
label: "处理失败",
icon: XCircle,
color: "#ff4d4f",
},
[KBFileStatus.UNPROCESSED]: {
value: KBFileStatus.UNPROCESSED,
label: "未处理",
icon: CircleEllipsis,
color: "#d9d9d9",
},
};
export const KBTypeMap = {
[KBType.STRUCTURED]: {
value: KBType.STRUCTURED,
label: "结构化",
icon: Database,
iconColor: "blue",
description: "用于处理和分析文本数据的数据集",
},
[KBType.UNSTRUCTURED]: {
value: KBType.UNSTRUCTURED,
label: "非结构化",
icon: BookOpen,
iconColor: "green",
description: "适用于存储和管理各种格式的文件",
},
};
export function mapKnowledgeBase(
kb: KnowledgeBaseItem,
showModelFields: boolean = true
): KnowledgeBaseItem {
return {
...kb,
icon: ,
description: kb.description,
statistics: [
...(showModelFields
? [
{
label: "索引模型",
key: "embeddingModel",
icon: ,
value:
kb.embedding?.modelName +
(kb.embedding?.provider
? ` (${kb.embedding.provider})`
: "") || "无",
},
{
label: "文本理解模型",
key: "chatModel",
icon: ,
value:
kb.chat?.modelName +
(kb.chat?.provider ? ` (${kb.chat.provider})` : "") || "无",
},
]
: []),
{
label: "文件数",
key: "fileCount",
icon: ,
value: formatNumber(kb?.fileCount) || 0,
},
{
label: "分块数",
key: "chunkCount",
icon: ,
value: formatNumber(kb?.chunkCount) || 0,
},
],
updatedAt: formatDateTime(kb.updatedAt),
createdAt: formatDateTime(kb.createdAt),
};
}
export function mapFileData(file: Partial): KBFile {
return {
...file,
name: file.fileName,
createdAt: formatDateTime(file.createdAt),
updatedAt: formatDateTime(file.updatedAt),
status: KBFileStatusMap[file.status] || {
value: file.status,
label: "未知状态",
icon: CircleEllipsis,
color: "#d9d9d9",
},
};
}
export const DatasetFileCols = [
{
title: "所属数据集",
dataIndex: "datasetName",
key: "datasetName",
ellipsis: true,
},
{
title: "文件名",
dataIndex: "fileName",
key: "fileName",
ellipsis: true,
},
{
title: "大小",
dataIndex: "fileSize",
key: "fileSize",
ellipsis: true,
render: formatBytes,
},
];