| @@ -42,37 +42,44 @@ export const regressorAlgorithms = [ | |||||
| // 特征预处理算法 | // 特征预处理算法 | ||||
| export const featureAlgorithms = [ | export const featureAlgorithms = [ | ||||
| { label: 'densifier (数据增稠)', value: 'densifier' }, | |||||
| { label: 'densifier (特征变换-数据增稠)', value: 'densifier' }, | |||||
| { | { | ||||
| label: 'extra_trees_preproc_for_classification (分类任务极端随机树)', | |||||
| label: 'extra_trees_preproc_for_classification (特征选择-分类任务极端随机树)', | |||||
| value: 'extra_trees_preproc_for_classification', | value: 'extra_trees_preproc_for_classification', | ||||
| }, | }, | ||||
| { | { | ||||
| label: 'extra_trees_preproc_for_regression (回归任务极端随机树)', | |||||
| label: 'extra_trees_preproc_for_regression (特征选择-回归任务极端随机树)', | |||||
| value: 'extra_trees_preproc_for_regression', | value: 'extra_trees_preproc_for_regression', | ||||
| }, | }, | ||||
| { label: 'fast_ica (快速独立成分分析)', value: 'fast_ica' }, | |||||
| { label: 'feature_agglomeration (特征聚合)', value: 'feature_agglomeration' }, | |||||
| { label: 'kernel_pca (核主成分分析)', value: 'kernel_pca' }, | |||||
| { label: 'kitchen_sinks (随机特征映射)', value: 'kitchen_sinks' }, | |||||
| { label: 'liblinear_svc_preprocessor (线性svc预处理器)', value: 'liblinear_svc_preprocessor' }, | |||||
| { label: 'fast_ica (特征选择-快速独立成分分析)', value: 'fast_ica' }, | |||||
| { label: 'feature_agglomeration (特征变换-特征聚合)', value: 'feature_agglomeration' }, | |||||
| { label: 'kernel_pca (特征选择-核主成分分析)', value: 'kernel_pca' }, | |||||
| { label: 'kitchen_sinks (特征变换-随机特征映射)', value: 'kitchen_sinks' }, | |||||
| { | |||||
| label: 'liblinear_svc_preprocessor (特征选择-线性svc预处理器)', | |||||
| value: 'liblinear_svc_preprocessor', | |||||
| }, | |||||
| { label: 'miss_value_impute (缺失值填充)', value: 'miss_value_impute' }, | |||||
| { label: 'no_preprocessing (无预处理)', value: 'no_preprocessing' }, | { label: 'no_preprocessing (无预处理)', value: 'no_preprocessing' }, | ||||
| { label: 'nystroem_sampler (尼斯特罗姆采样器)', value: 'nystroem_sampler' }, | |||||
| { label: 'pca (主成分分析)', value: 'pca' }, | |||||
| { label: 'polynomial (多项式特征扩展)', value: 'polynomial' }, | |||||
| { label: 'random_trees_embedding (随机森林特征嵌入)', value: 'random_trees_embedding' }, | |||||
| { label: 'nystroem_sampler (特征变换-尼斯特罗姆采样器)', value: 'nystroem_sampler' }, | |||||
| { label: 'pca (特征选择-主成分分析)', value: 'pca' }, | |||||
| { label: 'polynomial (特征变换-多项式特征扩展)', value: 'polynomial' }, | |||||
| { label: 'random_trees_embedding (特征变换-随机森林特征嵌入)', value: 'random_trees_embedding' }, | |||||
| { | { | ||||
| label: 'select_percentile_classification (基于百分位的分类特征选择)', | |||||
| label: 'select_percentile_classification 特征选择-基于百分位的分类特征选择)', | |||||
| value: 'select_percentile_classification', | value: 'select_percentile_classification', | ||||
| }, | }, | ||||
| { | { | ||||
| label: 'select_percentile_regression (基于百分位的回归特征选择)', | |||||
| label: 'select_percentile_regression (特征选择-基于百分位的回归特征选择)', | |||||
| value: 'select_percentile_regression', | value: 'select_percentile_regression', | ||||
| }, | }, | ||||
| { | { | ||||
| label: 'select_rates_classification (基于比率的分类特征选择)', | |||||
| label: 'select_rates_classification (特征选择-基于比率的分类特征选择)', | |||||
| value: 'select_rates_classification', | value: 'select_rates_classification', | ||||
| }, | }, | ||||
| { label: 'select_rates_regression (基于比率的回归特征选择)', value: 'select_rates_regression' }, | |||||
| { label: 'truncatedSVD (截断奇异值分解)', value: 'truncatedSVD' }, | |||||
| { | |||||
| label: 'select_rates_regression (特征选择-基于比率的回归特征选择)', | |||||
| value: 'select_rates_regression', | |||||
| }, | |||||
| { label: 'truncatedSVD (特征变换-截断奇异值分解)', value: 'truncatedSVD' }, | |||||
| ]; | ]; | ||||
| @@ -0,0 +1,121 @@ | |||||
| import KFModal from '@/components/KFModal'; | |||||
| import { DataSource, ResourceData, ResourceType, resourceConfig } from '@/pages/Dataset/config'; | |||||
| import { to } from '@/utils/promise'; | |||||
| import { Form, Input, message, type ModalProps } from 'antd'; | |||||
| interface EditVersionModalProps extends Omit<ModalProps, 'onOk'> { | |||||
| resourceType: ResourceType; | |||||
| resourceVersion: ResourceData; | |||||
| onOk: () => void; | |||||
| } | |||||
| function EditVersionModal({ resourceType, resourceVersion, onOk, ...rest }: EditVersionModalProps) { | |||||
| const config = resourceConfig[resourceType]; | |||||
| const { name: resoureName, version, version_desc } = resourceVersion; | |||||
| // 修改请求 | |||||
| const editDatasetVersion = async (params: any) => { | |||||
| const request = config.editVersion; | |||||
| const [res] = await to(request(params)); | |||||
| if (res) { | |||||
| message.success('编辑成功'); | |||||
| onOk?.(); | |||||
| } | |||||
| }; | |||||
| // 提交 | |||||
| const onFinish = (formData: any) => { | |||||
| const params = { | |||||
| ...resourceVersion, | |||||
| ...formData, | |||||
| [config.sourceParamKey]: DataSource.Create, | |||||
| }; | |||||
| editDatasetVersion(params); | |||||
| }; | |||||
| const name = config.name; | |||||
| return ( | |||||
| <KFModal | |||||
| {...rest} | |||||
| title="编辑版本" | |||||
| image={require('@/assets/img/create-experiment.png')} | |||||
| width={825} | |||||
| okButtonProps={{ | |||||
| htmlType: 'submit', | |||||
| form: 'form', | |||||
| }} | |||||
| > | |||||
| <Form | |||||
| name="form" | |||||
| layout="vertical" | |||||
| initialValues={{ | |||||
| name: resoureName, | |||||
| version: version, | |||||
| version_desc: version_desc, | |||||
| }} | |||||
| onFinish={onFinish} | |||||
| autoComplete="off" | |||||
| > | |||||
| <Form.Item | |||||
| label={`${name}名称`} | |||||
| name="name" | |||||
| rules={[ | |||||
| { | |||||
| required: true, | |||||
| message: `请输入${name}名称`, | |||||
| }, | |||||
| ]} | |||||
| > | |||||
| <Input disabled placeholder={`请输入${name}名称`} /> | |||||
| </Form.Item> | |||||
| <Form.Item | |||||
| label={`${name}版本`} | |||||
| name="version" | |||||
| rules={[ | |||||
| { | |||||
| required: true, | |||||
| message: `请输入${name}版本`, | |||||
| }, | |||||
| { | |||||
| pattern: /^[a-zA-Z0-9._-]+$/, | |||||
| message: `${name}版本只支持字母、数字、点(.)、下划线(_)、中横线(-)`, | |||||
| }, | |||||
| { | |||||
| validator: (_rule, value) => { | |||||
| if (value === 'master') { | |||||
| return Promise.reject(`${name}版本不能为 master`); | |||||
| } else if (value === 'origin') { | |||||
| return Promise.reject(`${name}版本不能为 origin`); | |||||
| } | |||||
| return Promise.resolve(); | |||||
| }, | |||||
| }, | |||||
| ]} | |||||
| > | |||||
| <Input placeholder={`请输入${name}版本`} maxLength={64} showCount allowClear disabled /> | |||||
| </Form.Item> | |||||
| <Form.Item | |||||
| label="版本描述" | |||||
| name="version_desc" | |||||
| rules={[ | |||||
| { | |||||
| required: true, | |||||
| message: '请输入版本描述', | |||||
| }, | |||||
| ]} | |||||
| > | |||||
| <Input.TextArea | |||||
| placeholder="请输入版本描述" | |||||
| autoSize={{ minRows: 2, maxRows: 6 }} | |||||
| maxLength={200} | |||||
| showCount | |||||
| allowClear | |||||
| /> | |||||
| </Form.Item> | |||||
| </Form> | |||||
| </KFModal> | |||||
| ); | |||||
| } | |||||
| export default EditVersionModal; | |||||
| @@ -24,6 +24,7 @@ import { App, Button, Flex, Select, Tabs, Typography } from 'antd'; | |||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||
| import { useCallback, useEffect, useState } from 'react'; | import { useCallback, useEffect, useState } from 'react'; | ||||
| import AddVersionModal from '../AddVersionModal'; | import AddVersionModal from '../AddVersionModal'; | ||||
| import EditVersionModal from '../EditVersionModal'; | |||||
| import ResourceIntro from '../ResourceIntro'; | import ResourceIntro from '../ResourceIntro'; | ||||
| import ResourceVersion from '../ResourceVersion'; | import ResourceVersion from '../ResourceVersion'; | ||||
| import VersionCompareModal from '../VersionCompareModal'; | import VersionCompareModal from '../VersionCompareModal'; | ||||
| @@ -137,6 +138,18 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => { | |||||
| }); | }); | ||||
| }; | }; | ||||
| // 版本编辑 | |||||
| const showEditVersionModal = () => { | |||||
| const { close } = openAntdModal(EditVersionModal, { | |||||
| resourceType: resourceType, | |||||
| resourceVersion: info, | |||||
| onOk: () => { | |||||
| getResourceDetail(); | |||||
| close(); | |||||
| }, | |||||
| }); | |||||
| }; | |||||
| // 选择版本 | // 选择版本 | ||||
| const showVersionSelector = () => { | const showVersionSelector = () => { | ||||
| const { close } = openAntdModal(VersionSelectorModal, { | const { close } = openAntdModal(VersionSelectorModal, { | ||||
| @@ -9,6 +9,8 @@ import { | |||||
| deleteDatasetVersion, | deleteDatasetVersion, | ||||
| deleteModel, | deleteModel, | ||||
| deleteModelVersion, | deleteModelVersion, | ||||
| editDatasetVersion, | |||||
| editModelVersion, | |||||
| getDatasetInfo, | getDatasetInfo, | ||||
| getDatasetList, | getDatasetList, | ||||
| getDatasetNextVersionReq, | getDatasetNextVersionReq, | ||||
| @@ -38,6 +40,7 @@ type ResourceTypeInfo = { | |||||
| getVersions: (params: any) => Promise<any>; // 获取版本列表 | getVersions: (params: any) => Promise<any>; // 获取版本列表 | ||||
| deleteRecord: (params: any) => Promise<any>; // 删除 | deleteRecord: (params: any) => Promise<any>; // 删除 | ||||
| addVersion: (params: any) => Promise<any>; // 新增版本 | addVersion: (params: any) => Promise<any>; // 新增版本 | ||||
| editVersion: (params: any) => Promise<any>; // 编辑版本 | |||||
| deleteVersion: (params: any) => Promise<any>; // 删除版本 | deleteVersion: (params: any) => Promise<any>; // 删除版本 | ||||
| getInfo: (params: any) => Promise<any>; // 获取详情 | getInfo: (params: any) => Promise<any>; // 获取详情 | ||||
| compareVersion: (params: any) => Promise<any>; // 版本对比 | compareVersion: (params: any) => Promise<any>; // 版本对比 | ||||
| @@ -68,6 +71,7 @@ export const resourceConfig: Record<ResourceType, ResourceTypeInfo> = { | |||||
| getVersions: getDatasetVersionList, | getVersions: getDatasetVersionList, | ||||
| deleteRecord: deleteDataset, | deleteRecord: deleteDataset, | ||||
| addVersion: addDatasetVersion, | addVersion: addDatasetVersion, | ||||
| editVersion: editDatasetVersion, | |||||
| deleteVersion: deleteDatasetVersion, | deleteVersion: deleteDatasetVersion, | ||||
| getInfo: getDatasetInfo, | getInfo: getDatasetInfo, | ||||
| compareVersion: compareDatasetVersion, | compareVersion: compareDatasetVersion, | ||||
| @@ -107,6 +111,7 @@ export const resourceConfig: Record<ResourceType, ResourceTypeInfo> = { | |||||
| getVersions: getModelVersionList, | getVersions: getModelVersionList, | ||||
| deleteRecord: deleteModel, | deleteRecord: deleteModel, | ||||
| addVersion: addModelVersion, | addVersion: addModelVersion, | ||||
| editVersion: editModelVersion, | |||||
| deleteVersion: deleteModelVersion, | deleteVersion: deleteModelVersion, | ||||
| getInfo: getModelInfo, | getInfo: getModelInfo, | ||||
| compareVersion: compareModelVersion, | compareVersion: compareModelVersion, | ||||
| @@ -58,6 +58,14 @@ export function addDatasetVersion(data) { | |||||
| }); | }); | ||||
| } | } | ||||
| // 编辑数据集版本 | |||||
| export function editDatasetVersion(data) { | |||||
| return request(`/api/mmp/newdataset/updateVersionDesc`, { | |||||
| method: 'PUT', | |||||
| data, | |||||
| }); | |||||
| } | |||||
| // 下载数据集所有文件 | // 下载数据集所有文件 | ||||
| export function downloadAllFiles(params) { | export function downloadAllFiles(params) { | ||||
| return request(`/api/mmp/newdataset/downloadAllFiles`, { | return request(`/api/mmp/newdataset/downloadAllFiles`, { | ||||
| @@ -141,6 +149,15 @@ export function addModelVersion(data) { | |||||
| }); | }); | ||||
| } | } | ||||
| // 编辑模型版本 | |||||
| export function editModelVersion(data) { | |||||
| return request(`/api/mmp/newmodel/updateVersionDesc`, { | |||||
| method: 'PUT', | |||||
| data, | |||||
| }); | |||||
| } | |||||
| // 删除模型版本 | // 删除模型版本 | ||||
| export function deleteModelVersion(params) { | export function deleteModelVersion(params) { | ||||
| return request(`/api/mmp/newmodel/deleteVersion`, { | return request(`/api/mmp/newmodel/deleteVersion`, { | ||||