refactor(dashboard): switch usage charts to route group_by, rename Models card
Align dashboard with the route dimension introduced in the previous
commit:
* Token Usage / API Requests pie charts query the breakdown API with
`group_by: ['date', 'route']` and aggregate via the new `route`
dimension in `buildUsageLabel`. Visible chart titles keep the existing
"by Model" wording — only the underlying data dim changed.
* Overview "Models" card label switched to `dashboard.deployments`
("部署" / "Deployments"), and the Active Models table heading to
`dashboard.activeDeployments`. These reflect the underlying entity
(model deployments) more accurately now that routes are the
user-facing model concept.
* Drop 11 unused dashboard locale keys (`dashboard.title`,
`dashboard.models`, `dashboard.allocategpus`, `dashboard.instances`,
`dashboard.disk`, `dashboard.diskutilization`, `dashboard.apirequest`,
`dashboard.activeModels`, `dashboard.activeUsers`,
`dashboard.activeModels.name`, `dashboard.runninginstances`) — no
remaining references in `src/` after the rename. Locale parity check
passes.
This commit is contained in:
@@ -1,32 +1,23 @@
|
||||
export default {
|
||||
'dashboard.title': 'Dashboard',
|
||||
'dashboard.workers': 'Workers',
|
||||
'dashboard.models': 'Models',
|
||||
'dashboard.deployments': 'Deployments',
|
||||
'dashboard.clusters': 'Clusters',
|
||||
'dashboard.totalgpus': 'GPUs',
|
||||
'dashboard.allocategpus': 'Allocated GPUs',
|
||||
'dashboard.instances': 'Instances',
|
||||
'dashboard.systemload': 'System Load',
|
||||
'dashboard.memory': 'RAM',
|
||||
'dashboard.disk': 'Storage',
|
||||
'dashboard.vram': 'VRAM',
|
||||
'dashboard.cpuutilization': 'Average CPU Utilization',
|
||||
'dashboard.memoryutilization': 'Average RAM Utilization',
|
||||
'dashboard.diskutilization': 'Storage Utilization',
|
||||
'dashboard.vramutilization': 'Average VRAM Utilization',
|
||||
'dashboard.gpuutilization': 'Average GPU Utilization',
|
||||
'dashboard.usage': 'Usage',
|
||||
'dashboard.apirequest': 'API Requests',
|
||||
'dashboard.tokens': 'Token Usage',
|
||||
'dashboard.topusers': 'Top Users',
|
||||
'dashboard.activeModels': 'Active Models',
|
||||
'dashboard.activeUsers': 'Active Users',
|
||||
'dashboard.activeDeployments': 'Active Deployments',
|
||||
'dashboard.tokenUsageByModel': 'Token Usage by Model',
|
||||
'dashboard.apiRequestsByModel': 'API Requests by Model',
|
||||
'dashboard.topTokenUsageByUser': 'Top 10 Token Usage by User',
|
||||
'dashboard.topTokenUsageByApiKey': 'Top 10 Token Usage by API Key',
|
||||
'dashboard.runninginstances': 'Running Instances',
|
||||
'dashboard.activeModels.name': 'Model Name',
|
||||
'dashboard.allocatevram': 'Allocated VRAM / RAM',
|
||||
'dashboard.usage.selectuser': 'Select users',
|
||||
'dashboard.usage.selectmodel': 'Select models',
|
||||
|
||||
@@ -1,31 +1,22 @@
|
||||
export default {
|
||||
'dashboard.title': 'ダッシュボード',
|
||||
'dashboard.workers': 'ワーカー',
|
||||
'dashboard.models': 'モデル',
|
||||
'dashboard.deployments': 'Deployments',
|
||||
'dashboard.totalgpus': 'GPU数',
|
||||
'dashboard.allocategpus': '割り当て済みGPU',
|
||||
'dashboard.instances': 'インスタンス',
|
||||
'dashboard.systemload': 'システム負荷',
|
||||
'dashboard.memory': 'メモリ',
|
||||
'dashboard.disk': 'ストレージ',
|
||||
'dashboard.vram': 'VRAM',
|
||||
'dashboard.cpuutilization': '平均CPU使用率',
|
||||
'dashboard.memoryutilization': '平均メモリ使用率',
|
||||
'dashboard.diskutilization': 'ストレージ使用率',
|
||||
'dashboard.vramutilization': '平均VRAM使用率',
|
||||
'dashboard.gpuutilization': '平均GPU使用率',
|
||||
'dashboard.usage': '使用状況',
|
||||
'dashboard.apirequest': 'APIリクエスト',
|
||||
'dashboard.tokens': 'トークン使用量',
|
||||
'dashboard.topusers': 'トップユーザー',
|
||||
'dashboard.activeModels': 'アクティブなモデル',
|
||||
'dashboard.activeUsers': 'アクティブユーザー',
|
||||
'dashboard.activeDeployments': 'Active Deployments',
|
||||
'dashboard.tokenUsageByModel': 'モデル別トークン使用量',
|
||||
'dashboard.apiRequestsByModel': 'モデル別APIリクエスト',
|
||||
'dashboard.topTokenUsageByUser': 'ユーザー別トークン使用量トップ10',
|
||||
'dashboard.topTokenUsageByApiKey': 'APIキー別トークン使用量トップ10',
|
||||
'dashboard.runninginstances': '稼働中のインスタンス',
|
||||
'dashboard.activeModels.name': 'モデル名',
|
||||
'dashboard.allocatevram': '割り当て済みVRAM / メモリ',
|
||||
'dashboard.usage.selectuser': 'Select users',
|
||||
'dashboard.usage.selectmodel': 'Select models',
|
||||
|
||||
@@ -1,31 +1,22 @@
|
||||
export default {
|
||||
'dashboard.title': 'Панель управления',
|
||||
'dashboard.workers': 'Рабочие узлы',
|
||||
'dashboard.models': 'Модели',
|
||||
'dashboard.deployments': 'Deployments',
|
||||
'dashboard.totalgpus': 'Всего GPU',
|
||||
'dashboard.allocategpus': 'Выделенные GPU',
|
||||
'dashboard.instances': 'Инстансы',
|
||||
'dashboard.systemload': 'Нагрузка системы',
|
||||
'dashboard.memory': 'ОЗУ',
|
||||
'dashboard.disk': 'Хранилище',
|
||||
'dashboard.vram': 'VRAM',
|
||||
'dashboard.cpuutilization': 'Средняя загрузка CPU',
|
||||
'dashboard.memoryutilization': 'Средняя загрузка ОЗУ',
|
||||
'dashboard.diskutilization': 'Использование хранилища',
|
||||
'dashboard.vramutilization': 'Средняя загрузка видеопамяти',
|
||||
'dashboard.gpuutilization': 'Средняя загрузка GPU',
|
||||
'dashboard.usage': 'Использование',
|
||||
'dashboard.apirequest': 'API-запросы',
|
||||
'dashboard.tokens': 'Использование токенов',
|
||||
'dashboard.topusers': 'Топ пользователей',
|
||||
'dashboard.activeModels': 'Активные модели',
|
||||
'dashboard.activeUsers': 'Активные пользователи',
|
||||
'dashboard.activeDeployments': 'Active Deployments',
|
||||
'dashboard.tokenUsageByModel': 'Использование токенов по моделям',
|
||||
'dashboard.apiRequestsByModel': 'API-запросы по моделям',
|
||||
'dashboard.topTokenUsageByUser': 'Топ-10 пользователей по токенам',
|
||||
'dashboard.topTokenUsageByApiKey': 'Топ-10 API-ключей по токенам',
|
||||
'dashboard.runninginstances': 'Запущенные инстансы',
|
||||
'dashboard.activeModels.name': 'Название модели',
|
||||
'dashboard.allocatevram': 'Выделено VRAM / ОЗУ',
|
||||
'dashboard.usage.selectuser': 'Выбрать пользователей',
|
||||
'dashboard.usage.selectmodel': 'Выбрать модели',
|
||||
|
||||
@@ -1,33 +1,24 @@
|
||||
export default {
|
||||
'dashboard.title': 'Gösterge Paneli',
|
||||
'dashboard.workers': 'İşçi Düğümler',
|
||||
'dashboard.models': 'Modeller',
|
||||
'dashboard.deployments': 'Deployments',
|
||||
'dashboard.clusters': 'Kümeler',
|
||||
'dashboard.totalgpus': "GPU'lar",
|
||||
'dashboard.allocategpus': "Ayrılan GPU'lar",
|
||||
'dashboard.instances': 'Örnekler',
|
||||
'dashboard.systemload': 'Sistem Yükü',
|
||||
'dashboard.memory': 'RAM',
|
||||
'dashboard.disk': 'Depolama',
|
||||
'dashboard.vram': 'VRAM',
|
||||
'dashboard.cpuutilization': 'Ortalama CPU Kullanımı',
|
||||
'dashboard.memoryutilization': 'Ortalama RAM Kullanımı',
|
||||
'dashboard.diskutilization': 'Depolama Kullanımı',
|
||||
'dashboard.vramutilization': 'Ortalama VRAM Kullanımı',
|
||||
'dashboard.gpuutilization': 'Ortalama GPU Kullanımı',
|
||||
'dashboard.usage': 'Kullanım',
|
||||
'dashboard.apirequest': 'API İstekleri',
|
||||
'dashboard.tokens': 'Token Kullanımı',
|
||||
'dashboard.topusers': 'En Aktif Kullanıcılar',
|
||||
'dashboard.activeModels': 'Aktif Modeller',
|
||||
'dashboard.activeUsers': 'Aktif Kullanıcılar',
|
||||
'dashboard.activeDeployments': 'Active Deployments',
|
||||
'dashboard.tokenUsageByModel': 'Modele Göre Token Kullanımı',
|
||||
'dashboard.apiRequestsByModel': 'Modele Göre API İstekleri',
|
||||
'dashboard.topTokenUsageByUser': 'Kullanıcıya Göre İlk 10 Token Kullanımı',
|
||||
'dashboard.topTokenUsageByApiKey':
|
||||
'API Anahtarına Göre İlk 10 Token Kullanımı',
|
||||
'dashboard.runninginstances': 'Çalışan Örnekler',
|
||||
'dashboard.activeModels.name': 'Model Adı',
|
||||
'dashboard.allocatevram': 'Ayrılan VRAM / RAM',
|
||||
'dashboard.usage.selectuser': 'Kullanıcı seçin',
|
||||
'dashboard.usage.selectmodel': 'Model seçin',
|
||||
|
||||
@@ -1,32 +1,23 @@
|
||||
export default {
|
||||
'dashboard.title': '概览',
|
||||
'dashboard.workers': '节点',
|
||||
'dashboard.models': '模型',
|
||||
'dashboard.deployments': '部署',
|
||||
'dashboard.clusters': '集群',
|
||||
'dashboard.totalgpus': 'GPUs',
|
||||
'dashboard.allocategpus': '已分配 GPU 数量',
|
||||
'dashboard.instances': '实例',
|
||||
'dashboard.systemload': '系统负载',
|
||||
'dashboard.memory': '内存',
|
||||
'dashboard.disk': '磁盘',
|
||||
'dashboard.vram': '显存',
|
||||
'dashboard.cpuutilization': '平均 CPU 利用率',
|
||||
'dashboard.memoryutilization': '平均内存利用率',
|
||||
'dashboard.diskutilization': '磁盘利用率',
|
||||
'dashboard.vramutilization': '平均显存利用率',
|
||||
'dashboard.gpuutilization': '平均 GPU 利用率',
|
||||
'dashboard.usage': '使用量',
|
||||
'dashboard.apirequest': 'API 请求',
|
||||
'dashboard.tokens': 'Token 使用量',
|
||||
'dashboard.topusers': '用户排行',
|
||||
'dashboard.activeModels': '活跃模型',
|
||||
'dashboard.activeUsers': '活跃用户',
|
||||
'dashboard.activeDeployments': '活跃部署',
|
||||
'dashboard.tokenUsageByModel': '按模型统计 Token 使用量',
|
||||
'dashboard.apiRequestsByModel': '按模型统计 API 请求数',
|
||||
'dashboard.topTokenUsageByUser': '用户 Token 使用量 Top 10',
|
||||
'dashboard.topTokenUsageByApiKey': 'API 密钥 Token 使用量 Top 10',
|
||||
'dashboard.activeModels.name': '模型名称',
|
||||
'dashboard.runninginstances': '运行实例',
|
||||
'dashboard.allocatevram': '已分配显存 / 内存',
|
||||
'dashboard.usage.selectuser': '选择用户',
|
||||
'dashboard.usage.selectmodel': '选择模型',
|
||||
|
||||
@@ -106,7 +106,7 @@ const ActiveTable = () => {
|
||||
fontWeight: 'var(--font-weight-bold)'
|
||||
}}
|
||||
>
|
||||
{intl.formatMessage({ id: 'dashboard.activeModels' })}
|
||||
{intl.formatMessage({ id: 'dashboard.activeDeployments' })}
|
||||
</span>
|
||||
}
|
||||
right={false}
|
||||
|
||||
@@ -51,7 +51,7 @@ const NewUsage = () => {
|
||||
tokenByModelQuery.fetchData({
|
||||
...commonParams,
|
||||
metric: 'total_tokens',
|
||||
group_by: ['date', 'model'],
|
||||
group_by: ['date', 'route'],
|
||||
sort_by: '-total_tokens'
|
||||
})
|
||||
]);
|
||||
|
||||
@@ -27,7 +27,7 @@ const ApiRequestsByModel: React.FC<ApiRequestsByModelProps> = ({
|
||||
.fetchData({
|
||||
...commonParams,
|
||||
metric: 'api_requests',
|
||||
group_by: ['date', 'model'],
|
||||
group_by: ['date', 'route'],
|
||||
page: 1,
|
||||
perPage: 10,
|
||||
sort_by: '-api_requests'
|
||||
@@ -36,7 +36,7 @@ const ApiRequestsByModel: React.FC<ApiRequestsByModelProps> = ({
|
||||
}, [commonParams]);
|
||||
|
||||
const chartData = useMemo(
|
||||
() => toUsagePieData(query.detailData, 'model', 'api_requests'),
|
||||
() => toUsagePieData(query.detailData, 'route', 'api_requests'),
|
||||
[query.detailData]
|
||||
);
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ const TokenUsageByModel: React.FC<TokenUsageByModelProps> = ({
|
||||
const intl = useIntl();
|
||||
|
||||
const chartData = useMemo(
|
||||
() => toUsagePieData(data, 'model', 'total_tokens'),
|
||||
() => toUsagePieData(data, 'route', 'total_tokens'),
|
||||
[data]
|
||||
);
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ export const overviewConfigs = [
|
||||
|
||||
{
|
||||
key: 'model_count',
|
||||
label: 'dashboard.models',
|
||||
label: 'dashboard.deployments',
|
||||
backgroundColor: 'var(--color-white-1)'
|
||||
},
|
||||
{
|
||||
@@ -41,7 +41,7 @@ export const baseColorMap = {
|
||||
baseR3: 'rgba(85,167,255,0.8)'
|
||||
};
|
||||
|
||||
export type UsageGroupBy = 'model' | 'user' | 'api_key';
|
||||
export type UsageGroupBy = 'model' | 'route' | 'user' | 'api_key';
|
||||
export type UsageMetric = 'total_tokens' | 'api_requests';
|
||||
|
||||
export interface UsageChartDatum {
|
||||
@@ -104,6 +104,15 @@ export const buildUsageLabel = (item: BreakdownItem, groupBy: UsageGroupBy) => {
|
||||
return groupItem?.label || modelName || '-';
|
||||
}
|
||||
|
||||
if (groupBy === 'route') {
|
||||
return (
|
||||
groupItem?.label ||
|
||||
identityValue?.route_name ||
|
||||
groupValue?.route_name ||
|
||||
'-'
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
groupItem?.label ||
|
||||
identityValue?.user_name ||
|
||||
|
||||
Reference in New Issue
Block a user