chore: hiting test header ui

This commit is contained in:
Joel 2024-12-16 18:04:53 +08:00
parent 6da7efaa1d
commit e418cf30f5
3 changed files with 24 additions and 30 deletions

View File

@ -2,12 +2,11 @@
import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import Image from 'next/image'
import { retrievalIcon } from '../../create/icons'
import type { RetrievalConfig } from '@/types/app' import type { RetrievalConfig } from '@/types/app'
import { RETRIEVE_METHOD } from '@/types/app' import { RETRIEVE_METHOD } from '@/types/app'
import RadioCard from '@/app/components/base/radio-card' import RadioCard from '@/app/components/base/radio-card'
import { HighPriority } from '@/app/components/base/icons/src/vender/solid/arrows'
import { PatternRecognition, Semantic } from '@/app/components/base/icons/src/vender/solid/development'
import { FileSearch02 } from '@/app/components/base/icons/src/vender/solid/files'
type Props = { type Props = {
value: RetrievalConfig value: RetrievalConfig
@ -15,11 +14,12 @@ type Props = {
export const getIcon = (type: RETRIEVE_METHOD) => { export const getIcon = (type: RETRIEVE_METHOD) => {
return ({ return ({
[RETRIEVE_METHOD.semantic]: Semantic, [RETRIEVE_METHOD.semantic]: retrievalIcon.vector,
[RETRIEVE_METHOD.fullText]: FileSearch02, [RETRIEVE_METHOD.fullText]: retrievalIcon.fullText,
[RETRIEVE_METHOD.hybrid]: PatternRecognition, [RETRIEVE_METHOD.hybrid]: retrievalIcon.hybrid,
[RETRIEVE_METHOD.invertedIndex]: HighPriority, [RETRIEVE_METHOD.invertedIndex]: retrievalIcon.vector,
})[type] || FileSearch02 [RETRIEVE_METHOD.keywordSearch]: retrievalIcon.vector,
})[type] || retrievalIcon.vector
} }
const EconomicalRetrievalMethodConfig: FC<Props> = ({ const EconomicalRetrievalMethodConfig: FC<Props> = ({
@ -28,11 +28,11 @@ const EconomicalRetrievalMethodConfig: FC<Props> = ({
}) => { }) => {
const { t } = useTranslation() const { t } = useTranslation()
const type = value.search_method const type = value.search_method
const Icon = getIcon(type) const icon = <Image className='size-3.5 text-util-colors-purple-purple-600' src={getIcon(type)} alt='' />
return ( return (
<div className='space-y-2'> <div className='space-y-2'>
<RadioCard <RadioCard
icon={<Icon className='w-4 h-4 text-util-colors-purple-purple-600' />} icon={icon}
title={t(`dataset.retrieval.${type}.title`)} title={t(`dataset.retrieval.${type}.title`)}
description={t(`dataset.retrieval.${type}.description`)} description={t(`dataset.retrieval.${type}.description`)}
noRadio noRadio

View File

@ -29,10 +29,6 @@
background-image: url(./assets/plugin.svg); background-image: url(./assets/plugin.svg);
} }
.wrapper {
@apply relative border border-primary-600 rounded-xl;
}
.cardWrapper { .cardWrapper {
display: grid; display: grid;
grid-template-columns: repeat(auto-fill, minmax(284px, auto)); grid-template-columns: repeat(auto-fill, minmax(284px, auto));

View File

@ -3,10 +3,10 @@ import { useTranslation } from 'react-i18next'
import { import {
RiEqualizer2Line, RiEqualizer2Line,
} from '@remixicon/react' } from '@remixicon/react'
import Image from 'next/image'
import Button from '../../base/button' import Button from '../../base/button'
import Tag from '../../base/tag' import Tag from '../../base/tag'
import { getIcon } from '../common/retrieval-method-info' import { getIcon } from '../common/retrieval-method-info'
import s from './style.module.css'
import ModifyExternalRetrievalModal from './modify-external-retrieval-modal' import ModifyExternalRetrievalModal from './modify-external-retrieval-modal'
import Tooltip from '@/app/components/base/tooltip' import Tooltip from '@/app/components/base/tooltip'
import cn from '@/utils/classnames' import cn from '@/utils/classnames'
@ -14,6 +14,7 @@ import type { ExternalKnowledgeBaseHitTestingResponse, HitTestingResponse } from
import { externalKnowledgeBaseHitTesting, hitTesting } from '@/service/datasets' import { externalKnowledgeBaseHitTesting, hitTesting } from '@/service/datasets'
import { asyncRunSafe } from '@/utils' import { asyncRunSafe } from '@/utils'
import { RETRIEVE_METHOD, type RetrievalConfig } from '@/types/app' import { RETRIEVE_METHOD, type RetrievalConfig } from '@/types/app'
import promptS from '@/app/components/app/configuration/config-prompt/style.module.css'
type TextAreaWithButtonIProps = { type TextAreaWithButtonIProps = {
datasetId: string datasetId: string
@ -103,13 +104,13 @@ const TextAreaWithButton = ({
} }
const retrievalMethod = isEconomy ? RETRIEVE_METHOD.invertedIndex : retrievalConfig.search_method const retrievalMethod = isEconomy ? RETRIEVE_METHOD.invertedIndex : retrievalConfig.search_method
const Icon = getIcon(retrievalMethod) const icon = <Image className='size-3.5 text-util-colors-purple-purple-600' src={getIcon(retrievalMethod)} alt='' />
return ( return (
<> <>
<div className={s.wrapper}> <div className={cn('relative rounded-xl', promptS.gradientBorder)}>
<div className='relative pt-2 rounded-tl-xl rounded-tr-xl bg-[#EEF4FF]'> <div className='relative pt-1.5 rounded-tl-xl rounded-tr-xl bg-background-section-burn'>
<div className="px-4 pb-2 flex justify-between h-8 items-center"> <div className="pl-4 pr-1.5 pb-1 flex justify-between h-8 items-center">
<span className="text-gray-800 font-semibold text-sm"> <span className="text-text-secondary font-semibold text-[13px] leading-4 uppercase">
{t('datasetHitTesting.input.title')} {t('datasetHitTesting.input.title')}
</span> </span>
{isExternal {isExternal
@ -123,17 +124,14 @@ const TextAreaWithButton = ({
<span className='text-components-button-secondary-text system-xs-medium'>{t('datasetHitTesting.settingTitle')}</span> <span className='text-components-button-secondary-text system-xs-medium'>{t('datasetHitTesting.settingTitle')}</span>
</div> </div>
</Button> </Button>
: <Tooltip : <div
popupContent={t('dataset.retrieval.changeRetrievalMethod')} onClick={onClickRetrievalMethod}
className='flex px-1.5 h-7 items-center bg-components-button-secondary-bg hover:bg-components-button-secondary-bg-hover rounded-lg border-[0.5px] border-components-button-secondary-bg shadow-xs backdrop-blur-[5px] cursor-pointer space-x-0.5'
> >
<div {icon}
onClick={onClickRetrievalMethod} <div className='text-text-secondary text-xs font-medium uppercase'>{t(`dataset.retrieval.${retrievalMethod}.title`)}</div>
className='flex px-2 h-7 items-center space-x-1 bg-white hover:bg-[#ECE9FE] rounded-md shadow-sm cursor-pointer text-[#6927DA]' <RiEqualizer2Line className='size-4 text-components-menu-item-text'></RiEqualizer2Line>
> </div>
<Icon className='w-3.5 h-3.5'></Icon>
<div className='text-xs font-medium'>{t(`dataset.retrieval.${retrievalMethod}.title`)}</div>
</div>
</Tooltip>
} }
</div> </div>
{ {