fix: 修复批量 Deep Scan 队列显示问题
问题: - 使用静态的 position 计算 queuePosition,导致队列显示不准确 - 任务实际执行时间不确定,导致队列状态显示错误 修复: - 使用 processing 变量跟踪正在处理的任务数量 - 动态计算队列数量:queueCount = filesToProcess.length - successCount - failCount - processing - 确保队列状态实时更新 改进: - 添加 processing 变量跟踪正在处理的任务 - 在 finally 块中递减 processing 计数器 - 实时更新队列显示,反映真实状态
This commit is contained in:
@@ -1893,12 +1893,13 @@ async function batchDeepScan() {
|
||||
const immediateCount = Math.min(filesToProcess.length, maxConcurrent)
|
||||
const queueTotal = Math.max(0, filesToProcess.length - maxConcurrent)
|
||||
|
||||
actionMsg.value = `Starting: ${immediateCount} immediate, ${queueTotal} queuing...`
|
||||
|
||||
let processing = 0
|
||||
let successCount = 0
|
||||
let failCount = 0
|
||||
|
||||
const tasks = filesToProcess.map((f, index) => {
|
||||
actionMsg.value = `Starting: ${immediateCount} immediate, ${queueTotal} queuing...`
|
||||
|
||||
const tasks = filesToProcess.map((f) => {
|
||||
return limit(async () => {
|
||||
const fileUuid = f.file_uuid
|
||||
if (!fileUuid) {
|
||||
@@ -1906,19 +1907,20 @@ async function batchDeepScan() {
|
||||
return
|
||||
}
|
||||
|
||||
const position = index + 1
|
||||
const queuePosition = position - maxConcurrent
|
||||
processing++
|
||||
const queueCount = Math.max(0, filesToProcess.length - successCount - failCount - processing)
|
||||
|
||||
if (queuePosition > 0) {
|
||||
actionMsg.value = `Processing ${successCount + 1}/${filesToProcess.length} (${queuePosition} queuing)...`
|
||||
if (queueCount > 0) {
|
||||
actionMsg.value = `Processing ${successCount + 1}/${filesToProcess.length} (${queueCount} queuing)...`
|
||||
} else {
|
||||
actionMsg.value = `Processing ${position}/${filesToProcess.length}...`
|
||||
actionMsg.value = `Processing ${successCount + 1}/${filesToProcess.length}...`
|
||||
}
|
||||
|
||||
try {
|
||||
const file = filesCache.value.find((x: any) => x.file_uuid === fileUuid)
|
||||
if (!file) {
|
||||
failCount++
|
||||
processing--
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1940,6 +1942,8 @@ async function batchDeepScan() {
|
||||
} catch (e: any) {
|
||||
failCount++
|
||||
console.error('[batchDeepScan] Failed:', f.file_name, e)
|
||||
} finally {
|
||||
processing--
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user