This commit is contained in:
2025-12-01 17:21:38 +08:00
parent 32fee2b8ab
commit fab8c13cb3
7511 changed files with 996300 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
import {
GeneralChunk,
ParentChildChunk,
QuestionAndAnswer,
} from '@/app/components/base/icons/src/vender/knowledge'
import { EffectColor, type Option } from './types'
import { ChunkingMode } from '@/models/datasets'
import { useTranslation } from 'react-i18next'
export const useChunkStructure = () => {
const { t } = useTranslation()
const GeneralOption: Option = {
id: ChunkingMode.text,
icon: <GeneralChunk className='size-[18px]' />,
iconActiveColor: 'text-util-colors-indigo-indigo-600',
title: 'General',
description: t('datasetCreation.stepTwo.generalTip'),
effectColor: EffectColor.indigo,
showEffectColor: true,
}
const ParentChildOption: Option = {
id: ChunkingMode.parentChild,
icon: <ParentChildChunk className='size-[18px]' />,
iconActiveColor: 'text-util-colors-blue-light-blue-light-500',
title: 'Parent-Child',
description: t('datasetCreation.stepTwo.parentChildTip'),
effectColor: EffectColor.blueLight,
showEffectColor: true,
}
const QuestionAnswerOption: Option = {
id: ChunkingMode.qa,
icon: <QuestionAndAnswer className='size-[18px]' />,
title: 'Q&A',
description: t('datasetCreation.stepTwo.qaTip'),
}
const options = [
GeneralOption,
ParentChildOption,
QuestionAnswerOption,
]
return {
options,
}
}

View File

@@ -0,0 +1,40 @@
import type { ChunkingMode } from '@/models/datasets'
import React from 'react'
import { useChunkStructure } from './hooks'
import OptionCard from '../option-card'
type ChunkStructureProps = {
chunkStructure: ChunkingMode
}
const ChunkStructure = ({
chunkStructure,
}: ChunkStructureProps) => {
const {
options,
} = useChunkStructure()
return (
<div className='flex flex-col gap-y-1'>
{
options.map(option => (
<OptionCard
key={option.id}
id={option.id}
icon={option.icon}
iconActiveColor={option.iconActiveColor}
title={option.title}
description={option.description}
isActive={chunkStructure === option.id}
effectColor={option.effectColor}
showEffectColor
className='gap-x-1.5 p-3 pr-4'
disabled
/>
))
}
</div>
)
}
export default React.memo(ChunkStructure)

View File

@@ -0,0 +1,18 @@
import type { ChunkingMode } from '@/models/datasets'
export enum EffectColor {
indigo = 'indigo',
blueLight = 'blue-light',
orange = 'orange',
purple = 'purple',
}
export type Option = {
id: ChunkingMode
icon?: React.ReactNode
iconActiveColor?: string
title: string
description?: string
effectColor?: EffectColor
showEffectColor?: boolean
}