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', defaultIcon: 'icon-reranker',
component: './playground/rerank' component: './playground/rerank'
}, },
{ // {
name: 'text2images', // name: 'text2images',
title: 'Text2Images', // title: 'Text2Images',
path: keepAliveRoutes.text2images, // path: keepAliveRoutes.text2images,
key: 'text2images', // key: 'text2images',
icon: 'icon-image1', // icon: 'icon-image1',
selectedIcon: 'icon-image-filled', // selectedIcon: 'icon-image-filled',
defaultIcon: 'icon-image1', // defaultIcon: 'icon-image1',
component: './playground/images' // component: './playground/images'
}, // },
{ {
name: 'speech', name: 'speech',
title: 'Speech', title: 'Speech',
@@ -105,6 +105,16 @@ export default [
defaultIcon: 'icon-rocket-launch1', defaultIcon: 'icon-rocket-launch1',
access: 'canSeeAdmin', access: 'canSeeAdmin',
component: './llmodels/index' 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', name: 'accessControl',
path: '/access-control', path: '/access-control',
+2 -2
View File
@@ -1,8 +1,8 @@
import { createFromIconfontCN } from '@ant-design/icons'; import { createFromIconfontCN } from '@ant-design/icons';
import './iconfont/iconfont.js'; // import './iconfont/iconfont.js';
const IconFont = createFromIconfontCN({ const IconFont = createFromIconfontCN({
scriptUrl: '' scriptUrl: '//at.alicdn.com/t/c/font_4613488_oxxxb51iqbp.js'
}); });
export default IconFont; export default IconFont;
+5 -1
View File
@@ -12,6 +12,7 @@ export default {
'menu.models.modelCatalog': 'Catalog', 'menu.models.modelCatalog': 'Catalog',
'menu.models.catalog': 'Model Catalog', 'menu.models.catalog': 'Model Catalog',
'menu.models.deployment': 'Deployments', 'menu.models.deployment': 'Deployments',
'menu.models.userModels': 'My Models',
'menu.modelCatalog': 'Catalog', 'menu.modelCatalog': 'Catalog',
'menu.resources': 'Resources', 'menu.resources': 'Resources',
'menu.apikeys': 'API Keys', 'menu.apikeys': 'API Keys',
@@ -25,5 +26,8 @@ export default {
'menu.profile': 'Profile', 'menu.profile': 'Profile',
'menu.login': 'Login', 'menu.login': 'Login',
'menu.usage': 'Usage', '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.resources.modelfiles': 'Model Files',
'menu.accessControl': 'Access Control', 'menu.accessControl': 'Access Control',
'menu.accessControl.apikeys': 'API Keys', '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) ========== // ========== To-Do: Translate Keys (Remove After Translation) ==========
@@ -36,4 +40,8 @@ export default {
// 5. 'menu.accessControl': 'Access Control', // 5. 'menu.accessControl': 'Access Control',
// 6. 'menu.accessControl.apikeys': 'API Keys', // 6. 'menu.accessControl.apikeys': 'API Keys',
// 7. 'menu.accessControl.users': 'Users', // 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 ========== // ========== End of To-Do List ==========
+16 -2
View File
@@ -25,9 +25,23 @@ export default {
'menu.resources.modelfiles': 'Файлы модлей', 'menu.resources.modelfiles': 'Файлы модлей',
'menu.accessControl': 'Управление доступом', 'menu.accessControl': 'Управление доступом',
'menu.accessControl.apikeys': 'API Ключи', '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) ========== // ========== 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 ========== // ========== End of To-Do List ==========
+5 -1
View File
@@ -11,6 +11,7 @@ export default {
'menu.models.modelList': '部署与管理', 'menu.models.modelList': '部署与管理',
'menu.models.modelCatalog': '模型库', 'menu.models.modelCatalog': '模型库',
'menu.models.deployment': '部署', 'menu.models.deployment': '部署',
'menu.models.userModels': '我的模型',
'menu.modelCatalog': '模型库', 'menu.modelCatalog': '模型库',
'menu.models.catalog': '模型库', 'menu.models.catalog': '模型库',
'menu.resources': '资源', 'menu.resources': '资源',
@@ -25,5 +26,8 @@ export default {
'menu.resources.modelfiles': '模型文件', 'menu.resources.modelfiles': '模型文件',
'menu.accessControl': '访问控制', 'menu.accessControl': '访问控制',
'menu.accessControl.apikeys': 'API 密钥', '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;