feat: clusters group

This commit is contained in:
jialin
2025-09-16 11:26:17 +08:00
parent f9cf111a86
commit 43e1dd0b0e
9 changed files with 160 additions and 17 deletions
+50 -10
View File
@@ -54,16 +54,16 @@ export default [
defaultIcon: 'icon-reranker',
component: './playground/rerank'
},
{
name: 'text2images',
title: 'Text2Images',
path: keepAliveRoutes.text2images,
key: 'text2images',
icon: 'icon-image1',
selectedIcon: 'icon-image-filled',
defaultIcon: 'icon-image1',
component: './playground/images'
},
// {
// name: 'text2images',
// title: 'Text2Images',
// path: keepAliveRoutes.text2images,
// key: 'text2images',
// icon: 'icon-image1',
// selectedIcon: 'icon-image-filled',
// defaultIcon: 'icon-image1',
// component: './playground/images'
// },
{
name: 'speech',
title: 'Speech',
@@ -105,6 +105,16 @@ export default [
defaultIcon: 'icon-rocket-launch1',
access: 'canSeeAdmin',
component: './llmodels/index'
},
{
name: 'userModels',
path: '/models/user-models',
key: 'userModels',
icon: 'icon-models',
selectedIcon: 'icon-models-filled',
defaultIcon: 'icon-models',
access: 'canSeeAdmin',
component: './llmodels/user-models'
}
]
},
@@ -147,6 +157,36 @@ export default [
}
]
},
{
name: 'clusterManagement',
path: '/cluster-management',
key: 'clusterManagement',
access: 'canSeeAdmin',
routes: [
{
path: '/cluster-management',
redirect: '/cluster-management/clusters'
},
{
name: 'clusters',
path: '/cluster-management/clusters',
key: 'clusters',
icon: 'icon-k8s-outline',
selectedIcon: 'icon-k8s-filled',
defaultIcon: 'icon-k8s-outline',
component: './cluster-management/clusters'
},
{
name: 'credentials',
path: '/cluster-management/credentials',
key: 'credentials',
icon: 'icon-credential-outline',
selectedIcon: 'icon-credential-filled',
defaultIcon: 'icon-credential-outline',
component: './cluster-management/credentials'
}
]
},
{
name: 'accessControl',
path: '/access-control',
+2 -2
View File
@@ -1,8 +1,8 @@
import { createFromIconfontCN } from '@ant-design/icons';
import './iconfont/iconfont.js';
// import './iconfont/iconfont.js';
const IconFont = createFromIconfontCN({
scriptUrl: ''
scriptUrl: '//at.alicdn.com/t/c/font_4613488_oxxxb51iqbp.js'
});
export default IconFont;
+5 -1
View File
@@ -12,6 +12,7 @@ export default {
'menu.models.modelCatalog': 'Catalog',
'menu.models.catalog': 'Model Catalog',
'menu.models.deployment': 'Deployments',
'menu.models.userModels': 'My Models',
'menu.modelCatalog': 'Catalog',
'menu.resources': 'Resources',
'menu.apikeys': 'API Keys',
@@ -25,5 +26,8 @@ export default {
'menu.profile': 'Profile',
'menu.login': 'Login',
'menu.usage': 'Usage',
'menu.404': '404'
'menu.404': '404',
'menu.clusterManagement': 'Cluster Management',
'menu.clusterManagement.clusters': 'Clusters',
'menu.clusterManagement.credentials': 'Credentials'
};
+9 -1
View File
@@ -25,7 +25,11 @@ export default {
'menu.resources.modelfiles': 'Model Files',
'menu.accessControl': 'Access Control',
'menu.accessControl.apikeys': 'API Keys',
'menu.accessControl.users': 'Users'
'menu.accessControl.users': 'Users',
'menu.clusterManagement': 'Cluster Management',
'menu.clusterManagement.clusters': 'Clusters',
'menu.clusterManagement.credentials': 'Credentials',
'menu.models.userModels': 'My Models'
};
// ========== To-Do: Translate Keys (Remove After Translation) ==========
@@ -36,4 +40,8 @@ export default {
// 5. 'menu.accessControl': 'Access Control',
// 6. 'menu.accessControl.apikeys': 'API Keys',
// 7. 'menu.accessControl.users': 'Users',
// 8. 'menu.clusterManagement': 'Cluster Management',
// 9. 'menu.clusterManagement.clusters': 'Clusters',
// 10. 'menu.clusterManagement.credentials': 'Credentials',
// 11. 'menu.models.userModels': 'My Models'
// ========== End of To-Do List ==========
+16 -2
View File
@@ -25,9 +25,23 @@ export default {
'menu.resources.modelfiles': 'Файлы модлей',
'menu.accessControl': 'Управление доступом',
'menu.accessControl.apikeys': 'API Ключи',
'menu.accessControl.users': 'Пользователи'
'menu.accessControl.users': 'Пользователи',
'menu.clusterManagement': 'Cluster Management',
'menu.clusterManagement.clusters': 'Clusters',
'menu.clusterManagement.credentials': 'Credentials',
'menu.models.userModels': 'My Models'
};
// ========== To-Do: Translate Keys (Remove After Translation) ==========
// 1. 'menu.models.deployment': 'Deployment',
// 2. 'menu.resources.workers': 'Workers',
// 3. 'menu.resources.gpus': 'GPUs',
// 4. 'menu.resources.modelfiles': 'Model Files',
// 5. 'menu.accessControl': 'Access Control',
// 6. 'menu.accessControl.apikeys': 'API Keys',
// 7. 'menu.accessControl.users': 'Users',
// 8. 'menu.clusterManagement': 'Cluster Management',
// 9. 'menu.clusterManagement.clusters': 'Clusters',
// 10. 'menu.clusterManagement.credentials': 'Credentials',
// 11. 'menu.models.userModels': 'My Models'
// ========== End of To-Do List ==========
+5 -1
View File
@@ -11,6 +11,7 @@ export default {
'menu.models.modelList': '部署与管理',
'menu.models.modelCatalog': '模型库',
'menu.models.deployment': '部署',
'menu.models.userModels': '我的模型',
'menu.modelCatalog': '模型库',
'menu.models.catalog': '模型库',
'menu.resources': '资源',
@@ -25,5 +26,8 @@ export default {
'menu.resources.modelfiles': '模型文件',
'menu.accessControl': '访问控制',
'menu.accessControl.apikeys': 'API 密钥',
'menu.accessControl.users': '用户'
'menu.accessControl.users': '用户',
'menu.clusterManagement': '集群管理',
'menu.clusterManagement.clusters': '集群',
'menu.clusterManagement.credentials': '凭据'
};
+25
View File
@@ -0,0 +1,25 @@
import { PageContainer } from '@ant-design/pro-components';
import { useIntl } from '@umijs/max';
import React from 'react';
const Cluster: React.FC = () => {
const intl = useIntl();
return (
<PageContainer
ghost
header={{
title: intl.formatMessage({ id: 'menu.clusterManagement.clusters' }),
style: {
paddingInline: 'var(--layout-content-header-inlinepadding)'
},
breadcrumb: {}
}}
extra={[]}
>
{intl.formatMessage({ id: 'menu.clusterManagement.clusters' })}
</PageContainer>
);
};
export default Cluster;
@@ -0,0 +1,24 @@
import { PageContainer } from '@ant-design/pro-components';
import { useIntl } from '@umijs/max';
import React from 'react';
const Credential: React.FC = () => {
const intl = useIntl();
return (
<PageContainer
ghost
header={{
title: intl.formatMessage({ id: 'menu.clusterManagement.credentials' }),
style: {
paddingInline: 'var(--layout-content-header-inlinepadding)'
},
breadcrumb: {}
}}
extra={[]}
>
{intl.formatMessage({ id: 'menu.clusterManagement.credentials' })}
</PageContainer>
);
};
export default Credential;
+24
View File
@@ -0,0 +1,24 @@
import { PageContainer } from '@ant-design/pro-components';
import { useIntl } from '@umijs/max';
import React from 'react';
const UserModels: React.FC = () => {
const intl = useIntl();
return (
<PageContainer
ghost
header={{
title: intl.formatMessage({ id: 'menu.models.userModels' }),
style: {
paddingInline: 'var(--layout-content-header-inlinepadding)'
},
breadcrumb: {}
}}
extra={[]}
>
{intl.formatMessage({ id: 'menu.models.userModels' })}
</PageContainer>
);
};
export default UserModels;