diff --git a/src/renderer/src/hooks/useKnowledge.ts b/src/renderer/src/hooks/useKnowledge.ts index 464195aff..155316339 100644 --- a/src/renderer/src/hooks/useKnowledge.ts +++ b/src/renderer/src/hooks/useKnowledge.ts @@ -163,6 +163,7 @@ export const useKnowledge = (baseId: string) => { processingProgress: 0, processingError: '', uniqueId: undefined, + retryCount: 0, updated_at: Date.now() }) checkAllBases() @@ -182,6 +183,7 @@ export const useKnowledge = (baseId: string) => { processingProgress: 0, processingError: '', uniqueId: undefined, + retryCount: 0, updated_at: Date.now() }) setTimeout(() => KnowledgeQueue.checkAllBases(), 0) diff --git a/src/renderer/src/queue/KnowledgeQueue.ts b/src/renderer/src/queue/KnowledgeQueue.ts index 7b23895b4..e10a7e01b 100644 --- a/src/renderer/src/queue/KnowledgeQueue.ts +++ b/src/renderer/src/queue/KnowledgeQueue.ts @@ -75,7 +75,7 @@ class KnowledgeQueue { let processableItem = findProcessableItem() while (processableItem) { - this.processItem(baseId, processableItem).then() + await this.processItem(baseId, processableItem) processableItem = findProcessableItem() } } finally { @@ -99,7 +99,27 @@ class KnowledgeQueue { const userId = getStoreSetting('userId') try { if (item.retryCount && item.retryCount >= this.MAX_RETRIES) { - logger.info(`Item ${item.id} has reached max retries, skipping`) + const errorMessage = item.processingError + ? `Max retries exceeded: ${item.processingError}` + : 'Max retries exceeded' + logger.warn(`Item ${item.id} has reached max retries, marking as failed`) + notificationService.send({ + id: uuid(), + type: 'error', + title: t('common.knowledge_base'), + message: t('notification.knowledge.error', { error: errorMessage }), + silent: false, + timestamp: Date.now(), + source: 'knowledge' + }) + store.dispatch( + updateItemProcessingStatus({ + baseId, + itemId: item.id, + status: 'failed', + error: errorMessage + }) + ) return }