diff --git a/react-ui/config/config.ts b/react-ui/config/config.ts
index d0b27bd1..4ac775d9 100644
--- a/react-ui/config/config.ts
+++ b/react-ui/config/config.ts
@@ -6,8 +6,6 @@ import routes from './routes';
const { REACT_APP_ENV = 'dev' } = process.env;
-const huoshiBaseUrl = 'https://192.168.20.156:30016';
-
export default defineConfig({
/**
* @name 开启 hash 模式
@@ -179,28 +177,22 @@ export default defineConfig({
apps: process.env.UMI_APP_HUO_SHI
? [
{
- name: 'flint-data', // 数据服务微应用
+ name: 'flint', // 数据服务微应用
+ // entry: 'http://localhost:8083', // 开发环境地址
+ entry: '/flint', // 生产环境地址
+ activeRule: '/flint', // 激活规则
+ },
+ {
+ name: 'trainfer', // 服务管理
// entry: 'http://localhost:8081', // 开发环境地址
- entry: `${huoshiBaseUrl}/flint-data/`, // 生产环境地址
- activeRule: '/flint-data', // 激活规则
+ entry: '/trainfer', // 生产环境地址
+ activeRule: '/trainfer', // 激活规则
},
{
- name: 'flint-bml', // 训练模块微应用
- // entry: 'http://localhost:8082',
- entry: `${huoshiBaseUrl}/flint-bml/`,
- activeRule: '/pipeline/flint-bml',
- },
- {
- name: 'flint-console', // 集群管理
- // entry: 'http://localhost:8083',
- entry: `${huoshiBaseUrl}/flint-console/`,
- activeRule: '/dataset/flint-console',
- },
- {
- name: 'flint-service', // 服务模块微应用
- // entry: 'http://localhost:8085',
- entry: `${huoshiBaseUrl}/flint-service/`,
- activeRule: '/dataset/flint-service',
+ name: 'portal', // 服务管理
+ // entry: 'http://localhost:8082', // 开发环境地址
+ entry: '/portal', // 生产环境地址
+ activeRule: '/portal', // 激活规则
},
]
: [],
diff --git a/react-ui/config/proxy.ts b/react-ui/config/proxy.ts
index 8f793831..795a034e 100644
--- a/react-ui/config/proxy.ts
+++ b/react-ui/config/proxy.ts
@@ -18,6 +18,12 @@ export default {
// 如果需要自定义本地开发服务器 请取消注释按需调整
dev: {
// localhost:8000/api/** -> https://preview.pro.ant.design/api/**
+ '/proxyApi/': {
+ target: 'https://172.29.246.110:30016',
+ changeOrigin: true,
+ secure: false,
+ // target: 'http://172.31.164.103:30009/',
+ },
'/api/': {
// 要代理的地址
target: 'http://172.20.32.121:31213/', // 开发环境
@@ -60,7 +66,7 @@ export default {
},
'/huoshiProxyApi/': {
// target: 'http:///218.77.58.19:31213', // 公网环境
- target: 'http://218.77.58.19:30009/', // 火石环境
+ target: 'https://172.29.246.110:30016', // 火石环境
changeOrigin: true,
pathRewrite: { '^/huoshiProxyApi': '' },
secure: false,
@@ -75,10 +81,7 @@ export default {
// target: 'http://172.31.164.103:30009/',
changeOrigin: true,
},
- '/proxyApi/': {
- target: 'http://192.168.60.11:30009/',
- // target: 'http://172.31.164.103:30009/',
- },
+
},
/**
diff --git a/react-ui/config/routes.ts b/react-ui/config/routes.ts
index 15d4201c..46e8682a 100644
--- a/react-ui/config/routes.ts
+++ b/react-ui/config/routes.ts
@@ -775,237 +775,255 @@ export default [
},
...(process.env.UMI_APP_HUO_SHI
? [
+ {
+ path: '/flint/*',
+ name: '数据管理',
+ microApp: 'flint',
+ layout: true,
+ },
+ {
+ path: '/trainfer/*',
+ name: '火石服务',
+ microApp: 'trainfer',
+ layout: true,
+ },
+ {
+ path: '/portal/*',
+ name: '火石服务',
+ microApp: 'portal',
+ layout: true,
+ },
// 数据标注页面 - 使用自定义组件包装微应用
- {
- path: '/flint-data/mark/list',
- name: '数据标注',
- component: './DatasetPreparation/mark/index',
- layout: true,
- },
- // 数据服务子路径 - 直接路由到微应用(排除 mark/list)
- {
- path: '/flint-data/*',
- name: '数据服务',
- microApp: 'flint-data',
- layout: true,
- },
- {
- path: '/training/flint-bml/*',
- name: '训练模块',
- microApp: 'flint-bml',
- layout: true,
- },
- {
- path: '/flint-console/*',
- name: '集群管理',
- microApp: 'flint-console',
- layout: true,
- },
- {
- path: '/dataset/flint-service/*',
- name: '服务模块',
- microApp: 'flint-service',
- layout: true,
- },
- {
- path: '/training',
- name: '模型训练',
- routes: [
- {
- name: '小模型训练',
- path: 'pipeline',
- routes: [
- {
- path: '',
- redirect: 'template',
- },
- {
- name: '流水线模板',
- path: 'template',
- routes: [
- {
- name: '流水线模板',
- path: '',
- component: './Pipeline/index',
- },
- {
- name: '流水线详情',
- path: 'info/:id',
- component: './Pipeline/Info/index',
- },
- ],
- },
- {
- name: '实验',
- path: 'experiment',
- routes: [
- {
- name: '实验',
- path: '',
- component: './Experiment/index',
- },
- {
- name: '实验实例',
- path: 'instance/:workflowId/:id',
- component: './Experiment/Info/index',
- },
- {
- name: '实验对比',
- path: 'compare',
- routes: [
- {
- name: '实验对比',
- path: '',
- component: './Experiment/Comparison/index',
- },
- {
- name: '可视化对比',
- path: 'compare-visual',
- component: './Experiment/Aim/index',
- },
- ],
- },
- {
- name: '可视化',
- path: 'visual',
- component: './Experiment/Tensorboard/index',
- },
- ],
- },
- {
- name: '自动机器学习',
- path: 'automl',
- routes: [
- {
- name: '自动机器学习',
- path: '',
- component: './AutoML/List/index',
- },
- {
- name: '实验详情',
- path: 'info/:id',
- component: './AutoML/Info/index',
- },
- {
- name: '创建实验',
- path: 'create',
- component: './AutoML/Create/index',
- },
- {
- name: '编辑实验',
- path: 'edit/:id',
- component: './AutoML/Create/index',
- },
- {
- name: '复制实验',
- path: 'copy/:id',
- component: './AutoML/Create/index',
- },
- {
- name: '实验实例详情',
- path: 'instance/:experimentId/:id',
- component: './AutoML/Instance/index',
- },
- ],
- },
- {
- name: '超参数自动寻优',
- path: 'hyperparameter',
- routes: [
- {
- name: '超参数寻优',
- path: '',
- component: './HyperParameter/List/index',
- },
- {
- name: '实验详情',
- path: 'info/:id',
- component: './HyperParameter/Info/index',
- },
- {
- name: '创建实验',
- path: 'create',
- component: './HyperParameter/Create/index',
- },
- {
- name: '编辑实验',
- path: 'edit/:id',
- component: './HyperParameter/Create/index',
- },
- {
- name: '复制实验',
- path: 'copy/:id',
- component: './HyperParameter/Create/index',
- },
- {
- name: '实验实例详情',
- path: 'instance/:experimentId/:id',
- routes: [
- {
- name: '实验实例详情',
- path: '',
- component: './HyperParameter/Instance/index',
- },
- {
- name: '可视化对比',
- path: 'compare-visual',
- component: './Experiment/Aim/index',
- },
- ],
- },
- ],
- },
- {
- name: '主动学习',
- path: 'active-learn',
- routes: [
- {
- name: '主动学习',
- path: '',
- component: './ActiveLearn/List/index',
- },
- {
- name: '实验详情',
- path: 'info/:id',
- component: './ActiveLearn/Info/index',
- },
- {
- name: '创建实验',
- path: 'create',
- component: './ActiveLearn/Create/index',
- },
- {
- name: '编辑实验',
- path: 'edit/:id',
- component: './ActiveLearn/Create/index',
- },
- {
- name: '复制实验',
- path: 'copy/:id',
- component: './ActiveLearn/Create/index',
- },
- {
- name: '实验实例详情',
- path: 'instance/:experimentId/:id',
- routes: [
- {
- name: '实验实例详情',
- path: '',
- component: './ActiveLearn/Instance/index',
- },
- {
- name: '数据标注',
- path: 'label',
- component: './ActiveLearn/Label/index',
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
+ // {
+ // path: '/flint-data/mark/list',
+ // name: '数据标注',
+ // component: './DatasetPreparation/mark/index',
+ // layout: true,
+ // },
+ // // 数据服务子路径 - 直接路由到微应用(排除 mark/list)
+ // {
+ // path: '/flint-data/*',
+ // name: '数据服务',
+ // microApp: 'flint-data',
+ // layout: true,
+ // },
+ // {
+ // path: '/training/flint-bml/*',
+ // name: '训练模块',
+ // microApp: 'flint-bml',
+ // layout: true,
+ // },
+ // {
+ // path: '/flint-console/*',
+ // name: '集群管理',
+ // microApp: 'flint-console',
+ // layout: true,
+ // },
+ // {
+ // path: '/dataset/flint-service/*',
+ // name: '服务模块',
+ // microApp: 'flint-service',
+ // layout: true,
+ // },
+ // {
+ // path: '/training',
+ // name: '模型训练',
+ // routes: [
+ // {
+ // name: '小模型训练',
+ // path: 'pipeline',
+ // routes: [
+ // {
+ // path: '',
+ // redirect: 'template',
+ // },
+ // {
+ // name: '流水线模板',
+ // path: 'template',
+ // routes: [
+ // {
+ // name: '流水线模板',
+ // path: '',
+ // component: './Pipeline/index',
+ // },
+ // {
+ // name: '流水线详情',
+ // path: 'info/:id',
+ // component: './Pipeline/Info/index',
+ // },
+ // ],
+ // },
+ // {
+ // name: '实验',
+ // path: 'experiment',
+ // routes: [
+ // {
+ // name: '实验',
+ // path: '',
+ // component: './Experiment/index',
+ // },
+ // {
+ // name: '实验实例',
+ // path: 'instance/:workflowId/:id',
+ // component: './Experiment/Info/index',
+ // },
+ // {
+ // name: '实验对比',
+ // path: 'compare',
+ // routes: [
+ // {
+ // name: '实验对比',
+ // path: '',
+ // component: './Experiment/Comparison/index',
+ // },
+ // {
+ // name: '可视化对比',
+ // path: 'compare-visual',
+ // component: './Experiment/Aim/index',
+ // },
+ // ],
+ // },
+ // {
+ // name: '可视化',
+ // path: 'visual',
+ // component: './Experiment/Tensorboard/index',
+ // },
+ // ],
+ // },
+ // {
+ // name: '自动机器学习',
+ // path: 'automl',
+ // routes: [
+ // {
+ // name: '自动机器学习',
+ // path: '',
+ // component: './AutoML/List/index',
+ // },
+ // {
+ // name: '实验详情',
+ // path: 'info/:id',
+ // component: './AutoML/Info/index',
+ // },
+ // {
+ // name: '创建实验',
+ // path: 'create',
+ // component: './AutoML/Create/index',
+ // },
+ // {
+ // name: '编辑实验',
+ // path: 'edit/:id',
+ // component: './AutoML/Create/index',
+ // },
+ // {
+ // name: '复制实验',
+ // path: 'copy/:id',
+ // component: './AutoML/Create/index',
+ // },
+ // {
+ // name: '实验实例详情',
+ // path: 'instance/:experimentId/:id',
+ // component: './AutoML/Instance/index',
+ // },
+ // ],
+ // },
+ // {
+ // name: '超参数自动寻优',
+ // path: 'hyperparameter',
+ // routes: [
+ // {
+ // name: '超参数寻优',
+ // path: '',
+ // component: './HyperParameter/List/index',
+ // },
+ // {
+ // name: '实验详情',
+ // path: 'info/:id',
+ // component: './HyperParameter/Info/index',
+ // },
+ // {
+ // name: '创建实验',
+ // path: 'create',
+ // component: './HyperParameter/Create/index',
+ // },
+ // {
+ // name: '编辑实验',
+ // path: 'edit/:id',
+ // component: './HyperParameter/Create/index',
+ // },
+ // {
+ // name: '复制实验',
+ // path: 'copy/:id',
+ // component: './HyperParameter/Create/index',
+ // },
+ // {
+ // name: '实验实例详情',
+ // path: 'instance/:experimentId/:id',
+ // routes: [
+ // {
+ // name: '实验实例详情',
+ // path: '',
+ // component: './HyperParameter/Instance/index',
+ // },
+ // {
+ // name: '可视化对比',
+ // path: 'compare-visual',
+ // component: './Experiment/Aim/index',
+ // },
+ // ],
+ // },
+ // ],
+ // },
+ // {
+ // name: '主动学习',
+ // path: 'active-learn',
+ // routes: [
+ // {
+ // name: '主动学习',
+ // path: '',
+ // component: './ActiveLearn/List/index',
+ // },
+ // {
+ // name: '实验详情',
+ // path: 'info/:id',
+ // component: './ActiveLearn/Info/index',
+ // },
+ // {
+ // name: '创建实验',
+ // path: 'create',
+ // component: './ActiveLearn/Create/index',
+ // },
+ // {
+ // name: '编辑实验',
+ // path: 'edit/:id',
+ // component: './ActiveLearn/Create/index',
+ // },
+ // {
+ // name: '复制实验',
+ // path: 'copy/:id',
+ // component: './ActiveLearn/Create/index',
+ // },
+ // {
+ // name: '实验实例详情',
+ // path: 'instance/:experimentId/:id',
+ // routes: [
+ // {
+ // name: '实验实例详情',
+ // path: '',
+ // component: './ActiveLearn/Instance/index',
+ // },
+ // {
+ // name: '数据标注',
+ // path: 'label',
+ // component: './ActiveLearn/Label/index',
+ // },
+ // ],
+ // },
+ // ],
+ // },
+ // ],
+ // },
+ // ],
+ // },
]
: []),
{
diff --git a/react-ui/package.json b/react-ui/package.json
index 9affe214..68bc89bd 100644
--- a/react-ui/package.json
+++ b/react-ui/package.json
@@ -9,8 +9,8 @@
"build-with-huoshi": "cross-env UMI_APP_HUO_SHI=true max build",
"deploy": "npm run build && npm run gh-pages",
"dev": "npm run start:dev",
- "dev-no-sso": "cross-env NO_SSO=true npm run start:mock",
- "dev-with-huoshi": "cross-env NO_SSO=true UMI_APP_HUO_SHI=true npm run start:mock",
+ "dev-no-sso": "cross-env NO_SSO=true npm run start:dev",
+ "dev-with-huoshi": "cross-env NO_SSO=true UMI_APP_HUO_SHI=true npm run start:dev",
"docker-hub:build": "docker build -f Dockerfile.hub -t ant-design-pro ./",
"docker-prod:build": "docker-compose -f ./docker/docker-compose.yml build",
"docker-prod:dev": "docker-compose -f ./docker/docker-compose.yml up",
@@ -50,7 +50,7 @@
"test:coverage": "npm run jest -- --coverage",
"test:update": "npm run jest -- -u",
"tsc": "tsc --noEmit",
- "git-merge": "node ./scripts/git-merge.js"
+ "pr": "node ./scripts/git-merge.js"
},
"lint-staged": {
"**/*.{js,jsx,ts,tsx}": "npm run lint-staged:js",
diff --git a/react-ui/src/app.tsx b/react-ui/src/app.tsx
index c82321c9..5b96c542 100644
--- a/react-ui/src/app.tsx
+++ b/react-ui/src/app.tsx
@@ -28,6 +28,7 @@ import { addAlpha } from './utils/color';
import { HomeUrl } from './utils/constant';
import { closeAllModals } from './utils/modal';
import { gotoHomePage } from './utils/ui';
+import '@/huoshi.less'
export { requestConfig as request } from './requestConfig';
/**
diff --git a/react-ui/src/components/ResourceSelectorModal/config.tsx b/react-ui/src/components/ResourceSelectorModal/config.tsx
index aea33419..34e0d69f 100644
--- a/react-ui/src/components/ResourceSelectorModal/config.tsx
+++ b/react-ui/src/components/ResourceSelectorModal/config.tsx
@@ -54,7 +54,7 @@ const convertResourceVersionToTreeData = (
list: ResourceVersionData[],
): TreeDataNode[] => {
return list.map((item: ResourceVersionData) => ({
- ...pick(info, ['id', 'name', 'owner', 'identifier', 'is_public']),
+ ...pick(info, ['id', 'name', 'owner', 'identifier', 'is_public', 'git_id']),
key: `${parentId}-${item.name}`,
title: item.name,
version: item.name,
@@ -130,7 +130,15 @@ export class DatasetSelector implements SelectorTypeInfo {
}
async getFiles(_parentKey: string, parentNode: ResourceData & ResourceVersionData) {
- const params = pick(parentNode, ['owner', 'identifier', 'id', 'name', 'version', 'is_public']);
+ const params = pick(parentNode, [
+ 'owner',
+ 'identifier',
+ 'id',
+ 'name',
+ 'version',
+ 'is_public',
+ 'git_id',
+ ]);
const res = await getDatasetInfo(params);
if (res && res.data) {
const dataset = res.data as DatasetData;
@@ -192,7 +200,15 @@ export class ModelSelector implements SelectorTypeInfo {
}
async getFiles(_parentKey: string, parentNode: ResourceData & ResourceVersionData) {
- const params = pick(parentNode, ['owner', 'identifier', 'id', 'name', 'version', 'is_public']);
+ const params = pick(parentNode, [
+ 'owner',
+ 'identifier',
+ 'id',
+ 'name',
+ 'version',
+ 'is_public',
+ 'git_id',
+ ]);
const res = await getModelInfo(params);
if (res && res.data) {
const model = res.data as ModelData;
diff --git a/react-ui/src/components/ResourceSelectorModal/index.tsx b/react-ui/src/components/ResourceSelectorModal/index.tsx
index b16bf71f..e17422e9 100644
--- a/react-ui/src/components/ResourceSelectorModal/index.tsx
+++ b/react-ui/src/components/ResourceSelectorModal/index.tsx
@@ -22,6 +22,7 @@ export { ResourceSelectorType, selectorTypeConfig };
export type ResourceSelectorResponse = {
activeTab: CommonTabKeys; // 是我的还是公开的
id: string; // 数据集\模型 id
+ git_id: number; // 数据集\模型 git id
name: string; // 数据集\模型 name
identifier: string; // 数据集\模型 identifier
owner: string; // 数据集\模型 owner
@@ -243,6 +244,7 @@ function ResourceSelectorModal({
const name = (treeNode?.title ?? '') as string;
const identifier = (treeNode?.identifier ?? '') as string;
const owner = (treeNode?.owner ?? '') as string;
+ const gitId = (treeNode?.git_id ?? '') as number;
const childNode = treeNode.children.filter((v: TreeDataNode) => v.key === last)[0];
const res =
type === ResourceSelectorType.Mirror
@@ -258,6 +260,7 @@ function ResourceSelectorModal({
version,
identifier,
owner,
+ git_id: gitId,
};
onOk?.(res);
} else {
diff --git a/react-ui/src/components/UploadBlock/index.less b/react-ui/src/components/UploadBlock/index.less
index 2f800bac..7ab5e205 100644
--- a/react-ui/src/components/UploadBlock/index.less
+++ b/react-ui/src/components/UploadBlock/index.less
@@ -8,6 +8,10 @@
border: 1px dashed rgba(81, 76, 249, 0.5);
border-radius: 6px;
+ &--error {
+ border: 1px dashed @error-color !important;
+ }
+
&__img {
width: 24px;
}
diff --git a/react-ui/src/components/UploadBlock/index.tsx b/react-ui/src/components/UploadBlock/index.tsx
index 839d517a..124fe504 100644
--- a/react-ui/src/components/UploadBlock/index.tsx
+++ b/react-ui/src/components/UploadBlock/index.tsx
@@ -4,6 +4,7 @@
* @Description: 上传组件的提示信息
*/
+import { Form } from 'antd';
import classNames from 'classnames';
import './index.less';
@@ -22,8 +23,18 @@ type UploadBlockProps = {
* 上传组件的提示信息
*/
function UploadBlock({ desc, image, className, style }: UploadBlockProps) {
+ const { status } = Form.Item.useStatus();
return (
-
+

.handle-span {
+ padding: 0 8px;
+ font-size: 12px;
+ color: var(--el-color-primary);
+ cursor: pointer;
+ &.is-disabled {
+ color: var(--el-color-primary-light-5);
+ }
+ }
+ & > .el-dropdown {
+ font-size: 12px;
+ }
+ }
+ }
+ }
+ }
+ }
+ .el-pagination.is-background {
+ position: relative;
+ justify-content: flex-end;
+ .el-pager {
+ li {
+ &.is-active {
+ background-color: var(--el-color-primary) !important;
+ }
+ }
+ }
+ }
+
+}
+
+// 解决el-tabs__headers排列在l-tabs__content下面的问题
+.el-tabs {
+ &.el-tabs--top {
+ flex-direction: column !important;
+ }
+ .el-tabs__header {
+ order: 1;
+ }
+ .el-tabs__content {
+ order: 2;
+ }
+}
+
+
+// 覆盖aicc-theme样式
+.aicc-theme .el-checkbox__inner::after {
+ left: 0 !important;
+ right: 0 !important;
+ margin: auto !important;
+}
+
+.aicc-theme .el-radio__inner::after {
+ width: 6px !important;
+ height: 6px !important;
+}
+
+.qiankun-micro-app-container{
+ padding: 70px 24px 24px;
+}
\ No newline at end of file
diff --git a/react-ui/src/pages/Application/Execute/index.tsx b/react-ui/src/pages/Application/Execute/index.tsx
index e524ad10..07c539f7 100644
--- a/react-ui/src/pages/Application/Execute/index.tsx
+++ b/react-ui/src/pages/Application/Execute/index.tsx
@@ -130,6 +130,7 @@ function AppExecute() {
const [searchParams] = useSearchParams();
const isView = searchParams.get('from') === 'view'; // 查看任务详情
const taskId = searchParams.get('id'); // 任务详情
+ const source = searchParams.get('source'); // 来源
const [inputParameters, setInputParameters] = useState
>();
const [taskName, setTaskName] = useState();
const [activeTab, setActiveTab] = useState(TaskTabKey.Result);
diff --git a/react-ui/src/pages/Application/Info/components/PublishModal/index.tsx b/react-ui/src/pages/Application/Info/components/PublishModal/index.tsx
index 13372a81..7bea7e30 100644
--- a/react-ui/src/pages/Application/Info/components/PublishModal/index.tsx
+++ b/react-ui/src/pages/Application/Info/components/PublishModal/index.tsx
@@ -1,20 +1,21 @@
import KFDefaultEmpty from '@/components/KFDefaultEmpty';
import KFModal from '@/components/KFModal';
import { ServiceRunStatus } from '@/enums';
+import { ApplicationSource, ServiceVersionData } from '@/pages/Application/types';
import { getServiceVersionsReq } from '@/services/modelDeployment';
import { to } from '@/utils/promise';
import { Flex, type ModalProps } from 'antd';
import classNames from 'classnames';
import { useCallback, useEffect, useState } from 'react';
-import { ServiceVersionData } from '../../../types';
import styles from './index.less';
interface PublishModalProps extends Omit {
serviceId: number;
+ serviceSource: ApplicationSource; // 应用来源
onOk?: (id: number) => void;
}
-function PublishModal({ serviceId, onOk, ...rest }: PublishModalProps) {
+function PublishModal({ serviceId, serviceSource, onOk, ...rest }: PublishModalProps) {
const [versions, setVersions] = useState([]);
const [selectedVersion, setSelectedVersion] = useState();
@@ -24,13 +25,14 @@ function PublishModal({ serviceId, onOk, ...rest }: PublishModalProps) {
size: 100,
run_state: ServiceRunStatus.Running,
service_id: serviceId,
+ source: serviceSource,
};
const [res] = await to(getServiceVersionsReq(params));
if (res && res.data) {
const { content = [] } = res.data;
setVersions(content);
}
- }, [serviceId]);
+ }, [serviceId, serviceSource]);
useEffect(() => {
getVersions();
diff --git a/react-ui/src/pages/Application/Info/components/TaskList/index.tsx b/react-ui/src/pages/Application/Info/components/TaskList/index.tsx
index 3f2e69f9..7918aa87 100644
--- a/react-ui/src/pages/Application/Info/components/TaskList/index.tsx
+++ b/react-ui/src/pages/Application/Info/components/TaskList/index.tsx
@@ -6,7 +6,7 @@
import KFIcon from '@/components/KFIcon';
import { AppRunStatus, appStatusOptions } from '@/enums';
-import { ServiceTaskData } from '@/pages/Application/types';
+import { ApplicationSource, ServiceTaskData } from '@/pages/Application/types';
import { deleteTaskInfoReq, getTaskListReq } from '@/services/modelDeployment';
import { elapsedTime } from '@/utils/date';
import { to } from '@/utils/promise';
@@ -33,10 +33,11 @@ const allServiceStatusOptions = [{ label: '全部', value: '' }, ...appStatusOpt
type VersionListProps = {
isMine: boolean;
serviceId: number;
+ serviceSource: ApplicationSource; // 应用来源
onNavigate: (url: string) => void;
};
-function VersionList({ isMine, serviceId, onNavigate }: VersionListProps) {
+function VersionList({ isMine, serviceId, serviceSource, onNavigate }: VersionListProps) {
const { message } = App.useApp();
const [searchstatus, setSearchStatus] = useState(); // 查询状态
const [searchTaskName, setSearchTaskName] = useState(); // 查询版本
@@ -56,6 +57,7 @@ function VersionList({ isMine, serviceId, onNavigate }: VersionListProps) {
task_name: searchTaskName || undefined,
status: searchstatus || undefined,
service_id: serviceId,
+ source: serviceSource,
};
const [res] = await to(getTaskListReq(params));
if (res && res.data) {
@@ -63,7 +65,7 @@ function VersionList({ isMine, serviceId, onNavigate }: VersionListProps) {
setTableData(content);
setTotal(totalElements);
}
- }, [pagination, searchstatus, searchTaskName, serviceId]);
+ }, [pagination, searchstatus, searchTaskName, serviceId, serviceSource]);
useEffect(() => {
getTaskList();
@@ -119,9 +121,11 @@ function VersionList({ isMine, serviceId, onNavigate }: VersionListProps) {
});
};
- // 查看详情
+ // 查看任务详情
const toDetail = (record: ServiceTaskData) => {
- onNavigate(`execute/${record.service_version_id}?id=${record.id}&from=view`);
+ onNavigate(
+ `execute/${record.service_version_id}?source=${serviceSource}id=${record.id}&from=view`,
+ );
};
// 分页切换
diff --git a/react-ui/src/pages/Application/Info/components/VersionList/index.tsx b/react-ui/src/pages/Application/Info/components/VersionList/index.tsx
index 59dffa8f..ccfc13fe 100644
--- a/react-ui/src/pages/Application/Info/components/VersionList/index.tsx
+++ b/react-ui/src/pages/Application/Info/components/VersionList/index.tsx
@@ -121,6 +121,7 @@ function VersionList({
version: searchVersion || undefined,
run_state: searchStatus || undefined,
service_id: serviceId,
+ source: serviceSource,
};
const [res] = await to(getServiceVersionsReq(params));
if (res && res.data) {
@@ -133,7 +134,7 @@ function VersionList({
setTableData(content);
setTotal(totalElements);
}
- }, [pagination, searchStatus, searchVersion, serviceId]);
+ }, [pagination, searchStatus, searchVersion, serviceId, serviceSource]);
useEffect(() => {
getServiceVersions();
@@ -141,7 +142,7 @@ function VersionList({
// 删除模型部署
const deleteServiceVersion = async (record: ServiceVersionData) => {
- const [res] = await to(deleteServiceVersionReq(record.id));
+ const [res] = await to(deleteServiceVersionReq(serviceSource, record.id));
if (res) {
message.success('删除成功');
// 如果是一页的唯一数据,删除后,请求第一页的数据
@@ -157,7 +158,7 @@ function VersionList({
// 停止模型部署
const stopServiceVersion = async (record: ServiceVersionData) => {
- const [res] = await to(stopServiceVersionReq(record.id));
+ const [res] = await to(stopServiceVersionReq(serviceSource, record.id));
if (res) {
message.success('操作成功');
getServiceVersions();
@@ -229,12 +230,12 @@ function VersionList({
// 查看详情
const toDetail = (record: ServiceVersionData) => {
- onNavigate(`versionInfo/${record.id}`);
+ onNavigate(`versionInfo/${record.id}?source=${serviceSource}`);
};
// 测试运行
const toRun = (record: ServiceVersionData) => {
- onNavigate(`execute/${record.id}`);
+ onNavigate(`execute/${record.id}?source=${serviceSource}`);
};
// 分页切换
@@ -259,6 +260,7 @@ function VersionList({
openAntdModal(VersionCompareModal, {
version1: selectedRowKeys[0] as string,
version2: selectedRowKeys[1] as string,
+ serviceSource: serviceSource,
});
};
@@ -273,7 +275,7 @@ function VersionList({
},
};
- // 去模型
+ // 去模型页
const gotoModel = (record: ServiceVersionData, e: React.MouseEvent) => {
e.stopPropagation();
@@ -448,7 +450,7 @@ function VersionList({
dataIndex: 'template',
key: 'template',
width: '20%',
- render: tableCellRender(true),
+ render: () => {}
,
},
{
title: '应用描述',
diff --git a/react-ui/src/pages/Application/Info/index.tsx b/react-ui/src/pages/Application/Info/index.tsx
index 23d5d2f1..480db3a1 100644
--- a/react-ui/src/pages/Application/Info/index.tsx
+++ b/react-ui/src/pages/Application/Info/index.tsx
@@ -7,7 +7,7 @@
import KFIcon from '@/components/KFIcon';
import KFMdEditor from '@/components/KFMdEditor';
import { useCacheState } from '@/hooks/useCacheState';
-import { ApplicationSource, appSourceOptions } from '@/pages/Application/types';
+import { ApplicationSource, appSourceOptions, ServiceData } from '@/pages/Application/types';
import {
cancelFavoriteServiceReq,
deleteServiceReq,
@@ -161,6 +161,7 @@ function AppInfo() {
if (is_public) {
const { close } = openAntdModal(PublishModal, {
serviceId: serviceId,
+ serviceSource: serviceInfo!.source,
onOk: (publishVersion) => {
close();
updateService({
diff --git a/react-ui/src/pages/Application/VersionInfo/index.tsx b/react-ui/src/pages/Application/VersionInfo/index.tsx
index 448e2a97..d814eb7d 100644
--- a/react-ui/src/pages/Application/VersionInfo/index.tsx
+++ b/react-ui/src/pages/Application/VersionInfo/index.tsx
@@ -6,7 +6,7 @@
import VersionBasicInfo from '@/pages/Application/components/VersionBasicInfo';
import { getServiceVersionInfoReq } from '@/services/modelDeployment';
import { to } from '@/utils/promise';
-import { useParams } from '@umijs/max';
+import { useParams, useSearchParams } from '@umijs/max';
import { useEffect, useState } from 'react';
import { ServiceVersionData } from '../types';
import styles from './index.less';
@@ -15,11 +15,13 @@ function ServiceVersionInfo() {
const [versionInfo, setVersionInfo] = useState(undefined);
const params = useParams();
const id = params.versionId;
+ const [searchParams] = useSearchParams();
+ const source = searchParams.get('source');
useEffect(() => {
// 获取服务版本详情
const getServiceVersionInfo = async () => {
- const [res] = await to(getServiceVersionInfoReq(id));
+ const [res] = await to(getServiceVersionInfoReq(Number(source), id!));
if (res && res.data) {
setVersionInfo(res.data);
}
@@ -28,7 +30,7 @@ function ServiceVersionInfo() {
if (id) {
getServiceVersionInfo();
}
- }, [id]);
+ }, [id, source]);
return (
diff --git a/react-ui/src/pages/Application/components/CreateAppModal/index.tsx b/react-ui/src/pages/Application/components/CreateAppModal/index.tsx
index 13fd38d1..fbd587d9 100644
--- a/react-ui/src/pages/Application/components/CreateAppModal/index.tsx
+++ b/react-ui/src/pages/Application/components/CreateAppModal/index.tsx
@@ -209,7 +209,7 @@ function CreateAppModal({ serviceId, onOk, ...rest }: CreateAppModalModalProps)
source === ApplicationSource.SuperCompute && (
{
if (versionInfo) {
- let model, envVariables;
- // 模型
- if (versionInfo.model && typeof versionInfo.model === 'object') {
- model = changePropertyName(versionInfo.model, { show_value: 'showValue' });
- // 接口返回是数据没有 value 值,但是 form 需要 value
- // model.value = model.showValue;
- }
+ let envVariables;
// 环境变量
if (versionInfo.env_variables && typeof versionInfo.env_variables === 'object') {
envVariables = Object.entries(versionInfo.env_variables).map(([key, value]) => ({
@@ -81,8 +74,7 @@ function CreateAppVersionModal({
}));
}
const formData = {
- ...omit(versionInfo, 'model', 'env_variables'),
- model: model,
+ ...omit(versionInfo, 'env_variables'),
env_variables: envVariables,
service_name: serviceName,
};
@@ -101,9 +93,13 @@ function CreateAppVersionModal({
// 根据后台要求,修改表单数据
const object = {
...omit(formData, ['replicas', 'env_variables']),
- replicas: Number(formData.replicas),
+ replicas:
+ formData.replicas !== undefined && formData.replicas !== null
+ ? Number(formData.replicas)
+ : undefined,
env_variables: envVariables,
service_id: serviceId,
+ source: serviceSource,
};
const params =
diff --git a/react-ui/src/pages/Application/components/VersionCompareModal/index.tsx b/react-ui/src/pages/Application/components/VersionCompareModal/index.tsx
index 09615048..21389d9b 100644
--- a/react-ui/src/pages/Application/components/VersionCompareModal/index.tsx
+++ b/react-ui/src/pages/Application/components/VersionCompareModal/index.tsx
@@ -1,7 +1,7 @@
import KFModal from '@/components/KFModal';
import { ServiceRunStatus } from '@/enums';
import { useSystemResource } from '@/hooks/useComputingResource';
-import { type ServiceVersionData } from '@/pages/Application/types';
+import { ApplicationSource, type ServiceVersionData } from '@/pages/Application/types';
import { getServiceVersionCompareReq } from '@/services/modelDeployment';
import { isEmpty } from '@/utils';
import { to } from '@/utils/promise';
@@ -28,6 +28,7 @@ type FiledType = {
interface VersionCompareModalProps extends Omit {
version1: string;
version2: string;
+ serviceSource: ApplicationSource; // 应用来源
}
// 格式化环境变量
@@ -40,7 +41,12 @@ const formatEnvText = (env: Record) => {
.join(',');
};
-function VersionCompareModal({ version1, version2, ...rest }: VersionCompareModalProps) {
+function VersionCompareModal({
+ version1,
+ version2,
+ serviceSource,
+ ...rest
+}: VersionCompareModalProps) {
const [compareData, setCompareData] = useState(undefined);
const getResourceDescription = useSystemResource();
@@ -61,21 +67,21 @@ function VersionCompareModal({ version1, version2, ...rest }: VersionCompareModa
key: 'image',
text: '镜像',
format: (data: any) => {
- return data?.path;
- },
- },
- {
- key: 'code_config',
- text: '代码配置',
- format: (data: any) => {
- return data?.show_value;
+ return data?.showValue;
},
},
+ // {
+ // key: 'code_config',
+ // text: '代码配置',
+ // format: (data: any) => {
+ // return data?.showValue;
+ // },
+ // },
{
key: 'model',
text: '模型',
format: (data: any) => {
- return data?.show_value;
+ return data?.showValue;
},
},
{
@@ -114,6 +120,7 @@ function VersionCompareModal({ version1, version2, ...rest }: VersionCompareModa
const params = {
id1: version1,
id2: version2,
+ source: serviceSource,
};
const [res] = await to(getServiceVersionCompareReq(params));
if (res && res.data) {
@@ -122,7 +129,7 @@ function VersionCompareModal({ version1, version2, ...rest }: VersionCompareModa
};
getServiceVersionCompare();
- }, [version1, version2]);
+ }, [version1, version2, serviceSource]);
const {
version1: v1 = {} as ServiceVersionData,
diff --git a/react-ui/src/pages/Application/types.ts b/react-ui/src/pages/Application/types.ts
index 2542557e..6760fca3 100644
--- a/react-ui/src/pages/Application/types.ts
+++ b/react-ui/src/pages/Application/types.ts
@@ -21,7 +21,7 @@ export type ServiceData = {
public_version_id?: number; // 发布的版本id
tag?: string;
comment_count: number;
- source?: ApplicationSource; // 来源
+ source: ApplicationSource; // 来源
};
// 服务版本数据类型
diff --git a/react-ui/src/pages/Application/useSourceContext.tsx b/react-ui/src/pages/Application/useSourceContext.tsx
new file mode 100644
index 00000000..c58e62cd
--- /dev/null
+++ b/react-ui/src/pages/Application/useSourceContext.tsx
@@ -0,0 +1,46 @@
+// src/contexts/SourceContext.tsx
+import { createContext, ReactNode, useContext, useState } from 'react';
+import { ApplicationSource } from './types';
+
+// 1. 定义 Context 值的类型
+interface SourceContextType {
+ source: T | null;
+ setSource: (value: T | null) => void;
+}
+
+// 2. 创建 Context,指定默认值为 undefined(更好的类型安全)
+const SourceContext = createContext(undefined);
+
+// 3. 定义 Provider 组件的 Props 类型
+interface SourceProviderProps {
+ children: ReactNode;
+ initialValue?: T | null;
+}
+
+// 4. 创建泛型 Provider 组件
+export function SourceProvider({ children, initialValue = null }: SourceProviderProps) {
+ const [source, setSource] = useState(initialValue as T | null);
+
+ // 优化性能
+ const contextValue = {
+ source,
+ setSource,
+ };
+
+ return {children};
+}
+
+// 5. 创建自定义 Hook(支持泛型)
+export function useSourceContext(): SourceContextType {
+ const context = useContext(SourceContext);
+
+ if (context === undefined) {
+ throw new Error('useSourceContext must be used within a SourceProvider');
+ }
+
+ return context as SourceContextType;
+}
+
+export function useTypedSourceContext() {
+ return useSourceContext();
+}
diff --git a/react-ui/src/pages/Dataset/components/AddDatasetModal/index.tsx b/react-ui/src/pages/Dataset/components/AddDatasetModal/index.tsx
index b3cc7fe8..6785ca92 100644
--- a/react-ui/src/pages/Dataset/components/AddDatasetModal/index.tsx
+++ b/react-ui/src/pages/Dataset/components/AddDatasetModal/index.tsx
@@ -3,7 +3,7 @@ import KFModal from '@/components/KFModal';
import { ModelType } from '@/enums';
import { useTags } from '@/hooks/useTags';
import { CategoryData, DataSource, UniResourceData } from '@/pages/Dataset/config';
-import { createBigDatasetReq, getBigDatasetAllLabelReq } from '@/services/bigModel';
+import { getBigDatasetAllLabelReq } from '@/services/bigModel';
import { addDataset, editDatasetReq, getAssetIcon } from '@/services/dataset/index.js';
import { to } from '@/utils/promise';
import {
@@ -22,7 +22,7 @@ import styles from './index.less';
interface FormData {
name: string;
type: ModelType;
- labelId?: string;
+ label_id?: string;
data_type: string[];
data_tag: string[];
preview_url: string;
@@ -86,6 +86,13 @@ function AddDatasetModal({ info, onOk, ...rest }: AddDatasetModalProps) {
const [res] = await to(getBigDatasetAllLabelReq());
if (res && res.data) {
setSceneOptions(res.data);
+ } else {
+ setSceneOptions([
+ {
+ id: 1,
+ name: 'test',
+ },
+ ]);
}
};
@@ -95,29 +102,19 @@ function AddDatasetModal({ info, onOk, ...rest }: AddDatasetModalProps) {
const isBigDataset = type === ModelType.Big;
const data_type = dataTypes?.join(',');
const data_tag = dataTags?.join(',');
- const reqParams = isBigDataset
- ? {
- name: rest.name,
- description: rest.description,
- previewUrl: rest.preview_url,
- labelId: rest.labelId,
- dataType: data_type,
- dataTag: data_tag,
- source: DataSource.Create,
- public: false,
- }
- : {
- ...rest,
- dataset_source: DataSource.Create,
- data_type,
- data_tag,
- is_public: false,
- };
+ const reqParams = {
+ ...rest,
+ dataset_source: DataSource.Create,
+ data_type,
+ data_tag,
+ is_public: false,
+ is_hot_stone: isBigDataset,
+ };
const reqBody = info
- ? { ...info, ...omit(reqParams, ['dataset_source', 'is_public', 'source', 'public']) }
+ ? { ...info, ...omit(reqParams, ['dataset_source', 'is_public', 'is_hot_stone']) }
: reqParams;
- const request = isBigDataset ? createBigDatasetReq : info ? editDatasetReq : addDataset;
+ const request = info ? editDatasetReq : addDataset;
const [res] = await to(request(reqBody));
if (res) {
onOk?.(isBigDataset, res.data);
@@ -193,7 +190,7 @@ function AddDatasetModal({ info, onOk, ...rest }: AddDatasetModalProps) {
return (
+
+
+
+
{({ getFieldValue }) => {
const type = getFieldValue('type');
@@ -294,21 +304,7 @@ function AddDatasetModal({ info, onOk, ...rest }: AddDatasetModalProps) {
allowClear
/>
- ) : (
-
-
-
- );
+ ) : null;
}}
diff --git a/react-ui/src/pages/Dataset/components/AddModelModal/index.tsx b/react-ui/src/pages/Dataset/components/AddModelModal/index.tsx
index 42b434fd..139ea0ed 100644
--- a/react-ui/src/pages/Dataset/components/AddModelModal/index.tsx
+++ b/react-ui/src/pages/Dataset/components/AddModelModal/index.tsx
@@ -3,7 +3,6 @@ import KFModal from '@/components/KFModal';
import { ModelType } from '@/enums';
import { useTags } from '@/hooks/useTags';
import { CategoryData, DataSource, UniResourceData } from '@/pages/Dataset/config';
-import { createBigModelReq } from '@/services/bigModel';
import { addModel, editModelReq, getAssetIcon } from '@/services/dataset/index.js';
import { to } from '@/utils/promise';
import { Form, Input, Radio, Select, TreeSelect, type ModalProps } from 'antd';
@@ -71,28 +70,18 @@ function AddModelModal({ info, onOk, ...rest }: AddModelModalProps) {
const isBigModel = type === ModelType.Big;
const model_type = modelTypes?.join(',');
const model_tag = modelTags?.join(',');
- const reqParams = isBigModel
- ? {
- name: rest.name,
- description: rest.description,
- // previewUrl: rest.preview_url,
- modelType: model_type,
- modelTag: model_tag,
- source: '第三方模型',
- sourceMmp: DataSource.Create,
- isPublic: false,
- }
- : {
- ...rest,
- model_type,
- model_tag,
- model_source: DataSource.Create,
- is_public: false,
- };
+ const reqParams = {
+ ...rest,
+ model_type,
+ model_tag,
+ model_source: DataSource.Create,
+ is_public: false,
+ is_hot_stone: isBigModel,
+ };
const reqBody = info
- ? { ...info, ...omit(reqParams, ['model_source', 'is_public', 'source', 'isPublic']) }
+ ? { ...info, ...omit(reqParams, ['model_source', 'is_public', 'is_hot_stone']) }
: reqParams;
- const request = isBigModel ? createBigModelReq : info ? editModelReq : addModel;
+ const request = info ? editModelReq : addModel;
const [res] = await to(request(reqBody));
if (res) {
onOk?.(isBigModel, res.data);
diff --git a/react-ui/src/pages/Dataset/components/AddVersionModal/index.tsx b/react-ui/src/pages/Dataset/components/AddVersionModal/index.tsx
index 6754c766..7d90c0c1 100644
--- a/react-ui/src/pages/Dataset/components/AddVersionModal/index.tsx
+++ b/react-ui/src/pages/Dataset/components/AddVersionModal/index.tsx
@@ -12,6 +12,7 @@ import { useEffect, useState } from 'react';
interface AddVersionModalProps extends Omit
{
resourceType: ResourceType;
resourceId: number;
+ gitId: number;
resoureName: string;
owner: string;
identifier: string;
@@ -22,6 +23,7 @@ interface AddVersionModalProps extends Omit {
function AddVersionModal({
resourceType,
resourceId,
+ gitId,
resoureName,
owner,
identifier,
@@ -85,6 +87,7 @@ function AddVersionModal({
};
});
const params = {
+ git_id: gitId,
id: resourceId,
identifier,
is_public,
diff --git a/react-ui/src/pages/Dataset/components/ResourceInfo/index.tsx b/react-ui/src/pages/Dataset/components/ResourceInfo/index.tsx
index 777f2275..02bbe317 100644
--- a/react-ui/src/pages/Dataset/components/ResourceInfo/index.tsx
+++ b/react-ui/src/pages/Dataset/components/ResourceInfo/index.tsx
@@ -16,7 +16,6 @@ import {
import GraphLegend from '@/pages/Model/components/GraphLegend';
import ModelEvolution from '@/pages/Model/components/ModelEvolution';
import ModelMetrics from '@/pages/Model/components/ModelMetrics';
-import { praiseResourceReq, unpraiseResourceReq } from '@/services/dataset';
import { changePropertyName } from '@/utils';
import { ResourceCreatedMessage, VersionChangedMessage } from '@/utils/constant';
import { openAntdModal } from '@/utils/modal';
@@ -52,8 +51,9 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => {
const [versionInfo, setVersionInfo] = useState({} as ResourceData); // 版本详情
const locationParams = useParams();
const [searchParams] = useSearchParams();
- const resourceIdStr = locationParams.id ?? ''; // 大模型是字符串
- const resourceId = Number(resourceIdStr); // 小模型是整型
+ const resourceId = Number(locationParams.id ?? ''); // 数据库 id
+ const gitId = Number(searchParams.get('gitId')); // git id
+ const hotStoneId = searchParams.get('hotStoneId') ?? ''; // 火石 id
// 模型演化传入的 tab
const defaultTab = searchParams.get('tab') || ResourceInfoTabKeys.Introduction;
// 模型演化传入的版本
@@ -84,7 +84,7 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => {
const getResourceDetail = useCallback(
async (version?: string) => {
const params = {
- id: resourceId,
+ git_id: gitId,
owner,
name,
identifier,
@@ -101,13 +101,13 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => {
}
}
},
- [config, resourceId, owner, name, identifier, is_public],
+ [config, gitId, owner, name, identifier, is_public],
);
// 获取大模型详情
const getBigModelResourceDetail = useCallback(async () => {
const request = config.getBigInfo;
- const [res] = await to(request(resourceIdStr));
+ const [res] = await to(request(hotStoneId));
if (res && res.data) {
if (resourceType === ResourceType.Dataset) {
const data = changePropertyName(res.data.content[0], {
@@ -131,7 +131,7 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => {
setResourceInfo(data as UniResourceData);
}
}
- }, [config, resourceType, resourceIdStr]);
+ }, [config, resourceType, hotStoneId]);
// 获取大模型版本详情
const getBigModelResourceVersionDetail = useCallback(
@@ -165,7 +165,7 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => {
if (isBigModel) {
const request = config.getBigVersions;
- const [res] = await to(request(resourceIdStr));
+ const [res] = await to(request(hotStoneId));
if (res && res.data) {
const content =
resourceType === ResourceType.Dataset ? res.data : res.data.flintModelRepoDTOList;
@@ -207,7 +207,7 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => {
}
}
},
- [isBigModel, resourceIdStr, config, owner, identifier, versionParam, resourceType],
+ [isBigModel, hotStoneId, config, owner, identifier, versionParam, resourceType],
);
// 获取详情
@@ -249,7 +249,7 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => {
if (resourceType === ResourceType.Dataset) {
const { close } = openAntdModal(AddBigDatasetVersionModal, {
resourceType: resourceType,
- resourceId: resourceIdStr,
+ resourceId: hotStoneId,
resoureName: name,
onOk: () => {
getVersionList(true);
@@ -262,7 +262,7 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => {
tenantId: tenantId ?? resourceInfo.tenantId ?? '',
username: currentUser?.userName ?? '',
resourceType: resourceType,
- resourceId: resourceIdStr,
+ resourceId: hotStoneId,
resoureName: name,
onOk: () => {
getVersionList(true);
@@ -275,6 +275,7 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => {
const { close } = openAntdModal(AddVersionModal, {
resourceType: resourceType,
resourceId: resourceId,
+ gitId: gitId,
resoureName: name,
owner: owner,
identifier: identifier,
@@ -291,7 +292,8 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => {
isBigModel,
resourceType,
resourceId,
- resourceIdStr,
+ hotStoneId,
+ gitId,
owner,
identifier,
is_public,
@@ -332,7 +334,7 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => {
openAntdModal(VersionCompareModal, {
versions: versionList!.map((v) => v.name),
resourceType: resourceType,
- repo_id: resourceId,
+ repo_id: gitId,
owner,
identifier,
is_public: is_public,
@@ -358,7 +360,7 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => {
} else {
const request = config.deleteVersion;
const params = {
- id: resourceId,
+ git_id: gitId,
owner,
identifier,
relative_paths: versionInfo.relative_paths,
@@ -396,15 +398,8 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => {
return;
}
- const request =
- resourceInfo.praised === true
- ? isBigModel
- ? config.unpraiseBigModel
- : unpraiseResourceReq
- : isBigModel
- ? config.praiseBigModel
- : praiseResourceReq;
- const [res] = await to(request(resourceInfo.id));
+ const request = resourceInfo.praised === true ? config.unpraiseReq : config.praiseReq;
+ const [res] = await to(request(resourceId));
if (res) {
message.success('操作成功');
setResourceInfo((prev) => ({
@@ -450,11 +445,8 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => {
const publishResource = async () => {
const request = config.publish;
const params = {
- id: isBigModel ? resourceIdStr : resourceId,
- owner,
+ id: resourceId,
name,
- identifier,
- is_hot_stone: isBigModel ? ModelType.Big : ModelType.Small,
};
const [res] = await to(request(params));
if (res) {
@@ -471,13 +463,13 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => {
};
// 编辑简介
- const handleEditIntro = async (id: number, identifier: string, description: string) => {
+ const handleEditIntro = async (gitId: number, identifier: string, description: string) => {
if (isBigModel) {
return;
} else {
const request = config.editIntro;
const params = {
- id,
+ git_id: gitId,
identifier,
description,
};
@@ -500,7 +492,7 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => {
{
label: `指标参数`,
children: (
{
children: (
{
function ResourceIntro({
resourceType,
info,
- resourceId,
+ gitId,
identifier,
// name,
description,
@@ -321,7 +321,7 @@ function ResourceIntro({
noDataTitle={isMine ? `请编辑${config.name}介绍` : `暂无${config.name}介绍`}
placeholder="请输入"
editBtnTitle="编辑简介"
- onChange={(value) => onEditIntro?.(resourceId, identifier, value)}
+ onChange={(value) => onEditIntro?.(gitId, identifier, value)}
>
)}
diff --git a/react-ui/src/pages/Dataset/components/ResourceList/index.tsx b/react-ui/src/pages/Dataset/components/ResourceList/index.tsx
index e28d288c..0919026f 100644
--- a/react-ui/src/pages/Dataset/components/ResourceList/index.tsx
+++ b/react-ui/src/pages/Dataset/components/ResourceList/index.tsx
@@ -8,7 +8,6 @@ import { to } from '@/utils/promise';
import { modalConfirm } from '@/utils/ui';
import { useNavigate } from '@umijs/max';
import { App, Button, Pagination, PaginationProps } from 'antd';
-import { pick } from 'lodash';
import { Ref, forwardRef, useCallback, useEffect, useImperativeHandle, useState } from 'react';
import { ResourceData, ResourceType, resourceConfig } from '../../config';
import AddDatasetModal from '../AddDatasetModal';
@@ -105,17 +104,9 @@ function ResourceList(
);
// 删除请求
- const deleteRecord = async (params: {
- owner: string;
- identifier: string;
- id: number | string;
- is_public: boolean;
- is_hot_stone: number;
- }) => {
- const { is_hot_stone, ...rest } = params;
- const isBigModel = is_hot_stone;
- const request = is_hot_stone ? config.deleteBigModel : config.deleteRecord;
- const [res] = await to(request(isBigModel ? rest.id : rest));
+ const deleteRecord = async (id: number) => {
+ const request = config.deleteRecord;
+ const [res] = await to(request(id));
if (res) {
message.success('删除成功');
// 如果是一页的唯一数据,删除后,请求第一页的数据
@@ -146,7 +137,7 @@ function ResourceList(
title: config.deleteModalTitle,
content: '删除后将不可恢复,请谨慎操作!',
onOk: () => {
- deleteRecord(pick(record, ['owner', 'identifier', 'id', 'is_public', 'is_hot_stone']));
+ deleteRecord(record.id);
},
});
};
@@ -162,10 +153,12 @@ function ResourceList(
const prefix = config.prefix;
if (!record.is_hot_stone) {
navigate(
- `/dataset/${prefix}/info/${record.id}?name=${record.name}&owner=${record.owner}&identifier=${record.identifier}&is_public=${record.is_public}&source=${ModelType.Small}`,
+ `/dataset/${prefix}/info/${record.id}?gitId=${record.git_id}&name=${record.name}&owner=${record.owner}&identifier=${record.identifier}&is_public=${record.is_public}&source=${ModelType.Small}`,
);
} else {
- navigate(`/dataset/${prefix}/info/${record.id}?name=${record.name}&source=${ModelType.Big}`);
+ navigate(
+ `/dataset/${prefix}/info/${record.id}?hotStoneId=${record.hot_stone_id}&name=${record.name}&source=${ModelType.Big}`,
+ );
}
};
@@ -192,11 +185,11 @@ function ResourceList(
const prefix = config.prefix;
if (!isBig) {
navigate(
- `/dataset/${prefix}/info/${record.id}?name=${record.name}&owner=${record.owner}&identifier=${record.identifier}&is_public=false&source=${ModelType.Small}`,
+ `/dataset/${prefix}/info/${record.id}?gitId=${record.git_id}&name=${record.name}&owner=${record.owner}&identifier=${record.identifier}&is_public=false&source=${ModelType.Small}`,
);
} else {
navigate(
- `/dataset/${prefix}/info/${record.id}?name=${record.name}&source=${ModelType.Big}`,
+ `/dataset/${prefix}/info/${record.id}?hotStoneId=${record.hot_stone_id}&name=${record.name}&source=${ModelType.Big}`,
);
}
setTimeout(() => {
diff --git a/react-ui/src/pages/Dataset/components/ResourceVersion/index.tsx b/react-ui/src/pages/Dataset/components/ResourceVersion/index.tsx
index 8386ac3c..68cd7094 100644
--- a/react-ui/src/pages/Dataset/components/ResourceVersion/index.tsx
+++ b/react-ui/src/pages/Dataset/components/ResourceVersion/index.tsx
@@ -79,7 +79,7 @@ function ResourceVersion({ resourceType, info, isBig }: ResourceVersionProps) {
const url = config.downloadAllAction;
downLoadZip(url, {
name: info.name,
- id: info.id,
+ git_id: info.git_id,
version: info.version,
identifier: info.identifier,
owner: info.owner,
diff --git a/react-ui/src/pages/Dataset/config.tsx b/react-ui/src/pages/Dataset/config.tsx
index d0ed6aa8..2b982289 100644
--- a/react-ui/src/pages/Dataset/config.tsx
+++ b/react-ui/src/pages/Dataset/config.tsx
@@ -13,9 +13,9 @@ import {
getBigModelListReq,
getBigModelVersionInfoReq,
getBigModelVersionsReq,
- praiseBigDatesetReq,
+ praiseBigDatasetReq,
praiseBigModelReq,
- unpraiseBigDatesetReq,
+ unpraiseBigDatasetReq,
unpraiseBigModelReq,
} from '@/services/bigModel';
import {
@@ -41,8 +41,12 @@ import {
getModelList,
getModelNextVersionReq,
getModelVersionList,
+ praiseDatasetReq,
+ praiseModelReq,
publishDatasetReq,
publishModelReq,
+ unpraiseDatasetReq,
+ unpraiseModelReq,
} from '@/services/dataset/index.js';
import { Response } from '@/types';
import { formatDate } from '@/utils/date';
@@ -71,6 +75,8 @@ type ResourceTypeInfo = {
getInfo: (params: any) => Promise; // 获取详情
compareVersion: (params: any) => Promise; // 版本对比
getNextVersion: (params: any) => Promise; // 获取下一个版本
+ praiseReq: (params: any) => Promise; // 点赞
+ unpraiseReq: (params: any) => Promise; // 取消点赞
getBigList: (params: any) => Promise; // 获取大模型列表
getBigInfo: (params: any) => Promise; // 获取大模型详情
getBigVersions: (params: any) => Promise; // 获取大模型版本列表
@@ -112,14 +118,16 @@ export const resourceConfig: Record = {
getInfo: getDatasetInfo,
compareVersion: compareDatasetVersion,
getNextVersion: getDatasetNextVersionReq,
+ praiseReq: praiseDatasetReq,
+ unpraiseReq: unpraiseDatasetReq,
getBigList: getBigDatasetListReq,
getBigInfo: getBigDatasetInfoReq,
getBigVersions: getBigDatasetVersionsReq,
getBigVersionInfo: getBigDatasetVersionInfoReq,
deleteBigVersion: deleteBigDatasetVersionReq,
deleteBigModel: deleteBigDatasetReq,
- praiseBigModel: praiseBigDatesetReq,
- unpraiseBigModel: unpraiseBigDatesetReq,
+ praiseBigModel: praiseBigDatasetReq,
+ unpraiseBigModel: unpraiseBigDatasetReq,
publish: publishDatasetReq,
getFileUrl: getDatasetFileUrlReq,
editIntro: editDatasetIntroReq,
@@ -162,6 +170,8 @@ export const resourceConfig: Record = {
getInfo: getModelInfo,
compareVersion: compareModelVersion,
getNextVersion: getModelNextVersionReq,
+ praiseReq: praiseModelReq,
+ unpraiseReq: unpraiseModelReq,
getBigList: getBigModelListReq,
getBigInfo: getBigModelInfoReq,
getBigVersions: getBigModelVersionsReq,
@@ -219,7 +229,9 @@ export interface CategoryData {
// 数据集、模型列表数据
export interface ResourceData {
resourceType: ResourceType.Dataset | ResourceType.Model; // 用于 ts 类型判断
- id: number | string;
+ id: number;
+ git_id: number;
+ hot_stone_id: string;
name: string;
identifier: string;
owner: string;
diff --git a/react-ui/src/pages/Experiment/components/ExportModelModal/index.tsx b/react-ui/src/pages/Experiment/components/ExportModelModal/index.tsx
index 966549a2..858ca325 100644
--- a/react-ui/src/pages/Experiment/components/ExportModelModal/index.tsx
+++ b/react-ui/src/pages/Experiment/components/ExportModelModal/index.tsx
@@ -105,6 +105,7 @@ function ExportModelModal({
const resource = getSelectedResource(id);
const params = {
...formData,
+ git_id: resource?.git_id,
identifier: resource?.identifier,
owner: resource?.owner,
is_public: resource?.is_public,
diff --git a/react-ui/src/pages/Model/components/ModelEvolution/index.tsx b/react-ui/src/pages/Model/components/ModelEvolution/index.tsx
index 0e549ff8..442e4357 100644
--- a/react-ui/src/pages/Model/components/ModelEvolution/index.tsx
+++ b/react-ui/src/pages/Model/components/ModelEvolution/index.tsx
@@ -25,6 +25,7 @@ import {
type modeModelEvolutionProps = {
resourceId: number;
+ gitId: number;
identifier: string;
version?: string;
isActive: boolean;
@@ -34,6 +35,7 @@ type modeModelEvolutionProps = {
let graph: Graph;
function ModelEvolution({
resourceId,
+ gitId,
identifier,
version,
isActive,
@@ -90,6 +92,7 @@ function ModelEvolution({
const params = {
id: resourceId,
+ git_id: gitId,
identifier,
version,
};
@@ -108,7 +111,7 @@ function ModelEvolution({
} else {
clearGraphData();
}
- }, [resourceId, identifier, version]);
+ }, [resourceId, gitId, identifier, version]);
useEffectWhen(getModelAtlas, isActive, [resourceId, identifier, version]);
diff --git a/react-ui/src/pages/Model/components/ModelMetrics/index.tsx b/react-ui/src/pages/Model/components/ModelMetrics/index.tsx
index 5e299c68..d301f2f1 100644
--- a/react-ui/src/pages/Model/components/ModelMetrics/index.tsx
+++ b/react-ui/src/pages/Model/components/ModelMetrics/index.tsx
@@ -26,13 +26,13 @@ type TableData = {
};
type ModelMetricsProps = {
- resourceId: number;
+ gitId: number;
identifier: string;
owner: string;
version: string; // 当前版本
};
-function ModelMetrics({ resourceId, identifier, owner, version }: ModelMetricsProps) {
+function ModelMetrics({ gitId, identifier, owner, version }: ModelMetricsProps) {
const [pagination, setPagination] = useState({
current: 1,
pageSize: 10,
@@ -134,7 +134,7 @@ function ModelMetrics({ resourceId, identifier, owner, version }: ModelMetricsPr
metrics: selectedMetrics,
type: MetricsType.Train,
identifier: identifier,
- repo_id: resourceId,
+ repo_id: gitId,
};
const [res] = await to(getModelVersionsMetricsReq(params));
if (res && res.data) {
@@ -147,7 +147,7 @@ function ModelMetrics({ resourceId, identifier, owner, version }: ModelMetricsPr
} else {
setChartData(undefined);
}
- }, [selectedMetrics, selectedRowKeys, identifier, resourceId]);
+ }, [selectedMetrics, selectedRowKeys, identifier, gitId]);
// 分页切换
const handleTableChange: TableProps['onChange'] = (
diff --git a/react-ui/src/pages/ModelDeployment/CreateVersion/index.tsx b/react-ui/src/pages/ModelDeployment/CreateVersion/index.tsx
index a76d67da..84e9b735 100644
--- a/react-ui/src/pages/ModelDeployment/CreateVersion/index.tsx
+++ b/react-ui/src/pages/ModelDeployment/CreateVersion/index.tsx
@@ -11,6 +11,7 @@ import ResourceSelect, {
type ParameterInputObject,
} from '@/components/ResourceSelect';
import SubAreaTitle from '@/components/SubAreaTitle';
+import { ApplicationSource } from '@/pages/Application/types';
import {
createServiceVersionReq,
getServiceInfoReq,
@@ -128,6 +129,7 @@ function CreateServiceVersion() {
replicas: Number(formData.replicas),
env_variables: envVariables,
service_id: serviceId,
+ source: ApplicationSource.Platform,
};
const params =
diff --git a/react-ui/src/pages/ModelDeployment/ServiceInfo/index.tsx b/react-ui/src/pages/ModelDeployment/ServiceInfo/index.tsx
index 91489f8e..972ad20c 100644
--- a/react-ui/src/pages/ModelDeployment/ServiceInfo/index.tsx
+++ b/react-ui/src/pages/ModelDeployment/ServiceInfo/index.tsx
@@ -10,6 +10,7 @@ import SubAreaTitle from '@/components/SubAreaTitle';
import { ServiceRunStatus, serviceStatusOptions } from '@/enums';
import { useCacheState } from '@/hooks/useCacheState';
import { useSystemResource } from '@/hooks/useComputingResource';
+import { ApplicationSource } from '@/pages/Application/types';
import { ModelData } from '@/pages/Dataset/config';
import {
deleteServiceVersionReq,
@@ -107,6 +108,7 @@ function ServiceInfo() {
version: searchText || undefined,
run_state: serviceStatus,
service_id: serviceId,
+ source: ApplicationSource.Platform,
};
const [res] = await to(getServiceVersionsReq(params));
if (res && res.data) {
@@ -131,7 +133,7 @@ function ServiceInfo() {
// 删除模型部署
const deleteServiceVersion = async (record: ServiceVersionData) => {
- const [res] = await to(deleteServiceVersionReq(record.id));
+ const [res] = await to(deleteServiceVersionReq(ApplicationSource.Platform, record.id));
if (res) {
message.success('删除成功');
// 如果是一页的唯一数据,删除后,请求第一页的数据
@@ -148,7 +150,7 @@ function ServiceInfo() {
// 停止模型部署
const stopServiceVersion = async (record: ServiceVersionData) => {
- const [res] = await to(stopServiceVersionReq(record.id));
+ const [res] = await to(stopServiceVersionReq(ApplicationSource.Platform, record.id));
if (res) {
message.success('操作成功');
getServiceVersions();
diff --git a/react-ui/src/pages/ModelDeployment/VersionInfo/index.tsx b/react-ui/src/pages/ModelDeployment/VersionInfo/index.tsx
index 23d836f5..172be7fa 100644
--- a/react-ui/src/pages/ModelDeployment/VersionInfo/index.tsx
+++ b/react-ui/src/pages/ModelDeployment/VersionInfo/index.tsx
@@ -7,6 +7,7 @@ import IframePage from '@/components/IFramePage';
import KFIcon from '@/components/KFIcon';
import PageTitle from '@/components/PageTitle';
import { ServiceRunStatus } from '@/enums';
+import { ApplicationSource } from '@/pages/Application/types';
import { getServiceVersionInfoReq } from '@/services/modelDeployment';
import { to } from '@/utils/promise';
import { useParams } from '@umijs/max';
@@ -32,7 +33,7 @@ function ServiceVersionInfo() {
useEffect(() => {
// 获取服务版本详情
const getServiceVersionInfo = async () => {
- const [res] = await to(getServiceVersionInfoReq(id));
+ const [res] = await to(getServiceVersionInfoReq(ApplicationSource.Platform, id!));
if (res && res.data) {
setVersionInfo(res.data);
}
diff --git a/react-ui/src/pages/ModelDeployment/components/ServerLog/index.tsx b/react-ui/src/pages/ModelDeployment/components/ServerLog/index.tsx
index 40665ef0..ce6d1042 100644
--- a/react-ui/src/pages/ModelDeployment/components/ServerLog/index.tsx
+++ b/react-ui/src/pages/ModelDeployment/components/ServerLog/index.tsx
@@ -1,3 +1,4 @@
+import { ApplicationSource } from '@/pages/Application/types';
import { ServiceVersionData } from '@/pages/ModelDeployment/types';
import { getServiceVersionLogReq } from '@/services/modelDeployment';
import { to } from '@/utils/promise';
@@ -62,6 +63,7 @@ function ServerLog({ info }: ServerLogProps) {
start_time: logTime[0],
end_time: logTime[1],
id: info.id,
+ source: ApplicationSource.Platform,
};
const [res] = await to(getServiceVersionLogReq(params));
if (res && res.data) {
diff --git a/react-ui/src/pages/ModelDeployment/components/UserGuide/index.tsx b/react-ui/src/pages/ModelDeployment/components/UserGuide/index.tsx
index 49eca067..a693c271 100644
--- a/react-ui/src/pages/ModelDeployment/components/UserGuide/index.tsx
+++ b/react-ui/src/pages/ModelDeployment/components/UserGuide/index.tsx
@@ -1,3 +1,4 @@
+import { ApplicationSource } from '@/pages/Application/types';
import { ServiceVersionData } from '@/pages/ModelDeployment/types';
import { getServiceVersionDocsReq } from '@/services/modelDeployment';
import { to } from '@/utils/promise';
@@ -15,7 +16,7 @@ function UserGuide({ info }: UserGuideProps) {
// 获取服务文档
const getModelDeploymentDocs = async () => {
if (info) {
- const [res] = await to(getServiceVersionDocsReq(info.id));
+ const [res] = await to(getServiceVersionDocsReq(ApplicationSource.Platform, info.id));
if (res && res.data && res.data.docs) {
setDocs(JSON.stringify(res.data.docs, null, 2));
}
diff --git a/react-ui/src/pages/ModelDeployment/components/VersionCompareModal/index.tsx b/react-ui/src/pages/ModelDeployment/components/VersionCompareModal/index.tsx
index f65e13d9..3ed96542 100644
--- a/react-ui/src/pages/ModelDeployment/components/VersionCompareModal/index.tsx
+++ b/react-ui/src/pages/ModelDeployment/components/VersionCompareModal/index.tsx
@@ -1,6 +1,7 @@
import KFModal from '@/components/KFModal';
import { ServiceRunStatus } from '@/enums';
import { useSystemResource } from '@/hooks/useComputingResource';
+import { ApplicationSource } from '@/pages/Application/types';
import { type ServiceVersionData } from '@/pages/ModelDeployment/types';
import { getServiceVersionCompareReq } from '@/services/modelDeployment';
import { isEmpty } from '@/utils';
@@ -61,21 +62,21 @@ function VersionCompareModal({ version1, version2, ...rest }: VersionCompareModa
key: 'image',
text: '镜像',
format: (data: any) => {
- return data?.path;
- },
- },
- {
- key: 'code_config',
- text: '代码配置',
- format: (data: any) => {
- return data?.show_value;
+ return data?.showValue;
},
},
+ // {
+ // key: 'code_config',
+ // text: '代码配置',
+ // format: (data: any) => {
+ // return data?.show_value;
+ // },
+ // },
{
key: 'model',
text: '模型',
format: (data: any) => {
- return data?.show_value;
+ return data?.showValue;
},
},
{
@@ -114,6 +115,7 @@ function VersionCompareModal({ version1, version2, ...rest }: VersionCompareModa
const params = {
id1: version1,
id2: version2,
+ source: ApplicationSource.Platform,
};
const [res] = await to(getServiceVersionCompareReq(params));
if (res && res.data) {
diff --git a/react-ui/src/pages/Pipeline/Info/index.jsx b/react-ui/src/pages/Pipeline/Info/index.jsx
index 8af67999..e5a3dc98 100644
--- a/react-ui/src/pages/Pipeline/Info/index.jsx
+++ b/react-ui/src/pages/Pipeline/Info/index.jsx
@@ -384,7 +384,6 @@ const EditPipeline = () => {
// ...dag,
// nodes: newNodes,
// });
-
}
}
};
diff --git a/react-ui/src/services/bigModel/index.ts b/react-ui/src/services/bigModel/index.ts
index 43f2faaf..00dd60de 100644
--- a/react-ui/src/services/bigModel/index.ts
+++ b/react-ui/src/services/bigModel/index.ts
@@ -127,15 +127,6 @@ export function getBigDatasetVersionFilesReq(datasetId: any) {
});
}
-// 下载数据集版本单个文件
-export function downloadBigDatasetFile(params: any) {
- return request(`${DatasetAPIPrefix}/flintDataset/download`, {
- method: 'GET',
- params,
- skipValidating: false,
- });
-}
-
// 上传小数据集文件
export function uploadDatasetSmallFile(data: any, onUploadProgress: (progressEvent: any) => void) {
return request(`${DatasetAPIPrefix}/file/upload`, {
@@ -200,14 +191,14 @@ export const getPromptTemplateUrl = (dataType: BigDataType, isMarked: number) =>
};
// 点赞
-export function praiseBigDatesetReq(id: any) {
+export function praiseBigDatasetReq(id: any) {
return request(`${DatasetAPIPrefix}/flintDatasetGroupLike/praise/${id}`, {
method: 'POST',
});
}
// 取消点赞
-export function unpraiseBigDatesetReq(id: any) {
+export function unpraiseBigDatasetReq(id: any) {
return request(`${DatasetAPIPrefix}/flintDatasetGroupLike/cancelPraise/${id}`, {
method: 'POST',
});
diff --git a/react-ui/src/services/dataset/index.js b/react-ui/src/services/dataset/index.js
index 63bf7c91..c82610ab 100644
--- a/react-ui/src/services/dataset/index.js
+++ b/react-ui/src/services/dataset/index.js
@@ -28,17 +28,16 @@ export function getDatasetInfo(params) {
// 新增数据集
export function addDataset(data) {
- return request(`/api/mmp/newdataset/addDatasetAndVersion`, {
+ return request(`/api/mmp/newdataset/addDataset`, {
method: 'POST',
data,
});
}
// 删除数据集
-export function deleteDataset(params) {
- return request(`/api/mmp/newdataset/deleteDataset`, {
+export function deleteDataset(id) {
+ return request(`/api/mmp/newdataset/deleteDataset/${id}`, {
method: 'DELETE',
- params,
});
}
@@ -130,6 +129,20 @@ export function editDatasetReq(data) {
});
}
+// 点赞
+export function praiseDatasetReq(id) {
+ return request(`/api/mmp/newdataset/praise/${id}`, {
+ method: 'PUT',
+ });
+}
+
+// 取消点赞
+export function unpraiseDatasetReq(id) {
+ return request(`/api/mmp/newdataset/unpraise/${id}`, {
+ method: 'PUT',
+ });
+}
+
// ----------------------------模型---------------------------------
// 分页查询模型列表
@@ -149,10 +162,9 @@ export function addModel(data) {
}
// 删除模型
-export function deleteModel(params) {
- return request(`/api/mmp/newmodel/delete`, {
- method: 'DELETE',
- params,
+export function deleteModel(id) {
+ return request(`/api/mmp/newmodel/delete/${id}`, {
+ method: 'DELETE'
});
}
@@ -214,12 +226,12 @@ export function getModelAtlasReq(params) {
}
// 实验结果导出到模型
-export function exportModelReq(data) {
- return request(`/api/mmp/models/exportModel`, {
- method: 'POST',
- data,
- });
-}
+// export function exportModelReq(data) {
+// return request(`/api/mmp/models/exportModel`, {
+// method: 'POST',
+// data,
+// });
+// }
// 分页查询模型所有版本,带有参数和指标数据
export function getModelPageVersionsReq(params) {
@@ -245,25 +257,17 @@ export function compareModelVersion(data) {
});
}
-// 删除上传的文件
-export function deleteUploadFileReq(params) {
- return request(`/api/mmp/newdataset/deleteFile`, {
- method: 'DELETE',
- params,
- });
-}
-
// 点赞
-export function praiseResourceReq(id) {
+export function praiseModelReq(id) {
return request(`/api/mmp/newmodel/praise/${id}`, {
- method: 'POST',
+ method: 'PUT',
});
}
// 取消点赞
-export function unpraiseResourceReq(id) {
+export function unpraiseModelReq(id) {
return request(`/api/mmp/newmodel/unpraise/${id}`, {
- method: 'DELETE',
+ method: 'PUT',
});
}
@@ -341,3 +345,11 @@ export function getUploadFileListReq(params) {
skipLoading: true,
});
}
+
+// 删除上传的文件
+export function deleteUploadFileReq(params) {
+ return request(`/api/mmp/newdataset/deleteFile`, {
+ method: 'DELETE',
+ params,
+ });
+}
\ No newline at end of file
diff --git a/react-ui/src/services/external/index.ts b/react-ui/src/services/external/index.ts
index 4b798afb..04edb7af 100644
--- a/react-ui/src/services/external/index.ts
+++ b/react-ui/src/services/external/index.ts
@@ -78,7 +78,7 @@ export function jccGetResourcesReq(token: string, cardType: string) {
type: cardType,
},
resourceType: 'Train', //Inference
- clusterIDs: [],
+ clusterIDs: ['1865927992266461184'],
},
headers: {
authorization: `${token}`,
diff --git a/react-ui/src/services/huoshi.ts b/react-ui/src/services/huoshi.ts
index f2ce212b..043dc824 100644
--- a/react-ui/src/services/huoshi.ts
+++ b/react-ui/src/services/huoshi.ts
@@ -69,11 +69,20 @@ export const getHuoshiRoutes = async () => {
user: {
appList:menuInfo.data.appList,
userInfo: userInfo.data,
- tenantInfoList: tenantInfo.data,
- configInfo:configInfo.data,
+ tenant: tenantInfo.data,
+ gConfig:configInfo.data,
navList,
consoleList
},
}),
);
+ sessionStorage.setItem('globalState',JSON.stringify({
+ gConfig:configInfo.data,
+ userInfo:userInfo.data,
+ sysType:1
+ }))
+ localStorage.setItem('generate_subMenus','dataDistillation,dataEnhance,dataReflux,qaExtraction')
+ localStorage.setItem('getCurrentZoneFun','function(e){const t=e.url.split("/")[1];let r=[];const n=sessionStorage.getItem("currentZone");let o=[null,void 0,"null","undefined"].includes(n)?"default":n;if(localStorage.serviceList&&(r=JSON.parse(localStorage.serviceList)),r.length&&t){const e=r.find(e=>e.name===t);if(e?.zones){const t=e.zones.split(",");t.includes(o)||(o=t[0])}}return o}')
+ localStorage.setItem('processing_subMenus','dataClean,dataFormat,dataAnalysis')
+ localStorage.setItem('currentLanguage','zh_CN')
};
diff --git a/react-ui/src/services/modelDeployment/index.ts b/react-ui/src/services/modelDeployment/index.ts
index 27864d1a..31892aa9 100644
--- a/react-ui/src/services/modelDeployment/index.ts
+++ b/react-ui/src/services/modelDeployment/index.ts
@@ -75,7 +75,7 @@ export function cancelFavoriteServiceReq(id: any) {
// 获取服务版本列表
export function getServiceVersionsReq(data: any) {
- return request(`/api/mmp/service/serviceVersion`, {
+ return request(`/api/mmp/service/version/list`, {
method: 'GET',
params: data,
});
@@ -83,7 +83,7 @@ export function getServiceVersionsReq(data: any) {
// 创建服务版本
export function createServiceVersionReq(data: any) {
- return request(`/api/mmp/service/serviceVersion`, {
+ return request(`/api/mmp/service/version`, {
method: 'POST',
data,
});
@@ -91,43 +91,43 @@ export function createServiceVersionReq(data: any) {
// 更新服务版本
export function updateServiceVersionReq(data: any) {
- return request(`/api/mmp/service/serviceVersion`, {
+ return request(`/api/mmp/service/version`, {
method: 'PUT',
data,
});
}
// 删除服务版本
-export function deleteServiceVersionReq(id: any) {
- return request(`/api/mmp/service/serviceVersion/${id}`, {
+export function deleteServiceVersionReq(source: number, id: number | string) {
+ return request(`/api/mmp/service/version/${source}/${id}`, {
method: 'DELETE',
});
}
// 获取服务版本详情
-export function getServiceVersionInfoReq(id: any) {
- return request(`/api/mmp/service/serviceVersionDetail/${id}`, {
+export function getServiceVersionInfoReq(source: number, id: number | string) {
+ return request(`/api/mmp/service/version/${source}/${id}`, {
method: 'GET',
});
}
// 停止服务版本
-export function stopServiceVersionReq(id: any) {
- return request(`/api/mmp/service/stopServiceVersion/${id}`, {
+export function stopServiceVersionReq(source: number, id: number | string) {
+ return request(`/api/mmp/service/version/stop/${source}/${id}`, {
method: 'DELETE',
});
}
// 获取服务版本操作指南
-export function getServiceVersionDocsReq(id: any) {
- return request(`/api/mmp/service/getServiceVersionDocs/${id}`, {
+export function getServiceVersionDocsReq(source: number, id: number | string) {
+ return request(`/api/mmp/service/version/getDocs/${source}/${id}`, {
method: 'GET',
});
}
// 获取服务版本日志
export function getServiceVersionLogReq(params: any) {
- return request(`/api/mmp/service/getServiceVersionLog`, {
+ return request(`/api/mmp/service/version/getLog`, {
method: 'GET',
params,
});
@@ -135,7 +135,7 @@ export function getServiceVersionLogReq(params: any) {
// 获取服务版本对比
export function getServiceVersionCompareReq(params: any) {
- return request(`/api/mmp/service/serviceVersionCompare`, {
+ return request(`/api/mmp/service/version/compare`, {
method: 'GET',
params,
});
@@ -167,7 +167,7 @@ export function getTaskListReq(data: any) {
});
}
-// 获取应用任务列表
+// 获取应用任务详情
export function getTaskInfoReq(id: number | string) {
return request(`/api/mmp/trainingTask/${id}`, {
method: 'GET',
diff --git a/react-ui/src/state/jcdResource.ts b/react-ui/src/state/jcdResource.ts
index 0eb513e9..73316166 100644
--- a/react-ui/src/state/jcdResource.ts
+++ b/react-ui/src/state/jcdResource.ts
@@ -1,5 +1,4 @@
import {
- jccGetClusterListReq,
jccGetImagesReq,
jccGetResourcesReq,
jccGetResourceTypesReq,
@@ -165,15 +164,15 @@ export const getResourceTypes = async () => {
value: v.type,
}));
}
- const [clusterRes] = await to(jccGetClusterListReq(state.token));
- if (
- clusterRes &&
- clusterRes.code === 200 &&
- clusterRes.data &&
- Array.isArray(clusterRes.data.list)
- ) {
- state.clusters = clusterRes.data.list;
- }
+ // const [clusterRes] = await to(jccGetClusterListReq(state.token));
+ // if (
+ // clusterRes &&
+ // clusterRes.code === 200 &&
+ // clusterRes.data &&
+ // Array.isArray(clusterRes.data.list)
+ // ) {
+ // state.clusters = clusterRes.data.list;
+ // }
};
export const setCurrentType = async (cardType: string | undefined | null) => {
diff --git a/react-ui/火石前端部署.md b/react-ui/火石前端部署.md
new file mode 100644
index 00000000..3194c06d
--- /dev/null
+++ b/react-ui/火石前端部署.md
@@ -0,0 +1,58 @@
+### 大模型训练 & 数据管理 (已完成)
+> 前端包路径 /home/ruoyi/projects/flint
+ nginx 修改 115 行
+ ```nginx
+ location /flint {
+ add_header 'Access-Control-Allow-Private-Network' 'true' always;
+ add_header 'Access-Control-Allow-Origin' $cors_origin always;
+ alias /home/ruoyi/projects/flint;
+ try_files $uri $uri/ @fallback_flint;
+ location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
+ add_header 'Access-Control-Allow-Origin' $cors_origin always;
+ expires 1y;
+ add_header Cache-Control "public, immutable";
+ }
+ }
+
+ location @fallback_flint {
+ root /home/ruoyi/projects;
+ try_files /ruoyi-ui/index.html =404;
+ add_header 'Access-Control-Allow-Origin' $cors_origin always;
+ }
+ ```
+
+### 服务管理 (开发中)
+
+> 前端包路径 /home/ruoyi/projects/trainfer
+ nginx 修改 127 行
+ ```nginx
+ location /trainfer {
+ add_header 'Access-Control-Allow-Private-Network' 'true' always;
+ add_header 'Access-Control-Allow-Origin' $cors_origin always;
+ alias /home/ruoyi/projects/trainfer;
+ try_files $uri $uri/ @fallback_flint;
+ location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
+ add_header 'Access-Control-Allow-Origin' $cors_origin always;
+ expires 1y;
+ add_header Cache-Control "public, immutable";
+ }
+ }
+ ```
+
+### 集群管理 (开发中)
+
+> 前端包路径 /home/ruoyi/projects/portal
+ nginx 修改 139 行
+ ```nginx
+ location /portal {
+ add_header 'Access-Control-Allow-Private-Network' 'true' always;
+ add_header 'Access-Control-Allow-Origin' $cors_origin always;
+ alias /home/ruoyi/projects/portal;
+ try_files $uri $uri/ @fallback_flint;
+ location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
+ add_header 'Access-Control-Allow-Origin' $cors_origin always;
+ expires 1y;
+ add_header Cache-Control "public, immutable";
+ }
+ }
+ ```
\ No newline at end of file
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java
index 1d5b33b0..f0b2385a 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java
@@ -241,28 +241,21 @@ public class NewDatasetFromGitController {
@PostMapping("/publish")
@ApiOperation(value = "发布")
- @OperationNotification(value = "发布的数据集#{#datasetVo.name}需要审核,请查看",type = 2,receiver = "ADMIN",notificationUrl="/system/approval")
+ @OperationNotification(value = "发布的数据集#{#datasetVo.name}需要审核,请查看", type = 2, receiver = "ADMIN", notificationUrl = "/system/approval")
public AjaxResult publish(@RequestBody NewDatasetVo datasetVo, HttpServletRequest request) throws Exception {
LoginUser loginUser = SecurityUtils.getLoginUser();
return AjaxResult.success(newDatasetService.publish(datasetVo, loginUser, request));
}
- @PostMapping("/privateToPublic")
- @ApiOperation(value = "私有库变共有库")
- public AjaxResult privateToPublic(@RequestBody NewDatasetVo datasetVo, HttpServletRequest request) throws Exception {
- newDatasetService.privateToPublic(datasetVo, request);
- return AjaxResult.success();
- }
-
- @PostMapping("/praise")
+ @PutMapping("/praise/{id}")
@ApiOperation(value = "点赞一个项目")
- public AjaxResult praise(@RequestBody NewDatasetVo datasetVo, HttpServletRequest request) throws Exception {
- return AjaxResult.success(this.newDatasetService.praise(datasetVo, request));
+ public AjaxResult praise(@PathVariable("id") Integer id, HttpServletRequest request) throws Exception {
+ return AjaxResult.success(this.newDatasetService.praise(id, request));
}
- @PostMapping("/unpraise")
+ @PutMapping("/unpraise/{id}")
@ApiOperation(value = "取消点赞一个项目")
- public AjaxResult unpraise(@RequestBody NewDatasetVo datasetVo, HttpServletRequest request) throws Exception {
- return AjaxResult.success(this.newDatasetService.unpraise(datasetVo, request));
+ public AjaxResult unpraise(@PathVariable("id") Integer id, HttpServletRequest request) throws Exception {
+ return AjaxResult.success(this.newDatasetService.unpraise(id, request));
}
}
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java
index 6d8cc1d6..a9698d1c 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java
@@ -167,8 +167,8 @@ public class NewModelFromGitController extends BaseController {
@GetMapping("/getModelDependencyTree")
@ApiOperation(value = "获取模型依赖关系树")
- public AjaxResult getModelDependencyTree(@RequestParam("id") Integer id, @RequestParam("identifier") String identifier, @RequestParam("version") String version) throws Exception {
- return AjaxResult.success(this.modelsService.getModelDependencyTree(id, identifier, version));
+ public AjaxResult getModelDependencyTree(@RequestParam("git_id") Integer gitId, @RequestParam("identifier") String identifier, @RequestParam("version") String version) throws Exception {
+ return AjaxResult.success(this.modelsService.getModelDependencyTree(gitId, identifier, version));
}
@DeleteMapping("/delete/{id}")
@@ -200,16 +200,16 @@ public class NewModelFromGitController extends BaseController {
return AjaxResult.success(this.modelsService.getVersionsCompare(queryModelMetricsVo));
}
- @PostMapping("/praise")
+ @PutMapping("/praise/{id}")
@ApiOperation(value = "点赞一个项目")
- public AjaxResult praise(@RequestBody NewModel newModel, HttpServletRequest request) throws Exception {
- return AjaxResult.success(this.modelsService.praise(newModel, request));
+ public AjaxResult praise(@PathVariable("id") Integer id, HttpServletRequest request) throws Exception {
+ return AjaxResult.success(this.modelsService.praise(id, request));
}
- @PostMapping("/unpraise")
+ @PutMapping("/unpraise/{id}")
@ApiOperation(value = "取消点赞一个项目")
- public AjaxResult unpraise(@RequestBody NewModel newModel, HttpServletRequest request) throws Exception {
- return AjaxResult.success(this.modelsService.unpraise(newModel, request));
+ public AjaxResult unpraise(@PathVariable("id") Integer id, HttpServletRequest request) throws Exception {
+ return AjaxResult.success(this.modelsService.unpraise(id, request));
}
@PostMapping("/publish")
@@ -219,11 +219,4 @@ public class NewModelFromGitController extends BaseController {
LoginUser loginUser = SecurityUtils.getLoginUser();
return AjaxResult.success(modelsService.publish(modelsVo, loginUser, request));
}
-
- @PostMapping("/privateToPublic")
- @ApiOperation(value = "私有库变共有库")
- public AjaxResult privateToPublic(@RequestBody ModelsVo modelsVo, HttpServletRequest request) throws Exception {
- modelsService.privateToPublic(modelsVo, request);
- return AjaxResult.success();
- }
}
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DvcService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DvcService.java
deleted file mode 100644
index 34c5ab25..00000000
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DvcService.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.ruoyi.platform.service;
-
-public interface DvcService {
-
- //使用dvc初始化,跟踪,push到远程仓库的接口
- public void initaddpushDvc(String localPath) throws Exception ;
-
-}
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java
index 1ad06a73..6e1f0375 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java
@@ -64,15 +64,15 @@ public interface ModelsService {
Map getVersionsCompare(QueryModelMetricsVo queryModelMetricsVo) throws Exception;
- String praise(NewModel newModel, HttpServletRequest request) throws Exception;
+ String praise(Integer id, HttpServletRequest request) throws Exception;
- String unpraise(NewModel newModel, HttpServletRequest request) throws Exception;
+ String unpraise(Integer id, HttpServletRequest request) throws Exception;
String getNextVersion(ModelsVersion modelsVersion) throws Exception;
- void privateToPublic(ModelsVo modelsVo,HttpServletRequest request) throws Exception;
+ void privateToPublic(NewModel model, HttpServletRequest request) throws Exception;
- String publish(ModelsVo modelsVo, LoginUser loginUser,HttpServletRequest request) throws Exception;
+ String publish(ModelsVo modelsVo, LoginUser loginUser, HttpServletRequest request) throws Exception;
void updateDesc(ModelsVo modelsVo) throws Exception;
}
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java
index 8250dee9..f2b9e4f4 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java
@@ -56,11 +56,11 @@ public interface NewDatasetService {
String publish(NewDatasetVo datasetVo, LoginUser loginUser, HttpServletRequest request) throws Exception;
- void privateToPublic(NewDatasetVo newDatasetVo, HttpServletRequest request) throws Exception;
+ void privateToPublic(NewDataset newDataset, HttpServletRequest request) throws Exception;
void updateDesc(NewDatasetVo datasetVo) throws Exception;
- String praise(NewDatasetVo datasetVo, HttpServletRequest request) throws Exception;
+ String praise(Integer id, HttpServletRequest request) throws Exception;
- String unpraise(NewDatasetVo datasetVo, HttpServletRequest request) throws Exception;
+ String unpraise(Integer id, HttpServletRequest request) throws Exception;
}
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ApprovalServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ApprovalServiceImpl.java
index 5b635193..d7d06fef 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ApprovalServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ApprovalServiceImpl.java
@@ -141,12 +141,12 @@ public class ApprovalServiceImpl implements ApprovalService {
String content = approvalRequest.getContent();
switch (approvalRequest.getType()) {
case "DATASET":
- NewDatasetVo dataset = JSONUtil.toBean(content, NewDatasetVo.class);
+ NewDataset dataset = JSONUtil.toBean(content, NewDataset.class);
newDatasetService.privateToPublic(dataset,request);
break;
case "MODEL":
- ModelsVo models = JSONUtil.toBean(content, ModelsVo.class);
- modelsService.privateToPublic(models,request);
+ NewModel model = JSONUtil.toBean(content, NewModel.class);
+ modelsService.privateToPublic(model,request);
break;
}
}
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DvcServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DvcServiceImpl.java
deleted file mode 100644
index 192dfe7c..00000000
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DvcServiceImpl.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.ruoyi.platform.service.impl;
-
-import com.ruoyi.common.security.utils.SecurityUtils;
-import com.ruoyi.platform.service.DvcService;
-import com.ruoyi.platform.utils.DVCUtils;
-import com.ruoyi.system.api.model.LoginUser;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-
-@Service
-public class DvcServiceImpl implements DvcService {
- @Value("${minio.accessKey}")
- String accessKeyId;
- @Value("${minio.secretKey}")
- String secretAccessKey;
- @Value("${minio.endpoint}")
- String endpoint;
- @Resource
- private DVCUtils dvcUtils;
- @Override
- public void initaddpushDvc(String localPath) throws Exception {
- LoginUser loginUser = SecurityUtils.getLoginUser();
- // dvc init 初始化
- dvcUtils.dvcInit(localPath);
- // 配置远程S3地址
- dvcUtils.dvcRemoteAdd(localPath,"");
-// dvcUtils.dvcConfigS3Credentials(localPath,endpoint, accessKeyId, secretAccessKey);
- // dvc 跟踪
- dvcUtils.dvcAdd(localPath , "data");
- // git commit
- dvcUtils.gitCommit(localPath, "commit from ci4s with "+loginUser.getUsername());
- // dvc push 到远程S3
- dvcUtils.dvcPush(localPath);
- }
-
-}
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java
index 6f98d3e4..e122a0b6 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java
@@ -512,7 +512,7 @@ public class ExperimentServiceImpl implements ExperimentService {
List