实验批量发布现在会创建持久化后台任务,不再在 HTTP 请求里逐项校验和通知。

This commit is contained in:
2026-08-09 20:08:10 +08:00 Unverified
parent d05b6df9f5
commit e8261714da
5 changed files with 140 additions and 34 deletions
+22 -3
View File
@@ -417,16 +417,35 @@ async function publishSelectedProjects() {
'批量发布实验项目',
{ confirmButtonText: '确认发布', cancelButtonText: '取消', type: 'warning' },
)
await http.post('/experiments/batch/publish', { projectIds: ids })
ElMessage.success(`发布 ${ids.length} 个实验项目`)
const { data } = await http.post('/experiments/batch/publish', { projectIds: ids })
ElMessage.success(`提交 ${ids.length} 个实验项目的后台发布任务`)
selectedProjectIds.value = []
await load()
void pollPublishJob(data.jobId)
} catch (error: any) {
if (error === 'cancel' || error === 'close') return
ElMessage.error(apiErrorMessage(error))
}
}
async function pollPublishJob(jobId: string) {
try {
const { data } = await http.get(`/experiments/batch/publish-jobs/${jobId}`)
if (data.status === 'Succeeded') {
ElMessage.success('实验项目已完成发布')
await load()
return
}
if (data.status === 'Failed') {
ElMessage.error(data.errorMessage || '实验项目发布失败')
await load()
return
}
window.setTimeout(() => { void pollPublishJob(jobId) }, 1200)
} catch (error) {
ElMessage.error(apiErrorMessage(error))
}
}
async function deleteSelectedProjects() {
const ids = draftSelectedProjectIds.value
if (!ids.length) return