-
-
@@ -73,4 +84,4 @@ function ModelDeploymentInfo() {
);
}
-export default ModelDeploymentInfo;
+export default ServiceVersionInfo;
diff --git a/react-ui/src/pages/ModelDeployment/components/BasicInfo/index.tsx b/react-ui/src/pages/ModelDeployment/components/BasicInfo/index.tsx
index 73beba6f..e6f62cae 100644
--- a/react-ui/src/pages/ModelDeployment/components/BasicInfo/index.tsx
+++ b/react-ui/src/pages/ModelDeployment/components/BasicInfo/index.tsx
@@ -1,12 +1,13 @@
import LabelValue from '@/components/LabelValue';
import { useComputingResource } from '@/hooks/resource';
-import { ModelDeploymentData } from '@/pages/ModelDeployment/types';
+import { ServiceVersionData } from '@/pages/ModelDeployment/types';
import { formatDate } from '@/utils/date';
+import { Link } from '@umijs/max';
import { Col, Row } from 'antd';
-import ModelDeploymentStatusCell from '../ModelDeployStatusCell';
+import ServiceRunStatusCell from '../ModelDeployStatusCell';
type BasicInfoProps = {
- info?: ModelDeploymentData;
+ info?: ServiceVersionData;
};
function BasicInfo({ info }: BasicInfoProps) {
@@ -14,42 +15,75 @@ function BasicInfo({ info }: BasicInfoProps) {
// 格式化环境变量
const formatEnvText = () => {
- if (!info?.env) {
+ if (!info?.env_variables) {
return '--';
}
- const env = info.env;
+ const env = info.env_variables;
return Object.entries(env)
.map(([key, value]) => `${key}: ${value}`)
.join('\n');
};
+ const formatCodeConfig = () => {
+ if (info && info.code_config) {
+ const url = `${info.code_config.code_path}/tree/${info.code_config.branch}`;
+ return (
+
+ {info?.code_config?.show_value}
+
+ );
+ }
+ return undefined;
+ };
+
+ const formatResource = () => {
+ if (info && info.resource) {
+ return getResourceDescription(info.resource);
+ }
+ return undefined;
+ };
+
+ const formatModel = () => {
+ if (info && info.model) {
+ const model = info.model;
+ const path = `/dataset/model/info/${model.id}?version=${model.version}&name=${model.name}&owner=${model.owner}&identifier=${model.identifier}`;
+ return
{info?.model?.show_value};
+ }
+ return undefined;
+ };
+
return (
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
@@ -68,19 +102,11 @@ function BasicInfo({ info }: BasicInfoProps) {
-
+
-
-
-
-
-
diff --git a/react-ui/src/pages/ModelDeployment/components/ModelDeployStatusCell/index.tsx b/react-ui/src/pages/ModelDeployment/components/ModelDeployStatusCell/index.tsx
index b8942237..7029c8fd 100644
--- a/react-ui/src/pages/ModelDeployment/components/ModelDeployStatusCell/index.tsx
+++ b/react-ui/src/pages/ModelDeployment/components/ModelDeployStatusCell/index.tsx
@@ -3,42 +3,42 @@
* @Date: 2024-04-18 18:35:41
* @Description: 模型部署状态
*/
-import { ModelDeploymentStatus } from '@/enums';
+import { ServiceRunStatus } from '@/enums';
import styles from './index.less';
-export type ModelDeploymentStatusInfo = {
+export type ServiceRunStatusInfo = {
text: string;
classname: string;
};
-export const statusInfo: Record = {
- [ModelDeploymentStatus.Init]: {
+export const statusInfo: Record = {
+ [ServiceRunStatus.Init]: {
text: '启动中',
classname: styles['model-deployment-status-cell'],
},
- [ModelDeploymentStatus.Running]: {
+ [ServiceRunStatus.Running]: {
classname: styles['model-deployment-status-cell--running'],
text: '运行中',
},
- [ModelDeploymentStatus.Stopped]: {
+ [ServiceRunStatus.Stopped]: {
classname: styles['model-deployment-status-cell--stopped'],
text: '已停止',
},
- [ModelDeploymentStatus.Failed]: {
+ [ServiceRunStatus.Failed]: {
classname: styles['model-deployment-status-cell--error'],
text: '失败',
},
- [ModelDeploymentStatus.Pending]: {
+ [ServiceRunStatus.Pending]: {
classname: styles['model-deployment-status-cell--pending'],
text: '挂起中',
},
};
-function ModelDeploymentStatusCell(status?: ModelDeploymentStatus | null) {
+function ServiceRunStatusCell(status?: ServiceRunStatus | null) {
if (status === null || status === undefined || !statusInfo[status]) {
return --;
}
return {statusInfo[status].text};
}
-export default ModelDeploymentStatusCell;
+export default ServiceRunStatusCell;
diff --git a/react-ui/src/pages/ModelDeployment/components/ServerLog/index.tsx b/react-ui/src/pages/ModelDeployment/components/ServerLog/index.tsx
index 6f9cfe51..ad74986f 100644
--- a/react-ui/src/pages/ModelDeployment/components/ServerLog/index.tsx
+++ b/react-ui/src/pages/ModelDeployment/components/ServerLog/index.tsx
@@ -1,10 +1,9 @@
-import { ModelDeploymentData } from '@/pages/ModelDeployment/types';
-import { getModelDeploymentLogReq } from '@/services/modelDeployment';
+import { ServiceVersionData } from '@/pages/ModelDeployment/types';
+import { getServiceVersionLogReq } from '@/services/modelDeployment';
import { to } from '@/utils/promise';
import { DoubleRightOutlined } from '@ant-design/icons';
import { Button, DatePicker, type TimeRangePickerProps } from 'antd';
import dayjs from 'dayjs';
-import { pick } from 'lodash';
import { useEffect, useState } from 'react';
import styles from './index.less';
const { RangePicker } = DatePicker;
@@ -28,7 +27,7 @@ type LogData = {
};
type ServerLogProps = {
- info?: ModelDeploymentData;
+ info?: ServiceVersionData;
};
function ServerLog({ info }: ServerLogProps) {
@@ -64,9 +63,9 @@ function ServerLog({ info }: ServerLogProps) {
const params = {
start_time: logTime[0],
end_time: logTime[1],
- ...pick(info, ['service_id', 'service_ins_id']),
+ id: info.id,
};
- const [res] = await to(getModelDeploymentLogReq(params));
+ const [res] = await to(getServiceVersionLogReq(params));
if (res && res.data) {
setLogData((prev) => [...prev, res.data]);
setHasMore(!!res.data.log_content);
diff --git a/react-ui/src/pages/ModelDeployment/components/UserGuide/index.tsx b/react-ui/src/pages/ModelDeployment/components/UserGuide/index.tsx
index 995f4e40..c2b73d47 100644
--- a/react-ui/src/pages/ModelDeployment/components/UserGuide/index.tsx
+++ b/react-ui/src/pages/ModelDeployment/components/UserGuide/index.tsx
@@ -1,12 +1,11 @@
-import { ModelDeploymentData } from '@/pages/ModelDeployment/types';
-import { getModelDeploymentDocsReq } from '@/services/modelDeployment';
+import { ServiceVersionData } from '@/pages/ModelDeployment/types';
+import { getServiceVersionDocsReq } from '@/services/modelDeployment';
import { to } from '@/utils/promise';
-import { pick } from 'lodash';
import { useEffect, useState } from 'react';
import styles from './index.less';
type UserGuideProps = {
- info?: ModelDeploymentData;
+ info?: ServiceVersionData;
};
function UserGuide({ info }: UserGuideProps) {
@@ -18,8 +17,7 @@ function UserGuide({ info }: UserGuideProps) {
// 获取模型部署文档
const getModelDeploymentDocs = async () => {
if (info) {
- const params = pick(info, ['service_id', 'service_ins_id']);
- const [res] = await to(getModelDeploymentDocsReq(params));
+ const [res] = await to(getServiceVersionDocsReq(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/types.ts b/react-ui/src/pages/ModelDeployment/types.ts
index 4bdf28c8..d53655b2 100644
--- a/react-ui/src/pages/ModelDeployment/types.ts
+++ b/react-ui/src/pages/ModelDeployment/types.ts
@@ -1,31 +1,58 @@
-import { ModelDeploymentStatus } from '@/enums';
+import { ServiceRunStatus } from '@/enums';
-// 模型部署列表数据类型
-export type ModelDeploymentData = {
- service_id: number;
- service_ins_id: number;
- service_name: string;
- description: string;
- status: ModelDeploymentStatus;
- update_time: string;
- create_time: string;
+// 服务列表数据类型
+export type ServiceData = {
+ id: number; // 服务id
+ service_name: string; // 服务名称
+ service_type: string; // 服务类型
+ service_type_name: string; // 服务类型中文
+ description: string; // 描述
+ version_count: number; // 版本数量
created_by: string;
- model_path: string;
- url: string;
- image: string;
- replicas: number;
- resource: string;
+ create_time: string;
+ update_by: string;
+ update_time: string;
+};
+
+// 服务版本数据类型
+export type ServiceVersionData = {
+ id: number; // 版本id
+ service_id: number; // 服务id
+ service_name: string; // 服务名称
+ description: string; // 版本描述
+ version: string; // 版本
+ run_state: ServiceRunStatus; // 运行状态
+ image: string; // 镜像
+ replicas: number; // 副本数
+ resource: string; // 资源
+ mount_path: string; // 挂载路径
model: {
+ // 模型
id: number;
+ name: string;
version: string;
path: string;
+ identifier: string;
+ owner: string;
show_value: string;
};
- env: Record;
+ code_config: {
+ // 代码配置
+ code_path: string;
+ branch: string;
+ show_value: string;
+ };
+ env_variables: Record; // 环境变量
+ url: string; // API URL
+ deployment_name: string;
+ update_by: string;
+ update_time: string;
+ create_time: string;
+ created_by: string;
};
// 操作类型
-export enum ModelDeploymentOperationType {
+export enum ServiceOperationType {
Create = 'Create', // 创建
Update = 'Update', // 更新
Restart = 'Restart', // 重启
diff --git a/react-ui/src/pages/Pipeline/Info/index.jsx b/react-ui/src/pages/Pipeline/Info/index.jsx
index 9af2c422..b538fa50 100644
--- a/react-ui/src/pages/Pipeline/Info/index.jsx
+++ b/react-ui/src/pages/Pipeline/Info/index.jsx
@@ -433,7 +433,7 @@ const EditPipeline = () => {
fitView: true,
minZoom: 0.5,
maxZoom: 5,
- fitViewPadding: 300,
+ fitViewPadding: 200,
modes: {
default: [
// config the shouldBegin for drag-node to avoid node moving while dragging on the anchor-point circles
diff --git a/react-ui/src/pages/Pipeline/components/CodeSelectorModal/index.tsx b/react-ui/src/pages/Pipeline/components/CodeSelectorModal/index.tsx
index 523ca7bc..6a42535c 100644
--- a/react-ui/src/pages/Pipeline/components/CodeSelectorModal/index.tsx
+++ b/react-ui/src/pages/Pipeline/components/CodeSelectorModal/index.tsx
@@ -15,6 +15,8 @@ import { useEffect, useState } from 'react';
import CodeConfigItem from '../CodeConfigItem';
import styles from './index.less';
+export { type CodeConfigData };
+
export interface CodeSelectorModalProps extends Omit {
onOk?: (params: CodeConfigData | undefined) => void;
}
diff --git a/react-ui/src/pages/Pipeline/components/PipelineNodeDrawer/index.tsx b/react-ui/src/pages/Pipeline/components/PipelineNodeDrawer/index.tsx
index 1cea7dca..bea129dd 100644
--- a/react-ui/src/pages/Pipeline/components/PipelineNodeDrawer/index.tsx
+++ b/react-ui/src/pages/Pipeline/components/PipelineNodeDrawer/index.tsx
@@ -136,7 +136,6 @@ const PipelineNodeParameter = forwardRef(({ onFormChange }: PipelineNodeParamete
const { close } = openAntdModal(CodeSelectorModal, {
onOk: (res) => {
if (res) {
- console.log('res', res);
const value = JSON.stringify({
id: res.id,
name: res.code_repo_name,
diff --git a/react-ui/src/services/modelDeployment/index.ts b/react-ui/src/services/modelDeployment/index.ts
index 4492318d..eccf841e 100644
--- a/react-ui/src/services/modelDeployment/index.ts
+++ b/react-ui/src/services/modelDeployment/index.ts
@@ -5,73 +5,102 @@
*/
import { request } from '@umijs/max';
-// 分页查询模型部署列表
-export function getModelDeploymentListReq(data: any) {
- return request(`/api/v1/model/get`, {
+// 分页查询服务列表
+export function getServiceListReq(data: any) {
+ return request(`/api/mmp/service`, {
+ method: 'GET',
+ params: data,
+ });
+}
+
+// 创建推理服务
+export function createServiceReq(data: any) {
+ return request(`/api/mmp/service`, {
method: 'POST',
data,
});
}
-// 查询模型部署详情
-export function getModelDeploymentInfoReq(id: number) {
- return request(`/api/mmp/image/${id}`, {
+// 编辑推理服务
+export function updateServiceReq(data: any) {
+ return request(`/api/mmp/service`, {
+ method: 'PUT',
+ data,
+ });
+}
+
+// 删除推理服务
+export function deleteServiceReq(id: any) {
+ return request(`/api/mmp/service/${id}`, {
+ method: 'DELETE',
+ });
+}
+
+// 获取服务详情
+export function getServiceInfoReq(id: any) {
+ return request(`/api/mmp/service/serviceDetail/${id}`, {
method: 'GET',
});
}
-// 创建模型部署
-export function createModelDeploymentReq(data: any) {
- return request(`/api/v1/model/create`, {
- method: 'POST',
- data,
+// ------------------------------- 服务版本部分 ---------------------------------------------
+
+// 获取服务版本列表
+export function getServiceVersionsReq(data: any) {
+ return request(`/api/mmp/service/serviceVersion`, {
+ method: 'GET',
+ params: data,
});
}
-// 删除模型部署
-export function deleteModelDeploymentReq(data: any) {
- return request(`/api/v1/model/delete`, {
+// 创建服务版本
+export function createServiceVersionReq(data: any) {
+ return request(`/api/mmp/service/serviceVersion`, {
method: 'POST',
data,
});
}
-// 重启模型部署
-export function restartModelDeploymentReq(data: any) {
- return request(`/api/v1/model/restart`, {
- method: 'POST',
+// 更新服务版本
+export function updateServiceVersionReq(data: any) {
+ return request(`/api/mmp/service/serviceVersion`, {
+ method: 'PUT',
data,
});
}
-// 停止模型部署
-export function stopModelDeploymentReq(data: any) {
- return request(`/api/v1/model/stop`, {
- method: 'POST',
- data,
+// 删除服务版本
+export function deleteServiceVersionReq(id: any) {
+ return request(`/api/mmp/service/serviceVersion/${id}`, {
+ method: 'DELETE',
});
}
-// 更新模型部署
-export function updateModelDeploymentReq(data: any) {
- return request(`/api/v1/model/update`, {
- method: 'POST',
- data,
+// 获取服务版本详情
+export function getServiceVersionInfoReq(id: any) {
+ return request(`/api/mmp/service/serviceVersionDetail/${id}`, {
+ method: 'GET',
});
}
-// 获取模型部署操作指南
-export function getModelDeploymentDocsReq(data: any) {
- return request(`/api/v1/model/getDocs`, {
- method: 'POST',
- data,
+// 停止服务版本
+export function stopServiceVersionReq(id: any) {
+ return request(`/api/mmp/service/stopServiceVersion/${id}`, {
+ method: 'DELETE',
});
}
-// 获取模型部署日志
-export function getModelDeploymentLogReq(data: any) {
- return request(`/api/v1/model/getAppLog`, {
- method: 'POST',
- data,
+// 获取服务版本操作指南
+export function getServiceVersionDocsReq(id: any) {
+ return request(`/api/mmp/service/getServiceVersionDocs/${id}`, {
+ method: 'GET',
+ });
+}
+
+// 获取服务版本日志
+export function getServiceVersionLogReq(params: any) {
+ return request(`/api/mmp/service/getServiceVersionLog`, {
+ method: 'GET',
+ params,
});
}
diff --git a/react-ui/src/utils/sessionStorage.ts b/react-ui/src/utils/sessionStorage.ts
index dbb4de4f..c1a1e59e 100644
--- a/react-ui/src/utils/sessionStorage.ts
+++ b/react-ui/src/utils/sessionStorage.ts
@@ -1,7 +1,9 @@
// 用于新建镜像
export const mirrorNameKey = 'mirror-name';
-// 模型部署
-export const modelDeploymentInfoKey = 'model-deployment-info';
+// 模型部署服务
+export const serviceInfoKey = 'service-info';
+// 模型部署服务版本
+export const serviceVersionInfoKey = 'service-version-info';
// 编辑器 url
export const editorUrlKey = 'editor-url';
// 数据集、模型资源