fix(品牌检测): 熔断中止落真实原因+部分结果可下载,熔断加持续时长门槛

- 熔断改为「连续失败持续 6 分钟未恢复」才中止:原 8 次即中止,5 线程一轮
  就能凑满,重跑机制没机会生效导致任务失败率过高(任务 2309 复盘)
- 期间每 30s 冷却重试,重跑轮次 10→30;限流窗口恢复后任务自动跑完
- 失败终态上报内部接口 /api/internal/brand/tasks/{id}/abort:落真实原因 +
  用已收分片部分组装结果(未检测品牌单独成 sheet),不再悬挂到心跳超时被
  判「前端长时间无响应」且已跑数据无法下载
- 组装前从分片重建聚合(缓存快照可能缺后加字段如 keptBrands)
- 前端:失败任务有结果文件即显示「下载结果」
This commit is contained in:
2026-09-14 17:04:19 +08:00
parent 24c5a09c7f
commit b54f72d3f6
7 changed files with 500 additions and 18 deletions
@@ -246,7 +246,10 @@ function canDelete(item: BrandTaskItem) {
function canDownload(item: BrandTaskItem) {
const status = (item.status || '').toLowerCase()
return status === 'success' && Boolean(item.result_paths?.zip_url)
if (!item.result_paths?.zip_url) return false
// 失败任务也可能有结果文件:熔断中止时会用已跑出的数据组装部分结果
//(未检测品牌单独成 sheet),同样允许下载
return status === 'success' || status === 'failed'
}
function taskProgress(item: BrandTaskItem) {