import { forwardRef, useImperativeHandle, useState, useEffect } from 'react'; import { Form, InputNumber, Switch, Flex } from 'antd'; import { useTranslation } from 'react-i18next'; import type { RerankerConfig, KnowledgeGlobalConfigModalRef } from './types' import RbModal from '@/components/RbModal' import ModelSelect from '@/components/ModelSelect' const FormItem = Form.Item; interface KnowledgeGlobalConfigModalProps { data: RerankerConfig; refresh: (values: RerankerConfig, type: 'rerankerConfig') => void; } const KnowledgeGlobalConfigModal = forwardRef(({ refresh, data }, ref) => { const { t } = useTranslation(); const [visible, setVisible] = useState(false); const [form] = Form.useForm(); const values = Form.useWatch([], form); const handleClose = () => { setVisible(false); form.resetFields(); }; const handleOpen = () => { form.setFieldsValue({ ...data, rerank_model: !!data?.reranker_id }) setVisible(true); }; const handleSave = () => { form.validateFields() .then(() => { refresh(values, 'rerankerConfig') handleClose() }) .catch((err) => console.log('err', err)); } useEffect(() => { if (values?.rerank_model) { const { rerank_model, ...rest } = data; form.setFieldsValue({ ...rest }) } else { form.setFieldsValue({ reranker_id: undefined, reranker_top_k: undefined }) } }, [values?.rerank_model]) useImperativeHandle(ref, () => ({ handleOpen })); return (
{t('application.globalConfigDesc')}
{t('application.rerankModel')}
{t('application.rerankModelDesc')}
{values?.rerank_model && <> form.setFieldValue('reranker_top_k', value)} /> }
); }); export default KnowledgeGlobalConfigModal;