diff --git a/react-ui/src/pages/ModelDeployment/Info/index.less b/react-ui/src/pages/ModelDeployment/Info/index.less index f1a0416c..aaeb8056 100644 --- a/react-ui/src/pages/ModelDeployment/Info/index.less +++ b/react-ui/src/pages/ModelDeployment/Info/index.less @@ -1,6 +1,16 @@ .model-deployment-info { height: 100%; + &__content { + display: flex; + flex-direction: column; + height: calc(100% - 60px); + margin-top: 10px; + padding: 30px 30px 0; + background-color: white; + border-radius: 10px; + } + &__basic { &__item { display: flex; @@ -23,34 +33,13 @@ } } - &__content { - height: calc(100% - 60px); + &__guide { + flex: 1; margin-top: 10px; - padding: 30px 30px 0; - background-color: white; - border-radius: 10px; - - &__title { - display: flex; - align-items: center; - } - - &__table { - :global { - .ant-table-wrapper { - height: 100%; - .ant-spin-nested-loading { - height: 100%; - } - .ant-spin-container { - height: 100%; - } - .ant-table { - height: calc(100% - 74px); - overflow: auto; - } - } - } - } + padding: 10px; + overflow-y: auto; + color: white; + white-space: pre-wrap; + background-color: rgba(0, 0, 0, 0.85); } } diff --git a/react-ui/src/pages/ModelDeployment/Info/index.tsx b/react-ui/src/pages/ModelDeployment/Info/index.tsx index bd809f68..c6025188 100644 --- a/react-ui/src/pages/ModelDeployment/Info/index.tsx +++ b/react-ui/src/pages/ModelDeployment/Info/index.tsx @@ -8,48 +8,70 @@ import PageTitle from '@/components/PageTitle'; import SubAreaTitle from '@/components/SubAreaTitle'; import { useComputingResource } from '@/hooks/resource'; import { useSessionStorage } from '@/hooks/sessionStorage'; +import { getModelDeploymentDocsReq } from '@/services/modelDeployment'; import { formatDate } from '@/utils/date'; +import { to } from '@/utils/promise'; import { modelDeploymentInfoKey } from '@/utils/sessionStorage'; import { Col, Row, Tabs, type TabsProps } from 'antd'; +import { pick } from 'lodash'; import { useEffect, useState } from 'react'; import ModelDeploymentStatusCell from '../components/ModelDeployStatusCell'; import { ModelDeploymentData } from '../types'; import styles from './index.less'; +export enum ModelDeploymentTabKey { + Predict = 'Predict', + Guide = 'Guide', + Log = 'Log', +} + const tabItems = [ { - key: '1', + key: ModelDeploymentTabKey.Predict, label: '预测', icon: , }, { - key: '2', + key: ModelDeploymentTabKey.Guide, label: '调用指南', icon: , }, { - key: '3', + key: ModelDeploymentTabKey.Log, label: '服务日志', icon: , }, ]; function ModelDeploymentInfo() { - const [activeTab, setActiveTab] = useState('1'); + const [activeTab, setActiveTab] = useState(ModelDeploymentTabKey.Predict); const [modelDeployementInfo] = useSessionStorage( modelDeploymentInfoKey, true, undefined, ); const getResourceDescription = useComputingResource()[2]; + const [docs, setDocs] = useState(''); - useEffect(() => {}, []); + useEffect(() => { + getModelDeploymentDocs(); + }, [modelDeployementInfo]); + + // 获取模型部署文档 + const getModelDeploymentDocs = async () => { + const params = pick(modelDeployementInfo, ['service_id', 'service_ins_id']); + const [res] = await to(getModelDeploymentDocsReq(params)); + if (res && res.data && res.data.docs) { + setDocs(JSON.stringify(res.data.docs, null, 2)); + } + }; // 切换 Tab,重置数据 const hanleTabChange: TabsProps['onChange'] = (value) => { setActiveTab(value); }; + // 格式化环境变量 const formatEnvText = () => { if (!modelDeployementInfo?.env) { return '--'; @@ -64,128 +86,130 @@ function ModelDeploymentInfo() {
-
- -
- - -
-
服务名称:
-
- {modelDeployementInfo?.service_name ?? '--'} -
-
- - -
-
镜  像:
-
{modelDeployementInfo?.image ?? '--'}
-
- -
- - -
-
状  态:
-
- {ModelDeploymentStatusCell(modelDeployementInfo?.status)} -
-
- - -
-
模  型:
-
- {modelDeployementInfo?.model?.show_value ?? '--'} -
-
- -
- - -
-
创建人:
-
{modelDeployementInfo?.created_by ?? '--'}
-
- - -
-
挂载路径:
-
{modelDeployementInfo?.model_path ?? '--'}
-
- -
- - -
-
API URL:
-
{modelDeployementInfo?.url ?? '--'}
-
- - -
-
副本数量:
-
{modelDeployementInfo?.replicas ?? '--'}
-
- -
- - -
-
创建时间:
-
- {modelDeployementInfo?.create_time - ? formatDate(modelDeployementInfo.create_time) - : '--'} -
+ +
+ + +
+
服务名称:
+
{modelDeployementInfo?.service_name ?? '--'}
+
+ + +
+
镜  像:
+
{modelDeployementInfo?.image ?? '--'}
+
+ +
+ + +
+
状  态:
+
+ {ModelDeploymentStatusCell(modelDeployementInfo?.status)}
- - -
-
更新时间:
-
- {modelDeployementInfo?.update_time - ? formatDate(modelDeployementInfo.update_time) - : '--'} -
+
+ + +
+
模  型:
+
+ {modelDeployementInfo?.model?.show_value ?? '--'}
- - - - -
-
环境变量:
-
{formatEnvText()}
+
+ +
+ + +
+
创建人:
+
{modelDeployementInfo?.created_by ?? '--'}
+
+ + +
+
挂载路径:
+
{modelDeployementInfo?.model_path ?? '--'}
+
+ +
+ + +
+
API URL:
+
{modelDeployementInfo?.url ?? '--'}
+
+ + +
+
副本数量:
+
{modelDeployementInfo?.replicas ?? '--'}
+
+ +
+ + +
+
创建时间:
+
+ {modelDeployementInfo?.create_time + ? formatDate(modelDeployementInfo.create_time) + : '--'}
- - -
-
资源规格:
-
- {modelDeployementInfo?.resource - ? getResourceDescription(modelDeployementInfo.resource) - : '--'} -
+
+ + +
+
更新时间:
+
+ {modelDeployementInfo?.update_time + ? formatDate(modelDeployementInfo.update_time) + : '--'}
- - - - -
-
描  述:
-
{modelDeployementInfo?.description ?? '--'}
+
+ +
+ + +
+
环境变量:
+
{formatEnvText()}
+
+ + +
+
资源规格:
+
+ {modelDeployementInfo?.resource + ? getResourceDescription(modelDeployementInfo.resource) + : '--'}
- - -
-
- -
+
+ + + + +
+
描  述:
+
{modelDeployementInfo?.description ?? '--'}
+
+ +
+ + {activeTab === ModelDeploymentTabKey.Guide && ( +
{docs}
+ )}
); diff --git a/react-ui/src/services/modelDeployment/index.ts b/react-ui/src/services/modelDeployment/index.ts index 7416eeef..5004b357 100644 --- a/react-ui/src/services/modelDeployment/index.ts +++ b/react-ui/src/services/modelDeployment/index.ts @@ -59,3 +59,11 @@ export function updateModelDeploymentReq(data: any) { data, }); } + +// 获取模型部署操作指南 +export function getModelDeploymentDocsReq(data: any) { + return request(`/api/v1/model/getDocs`, { + method: 'POST', + data, + }); +}