import { ReactComponent as SelectedFilesCollapseIcon } from '@/assets/svg/selected-files-collapse.svg'; import Image from '@/components/image'; import { useTranslate } from '@/hooks/common-hooks'; import { ITestingChunk } from '@/interfaces/database/knowledge'; import { Card, Collapse, Empty, Flex, Pagination, PaginationProps, Popover, Space, } from 'antd'; import camelCase from 'lodash/camelCase'; import SelectFiles from './select-files'; import { useSelectIsTestingSuccess, useSelectTestingResult, } from '@/hooks/knowledge-hooks'; import { useGetPaginationWithRouter } from '@/hooks/logic-hooks'; import { useCallback, useState } from 'react'; import styles from './index.less'; const similarityList: Array<{ field: keyof ITestingChunk; label: string }> = [ { field: 'similarity', label: 'Hybrid Similarity' }, { field: 'term_similarity', label: 'Term Similarity' }, { field: 'vector_similarity', label: 'Vector Similarity' }, ]; const ChunkTitle = ({ item }: { item: ITestingChunk }) => { const { t } = useTranslate('knowledgeDetails'); return ( {similarityList.map((x) => ( {((item[x.field] as number) * 100).toFixed(2)} {t(camelCase(x.field))} ))} ); }; interface IProps { handleTesting: (documentIds?: string[]) => Promise; } const TestingResult = ({ handleTesting }: IProps) => { const [selectedDocumentIds, setSelectedDocumentIds] = useState([]); const { documents, chunks, total } = useSelectTestingResult(); const { t } = useTranslate('knowledgeDetails'); const { pagination, setPagination } = useGetPaginationWithRouter(); const isSuccess = useSelectIsTestingSuccess(); const onChange: PaginationProps['onChange'] = (pageNumber, pageSize) => { pagination.onChange?.(pageNumber, pageSize); handleTesting(selectedDocumentIds); }; const onTesting = useCallback( (ids: string[]) => { setPagination({ page: 1 }); handleTesting(ids); }, [setPagination, handleTesting], ); return (
( )} className={styles.selectFilesCollapse} items={[ { key: '1', label: ( {selectedDocumentIds?.length ?? 0}/{documents?.length ?? 0} {t('filesSelected')} ), children: (
), }, ]} /> {isSuccess && chunks.length > 0 ? ( chunks?.map((x) => ( }> {x.img_id && ( } > )}
{x.content_with_weight}
)) ) : isSuccess && chunks.length === 0 ? ( ) : null}
); }; export default TestingResult;