feat: 评测任务元数据增强与前端展示优化

后端:
- 新增评测指标标签生成(_build_eval_metric_label/_basic_metric_labels)
- eval 任务 payload 富化(_enrich_eval_payload): 解析模型名/数据集名/维度配置, 生成 metric_label
- 任务创建时解析 trained_models/模型名, metric 回退为 metric_label
- 运行时状态刷新增加 2s 节流, 避免频繁触发

前端:
- EvalTask 类型增加 dataset_id/metric_label
- 评测列表与详情展示 metric_label 指标标签, 模型名/指标超长 tooltip 省略
- 创建页改用 getComputeGpus 过滤空闲 GPU, 移除 getSystemInfo 依赖
This commit is contained in:
wuyongtao
2026-08-03 17:34:21 +08:00
parent 5cc306eb0a
commit 4e5c43fad5
5 changed files with 182 additions and 65 deletions

View File

@@ -1,4 +1,4 @@
<script setup lang="ts">
<script setup lang="ts">
import { ref, onMounted, onUnmounted } from 'vue'
import { useRouter } from 'vue-router'
import { ElMessage, ElMessageBox } from 'element-plus'
@@ -57,6 +57,14 @@ function handleViewDetail(row: any) {
router.push({ name: 'model-eval-detail', params: { id: row.id } })
}
function displayModelName(row: Partial<EvalTask>) {
return row.model_name || String(row.model_id || '-')
}
function displayMetric(row: Partial<EvalTask>) {
return row.metric_label || row.metric || '-'
}
const { start: startPolling, stop: stopPolling } = usePolling(
async () => {
await loadEvalList({ silent: true })
@@ -102,9 +110,21 @@ onUnmounted(() => {
</template>
<template #columns>
<el-table-column label="任务名称" prop="eval_task_name" align="center" />
<el-table-column label="评测模型" prop="model_name" align="center" />
<el-table-column label="评测模型" align="center" min-width="160">
<template #default="{ row }">
<el-tooltip :content="displayModelName(row)" placement="top" :disabled="displayModelName(row).length < 18">
<span class="cell-ellipsis">{{ displayModelName(row) }}</span>
</el-tooltip>
</template>
</el-table-column>
<el-table-column label="数据集" prop="dataset" align="center" />
<el-table-column label="指标" prop="metric" align="center" />
<el-table-column label="指标" align="center" min-width="220">
<template #default="{ row }">
<el-tooltip :content="displayMetric(row)" placement="top" :disabled="displayMetric(row).length < 24">
<span class="cell-ellipsis">{{ displayMetric(row) }}</span>
</el-tooltip>
</template>
</el-table-column>
<el-table-column label="评分" prop="score" width="100" align="center" />
<el-table-column label="状态" width="100" align="center">
<template #default="{ row }">
@@ -159,7 +179,7 @@ onUnmounted(() => {
min-height: 0;
}
/* 胶囊切换栏样式 */
/* 胶囊切换栏 */
.capsule-tabs {
display: flex;
background: #f1f5f9;
@@ -193,4 +213,13 @@ onUnmounted(() => {
}
}
.cell-ellipsis {
display: inline-block;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: middle;
white-space: nowrap;
}
</style>