= ({
>
{doc.name}
+ {
+ doc.summary_index_status && (
+
+
+
+ )
+ }
= ({
className="absolute bottom-16 left-0 z-20"
selectedIds={selectedIds}
onArchive={handleAction(DocumentActionType.archive)}
+ onBatchSummary={handleAction(DocumentActionType.summary)}
onBatchEnable={handleAction(DocumentActionType.enable)}
onBatchDisable={handleAction(DocumentActionType.disable)}
onBatchDelete={handleAction(DocumentActionType.delete)}
diff --git a/web/app/components/datasets/documents/operations.tsx b/web/app/components/datasets/documents/operations.tsx
index 93afec6f8e..fe13e2be9b 100644
--- a/web/app/components/datasets/documents/operations.tsx
+++ b/web/app/components/datasets/documents/operations.tsx
@@ -17,6 +17,7 @@ import * as React from 'react'
import { useCallback, useState } from 'react'
import { useTranslation } from 'react-i18next'
import { useContext } from 'use-context-selector'
+import { SearchLinesSparkle } from '@/app/components/base/icons/src/vender/knowledge'
import { DataSourceType, DocumentActionType } from '@/models/datasets'
import {
useDocumentArchive,
@@ -25,6 +26,7 @@ import {
useDocumentEnable,
useDocumentPause,
useDocumentResume,
+ useDocumentSummary,
useDocumentUnArchive,
useSyncDocument,
useSyncWebsite,
@@ -82,6 +84,7 @@ const Operations = ({
const { mutateAsync: deleteDocument } = useDocumentDelete()
const { mutateAsync: syncDocument } = useSyncDocument()
const { mutateAsync: syncWebsite } = useSyncWebsite()
+ const { mutateAsync: generateSummary } = useDocumentSummary()
const { mutateAsync: pauseDocument } = useDocumentPause()
const { mutateAsync: resumeDocument } = useDocumentResume()
const isListScene = scene === 'list'
@@ -107,6 +110,9 @@ const Operations = ({
else
opApi = syncWebsite
break
+ case 'summary':
+ opApi = generateSummary
+ break
case 'pause':
opApi = pauseDocument
break
@@ -220,6 +226,10 @@ const Operations = ({
{t('list.action.sync', { ns: 'datasetDocuments' })}
)}
+ onOperate('summary')}>
+
+ {t('list.action.summary', { ns: 'datasetDocuments' })}
+
>
)}
diff --git a/web/app/components/datasets/documents/types.ts b/web/app/components/datasets/documents/types.ts
index b1e13b8d4f..a4c89453ef 100644
--- a/web/app/components/datasets/documents/types.ts
+++ b/web/app/components/datasets/documents/types.ts
@@ -1 +1 @@
-export type OperationName = 'delete' | 'archive' | 'enable' | 'disable' | 'sync' | 'un_archive' | 'pause' | 'resume'
+export type OperationName = 'delete' | 'archive' | 'enable' | 'disable' | 'sync' | 'un_archive' | 'pause' | 'resume' | 'summary'
diff --git a/web/app/components/datasets/hit-testing/components/result-item.tsx b/web/app/components/datasets/hit-testing/components/result-item.tsx
index 41c77e3cb9..bb3ac8453d 100644
--- a/web/app/components/datasets/hit-testing/components/result-item.tsx
+++ b/web/app/components/datasets/hit-testing/components/result-item.tsx
@@ -7,6 +7,7 @@ import * as React from 'react'
import { useMemo } from 'react'
import { useTranslation } from 'react-i18next'
import { Markdown } from '@/app/components/base/markdown'
+import SummaryLabel from '@/app/components/datasets/documents/detail/completed/common/summary-label'
import Tag from '@/app/components/datasets/documents/detail/completed/common/tag'
import { extensionToFileType } from '@/app/components/datasets/hit-testing/utils/extension-to-file-type'
import { cn } from '@/utils/classnames'
@@ -25,7 +26,7 @@ const ResultItem = ({
payload,
}: ResultItemProps) => {
const { t } = useTranslation()
- const { segment, score, child_chunks, files } = payload
+ const { segment, score, child_chunks, files, summary } = payload
const data = segment
const { position, word_count, content, sign_content, keywords, document } = data
const isParentChildRetrieval = !!(child_chunks && child_chunks.length > 0)
@@ -98,6 +99,9 @@ const ResultItem = ({
))}