diff --git a/frontend/scripts/regression-data-process-detail.mjs b/frontend/scripts/regression-data-process-detail.mjs index e32ae03..c9fcb44 100644 --- a/frontend/scripts/regression-data-process-detail.mjs +++ b/frontend/scripts/regression-data-process-detail.mjs @@ -57,6 +57,8 @@ assert.match(detailSource, /publishDataProcess\(taskId\.value,/, '发布数据 assert.match(detailSource, /path: '\/dataset', query: \{ tab: 'task', task_id: taskId\.value \}/, '发布成功后未进入数据任务列表') assert.match(detailSource, /published\.datasets \|\| published\.output_datasets/, '发布成功后未读取三个独立数据集') assert.match(detailSource, /v-for="dataset in outputDatasets"/, '任务详情未展示三个输出数据集入口') +assert.match(detailSource, /const hasPublishedOutputs = computed\(\(\) => outputDatasets\.value\.length > 0\)/, '详情页没有独立识别仍然存在的已发布数据集') +assert.match(detailSource, /v-if="hasPublishedOutputs && !outputDatasetId"[\s\S]*?当前生成结果尚未重新发布,以下为上次已发布数据集,仍可正常使用/, '重新生成任务没有说明上次发布数据集仍然可用') assert.match(detailSource, /class="output-dataset-row"[\s\S]*?class="output-dataset-cell"[\s\S]*?class="output-dataset-links"/, '输出数据集没有独立的多行对齐布局') assert.match(detailSource, /\.output-dataset-links[\s\S]*?display:\s*inline-grid[\s\S]*?grid-template-columns:\s*max-content[\s\S]*?text-align:\s*left/, '输出数据集名称没有统一左边缘') assert.match(detailSource, /\.output-dataset-links[\s\S]*?\.el-button[\s\S]*?width:\s*100%[\s\S]*?margin-left:\s*0/, '输出数据集链接没有清除默认间距或统一宽度') @@ -64,7 +66,7 @@ assert.match(detailSource, /\.el-button\s*>\s*span[\s\S]*?width:\s*100%[\s\S]*?d assert.match(detailSource, /\.el-button i[\s\S]*?margin-left:\s*auto/, '输出数据集跳转图标没有统一右对齐') assert.match(detailSource, /将发布三个独立数据集/, '发布说明仍未明确生成三个独立数据集') assert.match(detailSource, /function startRegeneration\(\)[\s\S]*?name: 'data-process-regenerate'[\s\S]*?params: \{ id: taskId\.value \}/, '重新生成按钮没有携带原任务 ID 进入命名路由') -assert.match(detailSource, /const canRegenerate = computed\(\(\) => \{[\s\S]*?status === 'pending'[\s\S]*?status === 'failed'[\s\S]*?status === 'stopped'[\s\S]*?status === 'completed'[\s\S]*?outputDatasetId\.value/, '详情页没有覆盖可恢复的重新生成任务状态') +assert.match(detailSource, /const canRegenerate = computed\(\(\) => \{[\s\S]*?status === 'pending'[\s\S]*?status === 'failed'[\s\S]*?status === 'stopped'[\s\S]*?status === 'completed'[\s\S]*?outputDatasetId\.value[\s\S]*?hasPublishedOutputs\.value/, '详情页没有覆盖指针已清空但旧发布数据集仍存在的重新生成任务') assert.match(detailSource, /v-if="canRegenerate"[\s\S]*?@click="startRegeneration"[\s\S]*?重新生成/, '可恢复任务没有收敛为单一重新生成入口') assert.match(detailSource, /v-if="detail\.status === 'completed' && !outputDatasetId"[\s\S]*?@click="openPublishDialog"[\s\S]*?发布为三个数据集/, '未发布完成任务没有保留首次发布入口') assert.doesNotMatch(detailSource, /查看三个数据集|重新同步数据集|resyncPublishedDataset/, '已发布任务仍保留旧查看或同步按钮') diff --git a/frontend/src/views/data-process/DataProcessDetailView.vue b/frontend/src/views/data-process/DataProcessDetailView.vue index 4289845..de61b3c 100644 --- a/frontend/src/views/data-process/DataProcessDetailView.vue +++ b/frontend/src/views/data-process/DataProcessDetailView.vue @@ -168,12 +168,13 @@ const outputDatasetName = computed(() => ( outputDatasets.value.map((item) => item.name).join('、') )) const outputDatasetId = computed(() => detail.value?.output_dataset_id || null) +const hasPublishedOutputs = computed(() => outputDatasets.value.length > 0) const canRegenerate = computed(() => { const status = detail.value?.status return status === 'pending' || status === 'failed' || status === 'stopped' - || (status === 'completed' && Boolean(outputDatasetId.value)) + || (status === 'completed' && (Boolean(outputDatasetId.value) || hasPublishedOutputs.value)) }) const creatorName = computed(() => detail.value?.creator_name || detail.value?.creator || '-') const createTime = computed(() => detail.value?.create_time || detail.value?.created_at) @@ -485,7 +486,7 @@ onBeforeUnmount(() => { type="primary" @click="openPublishDialog" > - 发布为三个数据集 + 发布为三个数据集 { type="primary" @click="startRegeneration" > - 重新生成 + 重新生成

{{ detail.description || '暂无任务描述' }}

@@ -558,6 +559,10 @@ onBeforeUnmount(() => {
输出数据集
+

当前生成结果尚未重新发布,以下为上次已发布数据集,仍可正常使用