fix: 修复批量 Deep Scan 队列显示问题

问题:
- 使用静态的 position 计算 queuePosition,导致队列显示不准确
- 任务实际执行时间不确定,导致队列状态显示错误

修复:
- 使用 processing 变量跟踪正在处理的任务数量
- 动态计算队列数量:queueCount = filesToProcess.length - successCount - failCount - processing
- 确保队列状态实时更新

改进:
- 添加 processing 变量跟踪正在处理的任务
- 在 finally 块中递减 processing 计数器
- 实时更新队列显示,反映真实状态
This commit is contained in:
2026-10-08 01:32:43 +08:00
parent 593b83d61a
commit 4e1df67857

View File

@@ -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--
}
})
})