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