feat(上架): 激活时按店铺互斥,同一店铺不允许两个任务同时跑
2026-09-17 事故(28519/28520/28521 相继提交同一店铺「林洪武」):同一店铺被多个 任务并发打开,客户端 startBrowser 全部返回 -10000,三个任务一起失败。 - PublishTaskService.activateFile:激活前查是否已有其他任务在同一店铺 RUNNING, 有则拒绝并带出占用中的任务号(激活是任务真正开跑的唯一入口,能最早拦住); 校验与更新之间仍有极小竞态窗口,真正串行由客户端店铺锁保证,这层负责尽早提示; - 前端 BrandPublishTab:文件派发失败的原因回显给用户。原来错误只写进日志、提示 固定为"已记录并继续",用户会误以为是文件问题而反复重传,看不到真正原因; - 新增 3 个后端单测:同店铺被占用则拒绝、无占用则放行、店铺名为空跳过校验。
This commit is contained in:
@@ -917,7 +917,10 @@ async function processQueue() {
|
||||
saveQueueState()
|
||||
throw new Error(queueMessage.value)
|
||||
}
|
||||
queueMessage.value = `文件 ${file.sourceFilename || nextFileId} 启动失败,已记录并继续下一个文件。`
|
||||
// 原因必须回显给用户:后端会因「该店铺已有上架任务在执行」直接拒绝激活,
|
||||
// 只写日志的话用户只看到"启动失败",会以为是文件问题而反复重传
|
||||
queueMessage.value = `文件 ${file.sourceFilename || nextFileId} 启动失败:${reason}`
|
||||
ElMessage.warning(queueMessage.value)
|
||||
activeFileId.value = null
|
||||
saveQueueState()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user