import React from "react"; import { CheckCircleOutlined, ClockCircleOutlined, CloseCircleOutlined, FolderOpenOutlined, } from "@ant-design/icons"; import { BookOpen } from "lucide-react"; import { formatDateTime } from "@/utils/unit"; import { KnowledgeContentType, KnowledgeItem, KnowledgeSet, KnowledgeSourceType, KnowledgeStatusType, } from "./knowledge-management.model"; export type KnowledgeStatusMeta = { label: string; value: KnowledgeStatusType; color: string; icon: React.ReactNode; }; export const knowledgeStatusMap: Record = { [KnowledgeStatusType.DRAFT]: { label: "草稿", value: KnowledgeStatusType.DRAFT, color: "#a1a1a1", icon: , }, [KnowledgeStatusType.PUBLISHED]: { label: "已发布", value: KnowledgeStatusType.PUBLISHED, color: "#409f17", icon: , }, [KnowledgeStatusType.ARCHIVED]: { label: "已归档", value: KnowledgeStatusType.ARCHIVED, color: "#6b7280", icon: , }, [KnowledgeStatusType.DEPRECATED]: { label: "已废弃", value: KnowledgeStatusType.DEPRECATED, color: "#d97706", icon: , }, }; export const knowledgeStatusOptions = Object.values(knowledgeStatusMap).map((item) => ({ label: item.label, value: item.value, })); export const knowledgeContentTypeOptions = [ { label: "文本", value: KnowledgeContentType.TEXT }, { label: "Markdown", value: KnowledgeContentType.MARKDOWN }, { label: "文件", value: KnowledgeContentType.FILE }, ]; export const knowledgeSourceTypeOptions = [ { label: "手工录入", value: KnowledgeSourceType.MANUAL }, { label: "数据集文件导入", value: KnowledgeSourceType.DATASET_FILE }, { label: "文件上传", value: KnowledgeSourceType.FILE_UPLOAD }, ]; export type KnowledgeSetView = { id: string; name: string; description?: string; status: KnowledgeStatusMeta | null; rawStatus: KnowledgeStatusType; tags: KnowledgeSet["tags"]; domain?: string; businessLine?: string; owner?: string; validFrom?: string; validTo?: string; sourceType?: KnowledgeSet["sourceType"]; sensitivity?: string; metadata?: string; createdAt?: string; updatedAt?: string; type: string; icon?: React.ReactNode; iconColor?: string; statistics?: { label: string; value: string | number }[]; }; export type KnowledgeItemView = { id: string; setId: string; content: string; contentType: KnowledgeContentType; status: KnowledgeStatusMeta | null; rawStatus: KnowledgeStatusType; tags: KnowledgeItem["tags"]; domain?: string; businessLine?: string; owner?: string; validFrom?: string; validTo?: string; sourceType?: KnowledgeItem["sourceType"]; sensitivity?: string; sourceDatasetId?: string; sourceFileId?: string; metadata?: string; createdAt?: string; updatedAt?: string; }; export function mapKnowledgeSet(data: KnowledgeSet): KnowledgeSetView { return { id: data.id, name: data.name, description: data.description, status: knowledgeStatusMap[data.status] ?? null, rawStatus: data.status, tags: data.tags || [], domain: data.domain, businessLine: data.businessLine, owner: data.owner, validFrom: data.validFrom, validTo: data.validTo, sourceType: data.sourceType, sensitivity: data.sensitivity, metadata: data.metadata, createdAt: data.createdAt ? formatDateTime(data.createdAt) : "", updatedAt: data.updatedAt ? formatDateTime(data.updatedAt) : "", type: "知识集", icon: , iconColor: "#3b82f6", }; } export function mapKnowledgeItem(data: KnowledgeItem): KnowledgeItemView { return { id: data.id, setId: data.setId, content: data.content, contentType: data.contentType, status: knowledgeStatusMap[data.status] ?? null, rawStatus: data.status, tags: data.tags || [], domain: data.domain, businessLine: data.businessLine, owner: data.owner, validFrom: data.validFrom, validTo: data.validTo, sourceType: data.sourceType, sensitivity: data.sensitivity, sourceDatasetId: data.sourceDatasetId, sourceFileId: data.sourceFileId, metadata: data.metadata, createdAt: data.createdAt ? formatDateTime(data.createdAt) : "", updatedAt: data.updatedAt ? formatDateTime(data.updatedAt) : "", }; }