From 069be907682f86839fbf64ba1c870de71c8f2a5f Mon Sep 17 00:00:00 2001 From: FFXN Date: Thu, 3 Sep 2026 19:02:57 +0800 Subject: [PATCH] fix (web): show syncing status for initial knowledge sources --- .../new-rag/sources/__tests__/page.spec.tsx | 17 +++++++++++++++++ web/features/new-rag/sources/source-models.ts | 8 +++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/web/features/new-rag/sources/__tests__/page.spec.tsx b/web/features/new-rag/sources/__tests__/page.spec.tsx index 2a8271a18a7..595feb86885 100644 --- a/web/features/new-rag/sources/__tests__/page.spec.tsx +++ b/web/features/new-rag/sources/__tests__/page.spec.tsx @@ -1009,6 +1009,16 @@ describe('SourcesPage', () => { name: 'Initial documents', status: 'disabled', }), + source({ + id: 'syncing-initial-source', + metadata: { + clientRequestId: 'initial-website-source:operation-3', + preview: true, + }, + name: 'Syncing initial website', + status: 'disabled', + syncWorkflow: sourceWorkflow('importing'), + }), source({ id: 'failed', metadata: { @@ -1032,6 +1042,13 @@ describe('SourcesPage', () => { expect(within(initializingRow).getByRole('status')).toHaveTextContent( 'Initial documents: knowledgeSpace.sourceStatus.initializing', ) + const syncingRow = screen.getByRole('row', { name: /Syncing initial website/ }) + expect(within(syncingRow).getByRole('status')).toHaveTextContent( + 'Syncing initial website: knowledgeSpace.sourceStatus.syncing', + ) + expect( + within(syncingRow).getByText('knowledgeSpace.sourceSyncProgress:{"completed":0,"total":1}'), + ).toBeInTheDocument() const failedRow = screen.getByRole('row', { name: /Initial website/ }) expect(within(failedRow).getByText('knowledgeSpace.sourceStatus.error')).toBeInTheDocument() diff --git a/web/features/new-rag/sources/source-models.ts b/web/features/new-rag/sources/source-models.ts index 71a6db2581c..a3086c27a04 100644 --- a/web/features/new-rag/sources/source-models.ts +++ b/web/features/new-rag/sources/source-models.ts @@ -206,8 +206,14 @@ export function sourceHasPendingAsyncImport(source: Source) { } export function sourceDisplayStatus(source: Source): SourceDisplayStatus { - if (isInitialSource(source) && source.status === 'disabled' && source.metadata.preview === true) + if (isInitialSource(source) && source.status === 'disabled' && source.metadata.preview === true) { + if (source.syncWorkflow) { + const workflowStatus = sourceWorkflowStatus(source.syncWorkflow.state) + return workflowStatus === 'active' ? 'initializing' : workflowStatus + } + return 'initializing' + } if (isInitialSource(source) && source.status === 'disabled' && source.metadata.initialImport) { if (source.syncWorkflow) {