fix(frontend): 展示三个独立发布数据集
This commit is contained in:
@@ -149,9 +149,23 @@ const sourceDatasetName = computed(() => (
|
||||
|| detail.value?.source_files?.map((file) => file.name).join('、')
|
||||
|| '源文件上传'
|
||||
))
|
||||
const outputDatasets = computed(() => {
|
||||
const items = detail.value?.output_datasets || []
|
||||
if (items.length) return items
|
||||
if (!detail.value?.output_dataset_id) return []
|
||||
return [{
|
||||
id: detail.value.output_dataset_id,
|
||||
name: detail.value.output_dataset_name || detail.value.output_dataset || '训练集',
|
||||
type: 'train',
|
||||
}]
|
||||
})
|
||||
const outputDatasetName = computed(() => (
|
||||
detail.value?.output_dataset_name || detail.value?.output_dataset || ''
|
||||
outputDatasets.value.map((item) => item.name).join('、')
|
||||
))
|
||||
const outputDatasetBaseName = computed(() => {
|
||||
const name = String(outputDatasets.value[0]?.name || '').trim()
|
||||
return name.replace(/-(?:训练集|验证集|测试集)$/, '')
|
||||
})
|
||||
const outputDatasetId = computed(() => detail.value?.output_dataset_id || null)
|
||||
const creatorName = computed(() => detail.value?.creator_name || detail.value?.creator || '-')
|
||||
const createTime = computed(() => detail.value?.create_time || detail.value?.created_at)
|
||||
@@ -410,7 +424,7 @@ function configuredSplit(): DataProcessDatasetSplit {
|
||||
function openPublishDialog() {
|
||||
if (!detail.value) return
|
||||
if (outputDatasetId.value) {
|
||||
void router.push(`/dataset/${outputDatasetId.value}/preview`)
|
||||
void router.push({ path: '/dataset', query: { tab: 'task', task_id: taskId.value } })
|
||||
return
|
||||
}
|
||||
publishForm.dataset_name = `${detail.value.name}-数据集`
|
||||
@@ -431,16 +445,10 @@ async function publishDataset() {
|
||||
dataset_name: publishForm.dataset_name.trim(),
|
||||
split: { ...publishForm.split },
|
||||
})
|
||||
const datasetId = published.dataset_id || published.output_dataset_id || published.dataset?.id
|
||||
if (!datasetId) {
|
||||
ElMessage.success('数据集发布成功')
|
||||
publishDialogVisible.value = false
|
||||
await loadTask(true)
|
||||
return
|
||||
}
|
||||
ElMessage.success('数据集发布成功')
|
||||
const datasets = published.datasets || published.output_datasets || []
|
||||
ElMessage.success(`已发布 ${datasets.length || 3} 个独立数据集`)
|
||||
publishDialogVisible.value = false
|
||||
await router.push(`/dataset/${datasetId}/preview`)
|
||||
await router.push({ path: '/dataset', query: { tab: 'task', task_id: taskId.value } })
|
||||
} catch {
|
||||
// 统一请求层已展示后端返回的失败原因。
|
||||
} finally {
|
||||
@@ -452,8 +460,8 @@ async function resyncPublishedDataset() {
|
||||
if (!detail.value || !outputDatasetId.value || publishing.value) return
|
||||
try {
|
||||
await ElMessageBox.confirm(
|
||||
'将按当前 8:1:1 配置重新生成训练、验证、测试三个切分文件,数据集 ID 保持不变。',
|
||||
'重新同步数据切分?',
|
||||
'将按当前 8:1:1 配置同步为训练集、验证集、测试集三个独立数据集。',
|
||||
'重新同步三个数据集?',
|
||||
{ type: 'warning', confirmButtonText: '重新同步', cancelButtonText: '取消' },
|
||||
)
|
||||
} catch {
|
||||
@@ -464,12 +472,12 @@ async function resyncPublishedDataset() {
|
||||
try {
|
||||
const published = await publishDataProcess(taskId.value, {
|
||||
...publishForm,
|
||||
dataset_name: outputDatasetName.value || `${detail.value.name}-数据集`,
|
||||
dataset_name: outputDatasetBaseName.value || `${detail.value.name}-数据集`,
|
||||
split: configuredSplit(),
|
||||
})
|
||||
ElMessage.success('训练集、验证集和测试集已重新同步')
|
||||
const datasetId = published.dataset?.id || outputDatasetId.value
|
||||
await router.push(`/dataset/${datasetId}/preview`)
|
||||
const datasets = published.datasets || published.output_datasets || []
|
||||
ElMessage.success(`训练集、验证集和测试集已同步,共 ${datasets.length || 3} 个数据集`)
|
||||
await router.push({ path: '/dataset', query: { tab: 'task', task_id: taskId.value } })
|
||||
} finally {
|
||||
publishing.value = false
|
||||
}
|
||||
@@ -497,14 +505,14 @@ onBeforeUnmount(() => {
|
||||
@click="openPublishDialog"
|
||||
>
|
||||
<i class="fa" :class="outputDatasetId ? 'fa-external-link' : 'fa-database'" />
|
||||
{{ outputDatasetId ? '查看输出数据集' : '发布为数据集' }}
|
||||
{{ outputDatasetId ? '查看三个数据集' : '发布为三个数据集' }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="detail.status === 'completed' && outputDatasetId"
|
||||
:loading="publishing"
|
||||
@click="resyncPublishedDataset"
|
||||
>
|
||||
<i class="fa fa-refresh" />重新同步切分
|
||||
<i class="fa fa-refresh" />重新同步数据集
|
||||
</el-button>
|
||||
</div>
|
||||
<p>{{ detail.description || '暂无任务描述' }}</p>
|
||||
@@ -570,12 +578,13 @@ onBeforeUnmount(() => {
|
||||
<dt>输出数据集</dt>
|
||||
<dd>
|
||||
<el-button
|
||||
v-if="outputDatasetId && outputDatasetName"
|
||||
v-for="dataset in outputDatasets"
|
||||
:key="String(dataset.id)"
|
||||
type="primary"
|
||||
link
|
||||
@click="router.push(`/dataset/${outputDatasetId}/preview`)"
|
||||
>{{ outputDatasetName }} <i class="fa fa-external-link" /></el-button>
|
||||
<span v-else>{{ outputDatasetName || '尚未发布为数据集' }}</span>
|
||||
@click="router.push(`/dataset/${dataset.id}/preview`)"
|
||||
>{{ dataset.name }}({{ dataset.count || 0 }} 条)<i class="fa fa-external-link" /></el-button>
|
||||
<span v-if="!outputDatasets.length">尚未发布为数据集</span>
|
||||
</dd>
|
||||
</div>
|
||||
</dl>
|
||||
@@ -721,21 +730,12 @@ onBeforeUnmount(() => {
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-model="publishDialogVisible" title="发布为数据集" width="560px" destroy-on-close>
|
||||
<el-dialog v-model="publishDialogVisible" title="发布为三个数据集" width="560px" destroy-on-close>
|
||||
<el-form label-position="top">
|
||||
<el-form-item label="数据集名称" required>
|
||||
<el-input v-model="publishForm.dataset_name" maxlength="150" show-word-limit />
|
||||
</el-form-item>
|
||||
<div class="publish-form-grid">
|
||||
<el-form-item label="数据集类型">
|
||||
<el-select v-model="publishForm.dataset_type">
|
||||
<el-option label="训练数据" value="train" />
|
||||
<el-option label="测试数据" value="test" />
|
||||
<el-option label="评测数据" value="eval" />
|
||||
<el-option label="验证数据" value="val" />
|
||||
<el-option label="其他" value="other" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="存储位置">
|
||||
<el-select v-model="publishForm.storage_type">
|
||||
<el-option label="平台本地存储" value="local" />
|
||||
@@ -751,12 +751,12 @@ onBeforeUnmount(() => {
|
||||
<el-alert
|
||||
type="info"
|
||||
:closable="false"
|
||||
:title="`将生成三个独立文件:训练集 ${publishForm.split.train}% / 验证集 ${publishForm.split.validation}% / 测试集 ${publishForm.split.test}%`"
|
||||
:title="`将发布三个独立数据集:训练集 ${publishForm.split.train}% / 验证集 ${publishForm.split.validation}% / 测试集 ${publishForm.split.test}%`"
|
||||
/>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="publishDialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" :loading="publishing" @click="publishDataset">发布并查看</el-button>
|
||||
<el-button type="primary" :loading="publishing" @click="publishDataset">发布三个数据集</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user