diff --git a/web/app/components/datasets/documents/list.tsx b/web/app/components/datasets/documents/list.tsx
index cb349ee01c..4d566d9234 100644
--- a/web/app/components/datasets/documents/list.tsx
+++ b/web/app/components/datasets/documents/list.tsx
@@ -11,6 +11,8 @@ import {
RiEqualizer2Line,
RiLoopLeftLine,
RiMoreFill,
+ RiPauseCircleLine,
+ RiPlayCircleLine,
} from '@remixicon/react'
import { useContext } from 'use-context-selector'
import { useRouter } from 'next/navigation'
@@ -42,7 +44,7 @@ import { useDatasetDetailContextWithSelector as useDatasetDetailContext } from '
import type { Props as PaginationProps } from '@/app/components/base/pagination'
import Pagination from '@/app/components/base/pagination'
import Checkbox from '@/app/components/base/checkbox'
-import { useDocumentArchive, useDocumentDelete, useDocumentDisable, useDocumentEnable, useDocumentUnArchive, useSyncDocument, useSyncWebsite } from '@/service/knowledge/use-document'
+import { useDocumentArchive, useDocumentDelete, useDocumentDisable, useDocumentEnable, useDocumentPause, useDocumentResume, useDocumentUnArchive, useSyncDocument, useSyncWebsite } from '@/service/knowledge/use-document'
import { extensionToFileType } from '@/app/components/datasets/hit-testing/utils/extension-to-file-type'
import useBatchEditDocumentMetadata from '../metadata/hooks/use-batch-edit-document-metadata'
import EditMetadataBatchModal from '@/app/components/datasets/metadata/edit-metadata-batch/modal'
@@ -168,7 +170,7 @@ export const StatusItem: FC<{
}
-type OperationName = 'delete' | 'archive' | 'enable' | 'disable' | 'sync' | 'un_archive'
+type OperationName = 'delete' | 'archive' | 'enable' | 'disable' | 'sync' | 'un_archive' | 'pause' | 'resume'
// operation action for list and detail
export const OperationAction: FC<{
@@ -180,13 +182,14 @@ export const OperationAction: FC<{
id: string
data_source_type: string
doc_form: string
+ display_status?: string
}
datasetId: string
onUpdate: (operationName?: string) => void
scene?: 'list' | 'detail'
className?: string
}> = ({ embeddingAvailable, datasetId, detail, onUpdate, scene = 'list', className = '' }) => {
- const { id, enabled = false, archived = false, data_source_type } = detail || {}
+ const { id, enabled = false, archived = false, data_source_type, display_status } = detail || {}
const [showModal, setShowModal] = useState(false)
const [deleting, setDeleting] = useState(false)
const { notify } = useContext(ToastContext)
@@ -199,6 +202,8 @@ export const OperationAction: FC<{
const { mutateAsync: deleteDocument } = useDocumentDelete()
const { mutateAsync: syncDocument } = useSyncDocument()
const { mutateAsync: syncWebsite } = useSyncWebsite()
+ const { mutateAsync: pauseDocument } = useDocumentPause()
+ const { mutateAsync: resumeDocument } = useDocumentResume()
const isListScene = scene === 'list'
const onOperate = async (operationName: OperationName) => {
@@ -222,6 +227,12 @@ export const OperationAction: FC<{
else
opApi = syncWebsite
break
+ case 'pause':
+ opApi = pauseDocument
+ break
+ case 'resume':
+ opApi = resumeDocument
+ break
default:
opApi = deleteDocument
setDeleting(true)
@@ -323,6 +334,18 @@ export const OperationAction: FC<{
>
)}
+ {!archived && display_status?.toLowerCase() === 'indexing' && (
+
onOperate('pause')}>
+
+ {t('datasetDocuments.list.action.pause')}
+
+ )}
+ {!archived && display_status?.toLowerCase() === 'paused' && (
+ onOperate('resume')}>
+
+ {t('datasetDocuments.list.action.resume')}
+
+ )}
{!archived && onOperate('archive')}>
{t('datasetDocuments.list.action.archive')}
@@ -626,7 +649,7 @@ const DocumentList: FC = ({
diff --git a/web/i18n/de-DE/dataset-documents.ts b/web/i18n/de-DE/dataset-documents.ts
index f52220a669..baf2e69c74 100644
--- a/web/i18n/de-DE/dataset-documents.ts
+++ b/web/i18n/de-DE/dataset-documents.ts
@@ -28,6 +28,8 @@ const translation = {
delete: 'Löschen',
enableWarning: 'Archivierte Datei kann nicht aktiviert werden',
sync: 'Synchronisieren',
+ resume: 'Fortsetzen',
+ pause: 'Pause',
},
index: {
enable: 'Aktivieren',
diff --git a/web/i18n/en-US/dataset-documents.ts b/web/i18n/en-US/dataset-documents.ts
index 7d0a3541a0..9bcefd6358 100644
--- a/web/i18n/en-US/dataset-documents.ts
+++ b/web/i18n/en-US/dataset-documents.ts
@@ -30,6 +30,8 @@ const translation = {
delete: 'Delete',
enableWarning: 'Archived file cannot be enabled',
sync: 'Sync',
+ pause: 'Pause',
+ resume: 'Resume',
},
index: {
enable: 'Enable',
diff --git a/web/i18n/es-ES/dataset-documents.ts b/web/i18n/es-ES/dataset-documents.ts
index 53a6663847..ee6c5bcf74 100644
--- a/web/i18n/es-ES/dataset-documents.ts
+++ b/web/i18n/es-ES/dataset-documents.ts
@@ -29,6 +29,8 @@ const translation = {
delete: 'Eliminar',
enableWarning: 'El archivo archivado no puede habilitarse',
sync: 'Sincronizar',
+ resume: 'Reanudar',
+ pause: 'Pausa',
},
index: {
enable: 'Habilitar',
diff --git a/web/i18n/fa-IR/dataset-documents.ts b/web/i18n/fa-IR/dataset-documents.ts
index 048cb5163f..a67c49c126 100644
--- a/web/i18n/fa-IR/dataset-documents.ts
+++ b/web/i18n/fa-IR/dataset-documents.ts
@@ -29,6 +29,8 @@ const translation = {
delete: 'حذف',
enableWarning: 'فایل بایگانی شده نمیتواند فعال شود',
sync: 'همگامسازی',
+ resume: 'رزومه',
+ pause: 'مکث',
},
index: {
enable: 'فعال کردن',
diff --git a/web/i18n/fr-FR/dataset-documents.ts b/web/i18n/fr-FR/dataset-documents.ts
index d8c0fe4af7..7960a3ed02 100644
--- a/web/i18n/fr-FR/dataset-documents.ts
+++ b/web/i18n/fr-FR/dataset-documents.ts
@@ -28,6 +28,8 @@ const translation = {
delete: 'Supprimer',
enableWarning: 'Le fichier archivé ne peut pas être activé',
sync: 'Synchroniser',
+ pause: 'Pause',
+ resume: 'Reprendre',
},
index: {
enable: 'Activer',
diff --git a/web/i18n/hi-IN/dataset-documents.ts b/web/i18n/hi-IN/dataset-documents.ts
index 1fcdd49449..4713ea1a89 100644
--- a/web/i18n/hi-IN/dataset-documents.ts
+++ b/web/i18n/hi-IN/dataset-documents.ts
@@ -29,6 +29,8 @@ const translation = {
delete: 'हटाएँ',
enableWarning: 'संग्रहित फाइल को सक्रिय नहीं किया जा सकता',
sync: 'सिंक्रोनाइज़ करें',
+ resume: 'रिज़्यूमे',
+ pause: 'रोकें',
},
index: {
enable: 'सक्रिय करें',
diff --git a/web/i18n/it-IT/dataset-documents.ts b/web/i18n/it-IT/dataset-documents.ts
index 2881e1fcee..1651719a27 100644
--- a/web/i18n/it-IT/dataset-documents.ts
+++ b/web/i18n/it-IT/dataset-documents.ts
@@ -29,6 +29,8 @@ const translation = {
delete: 'Elimina',
enableWarning: 'Il file archiviato non può essere abilitato',
sync: 'Sincronizza',
+ resume: 'Riassumere',
+ pause: 'Pausa',
},
index: {
enable: 'Abilita',
diff --git a/web/i18n/ja-JP/dataset-documents.ts b/web/i18n/ja-JP/dataset-documents.ts
index e28425dc8f..1690545fe4 100644
--- a/web/i18n/ja-JP/dataset-documents.ts
+++ b/web/i18n/ja-JP/dataset-documents.ts
@@ -30,6 +30,8 @@ const translation = {
delete: '削除',
enableWarning: 'アーカイブされたファイルは有効にできません',
sync: '同期',
+ pause: '一時停止',
+ resume: '履歴書',
},
index: {
enable: '有効にする',
diff --git a/web/i18n/ko-KR/dataset-documents.ts b/web/i18n/ko-KR/dataset-documents.ts
index ee94a880a0..77c94c7466 100644
--- a/web/i18n/ko-KR/dataset-documents.ts
+++ b/web/i18n/ko-KR/dataset-documents.ts
@@ -28,6 +28,8 @@ const translation = {
delete: '삭제',
enableWarning: '아카이브된 파일은 활성화할 수 없습니다.',
sync: '동기화',
+ resume: '이력서',
+ pause: '일시 중지',
},
index: {
enable: '활성화',
diff --git a/web/i18n/pl-PL/dataset-documents.ts b/web/i18n/pl-PL/dataset-documents.ts
index 78e427ba95..e581b2d090 100644
--- a/web/i18n/pl-PL/dataset-documents.ts
+++ b/web/i18n/pl-PL/dataset-documents.ts
@@ -28,6 +28,8 @@ const translation = {
delete: 'Usuń',
enableWarning: 'Zarchiwizowany plik nie może zostać włączony',
sync: 'Synchronizuj',
+ resume: 'Wznawiać',
+ pause: 'Pauza',
},
index: {
enable: 'Włącz',
diff --git a/web/i18n/pt-BR/dataset-documents.ts b/web/i18n/pt-BR/dataset-documents.ts
index b8c06c1769..462a3c09ef 100644
--- a/web/i18n/pt-BR/dataset-documents.ts
+++ b/web/i18n/pt-BR/dataset-documents.ts
@@ -28,6 +28,8 @@ const translation = {
delete: 'Excluir',
enableWarning: 'O arquivo arquivado não pode ser habilitado',
sync: 'Sincronizar',
+ resume: 'Retomar',
+ pause: 'Pausa',
},
index: {
enable: 'Habilitar',
diff --git a/web/i18n/ro-RO/dataset-documents.ts b/web/i18n/ro-RO/dataset-documents.ts
index e0f3e8b476..4c6237fcd0 100644
--- a/web/i18n/ro-RO/dataset-documents.ts
+++ b/web/i18n/ro-RO/dataset-documents.ts
@@ -28,6 +28,8 @@ const translation = {
delete: 'Șterge',
enableWarning: 'Fișierul arhivat nu poate fi activat',
sync: 'Sincronizează',
+ pause: 'Pauză',
+ resume: 'Relua',
},
index: {
enable: 'Activează',
diff --git a/web/i18n/ru-RU/dataset-documents.ts b/web/i18n/ru-RU/dataset-documents.ts
index 6fadee3b26..17d2c8a542 100644
--- a/web/i18n/ru-RU/dataset-documents.ts
+++ b/web/i18n/ru-RU/dataset-documents.ts
@@ -29,6 +29,8 @@ const translation = {
delete: 'Удалить',
enableWarning: 'Архивный файл не может быть включен',
sync: 'Синхронизировать',
+ resume: 'Резюме',
+ pause: 'Пауза',
},
index: {
enable: 'Включить',
diff --git a/web/i18n/sl-SI/dataset-documents.ts b/web/i18n/sl-SI/dataset-documents.ts
index 1a83335ad5..d4ea9e6376 100644
--- a/web/i18n/sl-SI/dataset-documents.ts
+++ b/web/i18n/sl-SI/dataset-documents.ts
@@ -29,6 +29,8 @@ const translation = {
delete: 'Izbriši',
enableWarning: 'Arhivirane datoteke ni mogoče omogočiti',
sync: 'Sinhroniziraj',
+ pause: 'Pavza',
+ resume: 'Življenjepis',
},
index: {
enable: 'Omogoči',
diff --git a/web/i18n/th-TH/dataset-documents.ts b/web/i18n/th-TH/dataset-documents.ts
index 87b43f31e2..966218ad93 100644
--- a/web/i18n/th-TH/dataset-documents.ts
+++ b/web/i18n/th-TH/dataset-documents.ts
@@ -29,6 +29,8 @@ const translation = {
delete: 'ลบ',
enableWarning: 'ไม่สามารถเปิดใช้งานไฟล์ที่เก็บถาวรได้',
sync: 'ซิงค์',
+ pause: 'หยุด',
+ resume: 'ดำเนิน',
},
index: {
enable: 'เปิด',
diff --git a/web/i18n/tr-TR/dataset-documents.ts b/web/i18n/tr-TR/dataset-documents.ts
index 2e00975178..8536be3e4e 100644
--- a/web/i18n/tr-TR/dataset-documents.ts
+++ b/web/i18n/tr-TR/dataset-documents.ts
@@ -29,6 +29,8 @@ const translation = {
delete: 'Sil',
enableWarning: 'Arşivlenmiş dosya etkinleştirilemez',
sync: 'Senkronize et',
+ pause: 'Duraklat',
+ resume: 'Özgeçmiş',
},
index: {
enable: 'Etkinleştir',
diff --git a/web/i18n/uk-UA/dataset-documents.ts b/web/i18n/uk-UA/dataset-documents.ts
index e8464e5661..222d8e8502 100644
--- a/web/i18n/uk-UA/dataset-documents.ts
+++ b/web/i18n/uk-UA/dataset-documents.ts
@@ -28,6 +28,8 @@ const translation = {
delete: 'Видалити',
enableWarning: 'Архівований файл неможливо активувати',
sync: 'Синхронізувати',
+ pause: 'Пауза',
+ resume: 'Резюме',
},
index: {
enable: 'Активувати',
diff --git a/web/i18n/vi-VN/dataset-documents.ts b/web/i18n/vi-VN/dataset-documents.ts
index 1cc050b804..94d4dec556 100644
--- a/web/i18n/vi-VN/dataset-documents.ts
+++ b/web/i18n/vi-VN/dataset-documents.ts
@@ -28,6 +28,8 @@ const translation = {
delete: 'Xóa',
enableWarning: 'Tệp đã lưu trữ không thể được kích hoạt',
sync: 'Đồng bộ',
+ pause: 'Tạm dừng',
+ resume: 'Tiếp tục',
},
index: {
enable: 'Kích hoạt',
diff --git a/web/i18n/zh-Hans/dataset-documents.ts b/web/i18n/zh-Hans/dataset-documents.ts
index 2eb883690b..659d8c5ee9 100644
--- a/web/i18n/zh-Hans/dataset-documents.ts
+++ b/web/i18n/zh-Hans/dataset-documents.ts
@@ -30,6 +30,8 @@ const translation = {
delete: '删除',
enableWarning: '归档的文件无法启用',
sync: '同步',
+ pause: '暂停',
+ resume: '恢复',
},
index: {
enable: '启用中',
diff --git a/web/i18n/zh-Hant/dataset-documents.ts b/web/i18n/zh-Hant/dataset-documents.ts
index a79f3993e0..104777d0f6 100644
--- a/web/i18n/zh-Hant/dataset-documents.ts
+++ b/web/i18n/zh-Hant/dataset-documents.ts
@@ -28,6 +28,8 @@ const translation = {
delete: '刪除',
enableWarning: '歸檔的檔案無法啟用',
sync: '同步',
+ resume: '恢復',
+ pause: '暫停',
},
index: {
enable: '啟用中',
diff --git a/web/service/knowledge/use-document.ts b/web/service/knowledge/use-document.ts
index 6dabe7d872..e53a5ebde7 100644
--- a/web/service/knowledge/use-document.ts
+++ b/web/service/knowledge/use-document.ts
@@ -5,6 +5,7 @@ import {
import { del, get, patch } from '../base'
import { useInvalid } from '../use-base'
import type { MetadataType, SortType } from '../datasets'
+import { pauseDocIndexing, resumeDocIndexing } from '../datasets'
import type { DocumentDetailResponse, DocumentListResponse, UpdateDocumentBatchParams } from '@/models/datasets'
import { DocumentActionType } from '@/models/datasets'
import type { CommonResponse } from '@/models/common'
@@ -130,3 +131,23 @@ export const useDocumentMetadata = (payload: {
export const useInvalidDocumentDetailKey = () => {
return useInvalid(useDocumentDetailKey)
}
+
+export const useDocumentPause = () => {
+ return useMutation({
+ mutationFn: ({ datasetId, documentId }: UpdateDocumentBatchParams) => {
+ if (!datasetId || !documentId)
+ throw new Error('datasetId and documentId are required')
+ return pauseDocIndexing({ datasetId, documentId }) as Promise
+ },
+ })
+}
+
+export const useDocumentResume = () => {
+ return useMutation({
+ mutationFn: ({ datasetId, documentId }: UpdateDocumentBatchParams) => {
+ if (!datasetId || !documentId)
+ throw new Error('datasetId and documentId are required')
+ return resumeDocIndexing({ datasetId, documentId }) as Promise
+ },
+ })
+}