'use client' import type { FC } from 'react' import React from 'react' import { useTranslation } from 'react-i18next' import AppIcon from '../base/app-icon' import Effect from '../base/effect' import { useDatasetDetailContextWithSelector } from '@/context/dataset-detail' import type { DataSet } from '@/models/datasets' import { DOC_FORM_ICON_WITH_BG, DOC_FORM_TEXT } from '@/models/datasets' import { useKnowledge } from '@/hooks/use-knowledge' import Badge from '../base/badge' import cn from '@/utils/classnames' type Props = { expand: boolean extraInfo?: React.ReactNode } const DatasetInfo: FC = ({ expand, extraInfo, }) => { const { t } = useTranslation() const dataset = useDatasetDetailContextWithSelector(state => state.dataset) as DataSet const iconInfo = dataset.icon_info || { icon: '📙', icon_type: 'emoji', icon_background: '#FFF4ED', icon_url: '', } const isExternalProvider = dataset.provider === 'external' const { formatIndexingTechniqueAndMethod } = useKnowledge() const chunkingModeIcon = dataset.doc_form ? DOC_FORM_ICON_WITH_BG[dataset.doc_form] : React.Fragment const Icon = isExternalProvider ? DOC_FORM_ICON_WITH_BG.external : chunkingModeIcon return (
{expand && ( <>
{(dataset.doc_form || isExternalProvider) && (
)}
<>
{dataset.name}
{isExternalProvider && t('dataset.externalTag')} {!isExternalProvider && dataset.doc_form && dataset.indexing_technique && (
{t(`dataset.chunkingMode.${DOC_FORM_TEXT[dataset.doc_form]}`)} {formatIndexingTechniqueAndMethod(dataset.indexing_technique, dataset.retrieval_model_dict?.search_method)}
)}

{dataset.description}

)} {!expand && ( )} {extraInfo}
) } export default React.memo(DatasetInfo)