Bläddra i källkod

fix #6165: 修复发布任务状态一直显示'发布中'的问题

当 task.status 为 'processing' 时也参与状态聚合,
否则已完成的任务(所有子任务都成功)会一直显示'发布中'状态。
ethanfly 3 dagar sedan
förälder
incheckning
d688f3471d
1 ändrade filer med 5 tillägg och 2 borttagningar
  1. 5 2
      server/src/services/PublishService.ts

+ 5 - 2
server/src/services/PublishService.ts

@@ -193,13 +193,16 @@ export class PublishService {
       throw new AppError('任务不存在', HTTP_STATUS.NOT_FOUND, ERROR_CODES.NOT_FOUND);
     }
     // 基于 PublishResult 记录重新计算任务状态(修复 #6068:删除账号后状态不一致)
+    // 修复 Bug #6165:当 task.status 为 'processing' 时也参与状态聚合,否则已完成的任务会一直显示"发布中"
     const results = task.results || [];
     const actualTargetAccounts = results.map(r => r.accountId);
     const completedResults = results.filter(r => r.status === 'success');
     const failedResults = results.filter(r => r.status === 'failed');
 
     let computedStatus = task.status;
-    if (results.length > 0 && task.status !== 'pending' && task.status !== 'processing' && task.status !== 'cancelled') {
+    if (results.length > 0 && task.status !== 'pending' && task.status !== 'cancelled') {
+      // 只有当任务尚未开始(pending)或已取消时,才保持原始状态
+      // 其他情况(processing 等)都根据 results 重新计算
       if (completedResults.length === results.length) {
         computedStatus = 'completed';
       } else if (failedResults.length === results.length) {
@@ -207,7 +210,7 @@ export class PublishService {
       } else if (completedResults.length + failedResults.length === results.length) {
         computedStatus = 'failed'; // 部分失败也标记为 failed(保持向后兼容)
       } else {
-        computedStatus = task.status;
+        computedStatus = task.status; // 仍有未完成的,保持原状态
       }
     }