feat(web): add space config page; user memory page update

This commit is contained in:
zhaoying
2026-01-13 16:16:46 +08:00
parent 1ebab759b1
commit e187c01dc9
17 changed files with 321 additions and 316 deletions

View File

@@ -0,0 +1,118 @@
import { type FC, useEffect, useState } from 'react';
import { Form, App, Button, Skeleton } from 'antd';
import { useTranslation } from 'react-i18next';
import type { SpaceConfigData } from './types'
import { getWorkspaceModels, updateWorkspaceModels } from '@/api/workspaces'
import { getModelListUrl } from '@/api/models'
import CustomSelect from '@/components/CustomSelect'
import RbAlert from '@/components/RbAlert';
const SpaceConfig: FC = () => {
const { t } = useTranslation();
const { message } = App.useApp();
const [pageLoading, setPageLoding] = useState(false)
const [form] = Form.useForm<SpaceConfigData>();
const [loading, setLoading] = useState(false)
const values = Form.useWatch([], form);
useEffect(() => {
setPageLoding(true)
getWorkspaceModels().then((res) => {
const { llm, embedding, rerank } = res as SpaceConfigData
form.setFieldsValue({
llm,
embedding,
rerank
})
})
.finally(() => {
setPageLoding(false)
})
}, [])
// 封装保存方法,添加提交逻辑
const handleSave = () => {
form
.validateFields()
.then(() => {
setLoading(true)
updateWorkspaceModels(values)
.then(() => {
setLoading(false)
message.success(t('common.updateSuccess'))
})
.catch(() => {
setLoading(false)
});
})
.catch((err) => {
console.log('err', err)
});
}
return (
<div className="rb:h-full rb:max-w-140 rb:mx-auto">
{pageLoading
? <Skeleton active />
: <Form
form={form}
layout="vertical"
>
<Form.Item
label={t('space.llmModel')}
name="llm"
rules={[{ required: true, message: t('common.pleaseSelect') }]}
>
<CustomSelect
url={getModelListUrl}
params={{ type: 'llm', pagesize: 100 }}
valueKey="id"
labelKey="name"
hasAll={false}
style={{width: '100%'}}
/>
</Form.Item>
<Form.Item
label={t('space.embeddingModel')}
name="embedding"
rules={[{ required: true, message: t('common.pleaseSelect') }]}
>
<CustomSelect
url={getModelListUrl}
params={{ type: 'embedding', pagesize: 100 }}
valueKey="id"
labelKey="name"
hasAll={false}
style={{width: '100%'}}
/>
</Form.Item>
<Form.Item
label={t('space.rerankModel')}
name="rerank"
rules={[{ required: true, message: t('common.pleaseSelect') }]}
>
<CustomSelect
url={getModelListUrl}
params={{ type: 'rerank', pagesize: 100 }}
valueKey="id"
labelKey="name"
hasAll={false}
style={{width: '100%'}}
/>
</Form.Item>
<RbAlert>{t('space.configAlert')}</RbAlert>
<Form.Item className="rb:text-right">
<Button type="primary" className="rb:mt-6" onClick={handleSave} loading={loading}>
{t('common.save')}
</Button>
</Form.Item>
</Form>
}
</div>
);
};
export default SpaceConfig;

View File

@@ -0,0 +1,8 @@
export interface SpaceConfigData {
llm: string;
embedding: string;
rerank: string;
}
export interface SpaceConfigRef {
handleOpen: () => void;
}