diff --git a/web/app/components/datasets/documents/create-from-pipeline/index.tsx b/web/app/components/datasets/documents/create-from-pipeline/index.tsx
index 5fb587d91f..0c90371850 100644
--- a/web/app/components/datasets/documents/create-from-pipeline/index.tsx
+++ b/web/app/components/datasets/documents/create-from-pipeline/index.tsx
@@ -324,7 +324,13 @@ const CreateFormPipeline = () => {
{currentFile && }
- {currentDocument && }
+ {currentDocument && (
+
+ )}
{currentWebsite && }
diff --git a/web/app/components/datasets/documents/create-from-pipeline/preview/online-document-preview.tsx b/web/app/components/datasets/documents/create-from-pipeline/preview/online-document-preview.tsx
index 147267974c..9f1667b9bf 100644
--- a/web/app/components/datasets/documents/create-from-pipeline/preview/online-document-preview.tsx
+++ b/web/app/components/datasets/documents/create-from-pipeline/preview/online-document-preview.tsx
@@ -1,48 +1,64 @@
'use client'
-import React from 'react'
+import React, { useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next'
import type { NotionPage } from '@/models/common'
-import { usePreviewNotionPage } from '@/service/knowledge/use-dataset'
import { RiCloseLine } from '@remixicon/react'
import { formatNumberAbbreviated } from '@/utils/format'
import Loading from './loading'
import { Notion } from '@/app/components/base/icons/src/public/common'
+import { useDatasetDetailContextWithSelector } from '@/context/dataset-detail'
+import { usePreviewOnlineDocument } from '@/service/use-pipeline'
+import Toast from '@/app/components/base/toast'
+import { Markdown } from '@/app/components/base/markdown'
type OnlineDocumentPreviewProps = {
currentPage: NotionPage
+ datasourceNodeId: string
hidePreview: () => void
}
const OnlineDocumentPreview = ({
currentPage,
+ datasourceNodeId,
hidePreview,
}: OnlineDocumentPreviewProps) => {
const { t } = useTranslation()
+ const [content, setContent] = useState('')
+ const pipelineId = useDatasetDetailContextWithSelector(state => state.dataset?.pipeline_id)
+ const { mutateAsync: getOnlineDocumentContent, isPending } = usePreviewOnlineDocument()
- // todo: replace with a generic hook for previewing online documents
- const { data: notionPageData, isFetching } = usePreviewNotionPage({
- workspaceID: currentPage.workspace_id,
- pageID: currentPage.page_id,
- pageType: currentPage.type,
- })
+ useEffect(() => {
+ getOnlineDocumentContent({
+ workspaceID: currentPage.workspace_id,
+ pageID: currentPage.page_id,
+ pageType: currentPage.type,
+ pipelineId: pipelineId || '',
+ datasourceNodeId,
+ }, {
+ onSuccess(data) {
+ setContent(data.content)
+ },
+ onError(error) {
+ Toast.notify({
+ type: 'error',
+ message: error.message,
+ })
+ },
+ })
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, [])
return (
-
{t('datasetPipeline.addDocuments.stepOne.preview')}
+
{t('datasetPipeline.addDocuments.stepOne.preview')}
{currentPage?.page_name}
-
+
+ {currentPage.type}
·
- Notion Page
- ·
- {notionPageData && (
- <>
- ·
- {`${formatNumberAbbreviated(notionPageData.content.length)} ${t('datasetPipeline.addDocuments.characters')}`}
- >
- )}
+ {`${formatNumberAbbreviated(content.length)} ${t('datasetPipeline.addDocuments.characters')}`}
- {isFetching && (
+ {isPending && (
)}
- {!isFetching && notionPageData && (
+ {!isPending && content && (
- {notionPageData.content}
+
)}
diff --git a/web/models/datasets.ts b/web/models/datasets.ts
index aafd40945a..b23f2cecd9 100644
--- a/web/models/datasets.ts
+++ b/web/models/datasets.ts
@@ -777,16 +777,6 @@ export type CreateDatasetResponse = {
dataset_id: string
}
-export type NotionPagePreviewRequest = {
- workspaceID: string
- pageID: string
- pageType: string
-}
-
-export type NotionPagePreviewResponse = {
- content: string
-}
-
export type IndexingStatusBatchRequest = {
datasetId: string
batchId: string
diff --git a/web/models/pipeline.ts b/web/models/pipeline.ts
index 29496960c4..faabaad024 100644
--- a/web/models/pipeline.ts
+++ b/web/models/pipeline.ts
@@ -254,3 +254,15 @@ export type PipelineExecutionLogResponse = {
input_data: Record
datasource_node_id: string
}
+
+export type OnlineDocumentPreviewRequest = {
+ workspaceID: string
+ pageID: string
+ pageType: string
+ pipelineId: string
+ datasourceNodeId: string
+}
+
+export type OnlineDocumentPreviewResponse = {
+ content: string
+}
diff --git a/web/service/knowledge/use-dataset.ts b/web/service/knowledge/use-dataset.ts
index 721f4a68a6..91fb7d1a50 100644
--- a/web/service/knowledge/use-dataset.ts
+++ b/web/service/knowledge/use-dataset.ts
@@ -6,8 +6,6 @@ import type {
DatasetListRequest,
IndexingStatusBatchRequest,
IndexingStatusBatchResponse,
- NotionPagePreviewRequest,
- NotionPagePreviewResponse,
ProcessRuleResponse,
RelatedAppResponse,
} from '@/models/datasets'
@@ -57,16 +55,6 @@ export const useDatasetRelatedApps = (datasetId: string) => {
})
}
-export const usePreviewNotionPage = (params: NotionPagePreviewRequest) => {
- const { workspaceID, pageID, pageType } = params
- return useQuery({
- queryKey: [NAME_SPACE, 'preview-notion-page'],
- queryFn: () => get(`notion/workspaces/${workspaceID}/pages/${pageID}/${pageType}/preview`),
- enabled: !!workspaceID && !!pageID && !!pageType,
- staleTime: 0,
- })
-}
-
export const useIndexingStatusBatch = (
params: IndexingStatusBatchRequest,
mutationOptions: MutationOptions = {},
diff --git a/web/service/use-pipeline.ts b/web/service/use-pipeline.ts
index e55b72a808..0f4017ef20 100644
--- a/web/service/use-pipeline.ts
+++ b/web/service/use-pipeline.ts
@@ -1,12 +1,15 @@
import type { MutationOptions } from '@tanstack/react-query'
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
import { del, get, patch, post } from './base'
+import { DatasourceType } from '@/models/pipeline'
import type {
DeleteTemplateResponse,
ExportTemplateDSLResponse,
ImportPipelineDSLConfirmResponse,
ImportPipelineDSLRequest,
ImportPipelineDSLResponse,
+ OnlineDocumentPreviewRequest,
+ OnlineDocumentPreviewResponse,
PipelineCheckDependenciesResponse,
PipelineExecutionLogRequest,
PipelineExecutionLogResponse,
@@ -324,3 +327,25 @@ export const usePipelineExecutionLog = (params: PipelineExecutionLogRequest) =>
staleTime: 0,
})
}
+
+export const usePreviewOnlineDocument = () => {
+ return useMutation({
+ mutationKey: [NAME_SPACE, 'preview-online-document'],
+ mutationFn: (params: OnlineDocumentPreviewRequest) => {
+ const { pipelineId, datasourceNodeId, workspaceID, pageID, pageType } = params
+ return post(
+ `/rag/pipelines/${pipelineId}/workflows/published/datasource/nodes/${datasourceNodeId}/preview`,
+ {
+ body: {
+ datasource_type: DatasourceType.onlineDocument,
+ inputs: {
+ workspace_id: workspaceID,
+ page_id: pageID,
+ type: pageType,
+ },
+ },
+ },
+ )
+ },
+ })
+}