diff --git a/web/src/interfaces/database/knowledge.ts b/web/src/interfaces/database/knowledge.ts
index 5c460389a..502c63c1b 100644
--- a/web/src/interfaces/database/knowledge.ts
+++ b/web/src/interfaces/database/knowledge.ts
@@ -67,6 +67,7 @@ export interface ParserConfig {
tag_kb_ids?: string[];
topn_tags?: number;
graphrag?: { use_graphrag?: boolean };
+ enable_metadata?: boolean;
}
export interface IKnowledgeFileParserConfig {
diff --git a/web/src/pages/dataset/components/metedata/hooks/use-manage-modal.ts b/web/src/pages/dataset/components/metedata/hooks/use-manage-modal.ts
index 5993e5562..c9d54b1a5 100644
--- a/web/src/pages/dataset/components/metedata/hooks/use-manage-modal.ts
+++ b/web/src/pages/dataset/components/metedata/hooks/use-manage-modal.ts
@@ -389,6 +389,7 @@ export const useManageMetaDataModal = (
const { data: res } = await kbService.kbUpdateMetaData({
kb_id: id,
metadata: data,
+ enable_metadata: true,
});
if (res.code === 0) {
message.success(t('message.operated'));
diff --git a/web/src/pages/dataset/contexts/knowledge-base-context.tsx b/web/src/pages/dataset/contexts/knowledge-base-context.tsx
new file mode 100644
index 000000000..09fff048d
--- /dev/null
+++ b/web/src/pages/dataset/contexts/knowledge-base-context.tsx
@@ -0,0 +1,34 @@
+import { IKnowledge } from '@/interfaces/database/knowledge';
+import React, { createContext, ReactNode, useContext } from 'react';
+
+interface KnowledgeBaseContextType {
+ knowledgeBase: IKnowledge | null;
+ loading: boolean;
+}
+
+const KnowledgeBaseContext = createContext<
+ KnowledgeBaseContextType | undefined
+>(undefined);
+
+export const KnowledgeBaseProvider: React.FC<{
+ children: ReactNode;
+ knowledgeBase: IKnowledge | null;
+ loading: boolean;
+}> = ({ children, knowledgeBase, loading }) => {
+ return (
+
+ {children}
+
+ );
+};
+
+// eslint-disable-next-line react-refresh/only-export-components
+export const useKnowledgeBaseContext = (): KnowledgeBaseContextType => {
+ const context = useContext(KnowledgeBaseContext);
+ if (context === undefined) {
+ throw new Error(
+ 'useKnowledgeBaseContext must be used within a KnowledgeBaseProvider',
+ );
+ }
+ return context;
+};
diff --git a/web/src/pages/dataset/dataset-setting/configuration/common-item.tsx b/web/src/pages/dataset/dataset-setting/configuration/common-item.tsx
index 8a8d6e1a8..39fef6c45 100644
--- a/web/src/pages/dataset/dataset-setting/configuration/common-item.tsx
+++ b/web/src/pages/dataset/dataset-setting/configuration/common-item.tsx
@@ -431,6 +431,7 @@ export function AutoMetadata({
const handleSaveMetadata = (data?: IMetaDataReturnJSONSettings) => {
form.setValue('parser_config.metadata', data || []);
+ form.setValue('parser_config.enable_metadata', true);
};
return (
<>
diff --git a/web/src/pages/dataset/dataset/index.tsx b/web/src/pages/dataset/dataset/index.tsx
index 1bebdcdad..e023d1696 100644
--- a/web/src/pages/dataset/dataset/index.tsx
+++ b/web/src/pages/dataset/dataset/index.tsx
@@ -21,6 +21,7 @@ import {
useManageMetadata,
} from '../components/metedata/hooks/use-manage-modal';
import { ManageMetadataModal } from '../components/metedata/manage-modal';
+import { useKnowledgeBaseContext } from '../contexts/knowledge-base-context';
import { DatasetTable } from './dataset-table';
import Generate from './generate-button/generate';
import { ReparseDialog } from './reparse-dialog';
@@ -38,7 +39,7 @@ export default function Dataset() {
onDocumentUploadOk,
documentUploadLoading,
} = useHandleUploadDocument();
-
+ const { knowledgeBase } = useKnowledgeBaseContext();
const {
searchString,
documents,
@@ -221,8 +222,11 @@ export default function Dataset() {
)}
{reparseDialogVisible && (
void;
+ enable_metadata?: boolean;
visible: boolean;
hideModal: () => void;
hidden?: boolean;
@@ -92,13 +94,16 @@ export const ReparseDialog = memo(
),
};
- if (chunk_num > 0) {
+ if (chunk_num > 0 && enable_metadata) {
setFields([deleteField, applyKBField]);
- }
- if (chunk_num <= 0) {
+ } else if (chunk_num > 0 && !enable_metadata) {
+ setFields([deleteField]);
+ } else if (chunk_num <= 0 && enable_metadata) {
setFields([applyKBField]);
+ } else {
+ setFields([]);
}
- }, [chunk_num, t]);
+ }, [chunk_num, t, enable_metadata]);
const formCallbackRef = useRef(null);
@@ -167,3 +172,5 @@ export const ReparseDialog = memo(
);
},
);
+
+ReparseDialog.displayName = 'ReparseDialog';
diff --git a/web/src/pages/dataset/index.tsx b/web/src/pages/dataset/index.tsx
index 5c83a9ced..337a42683 100644
--- a/web/src/pages/dataset/index.tsx
+++ b/web/src/pages/dataset/index.tsx
@@ -9,6 +9,7 @@ import {
} from '@/components/ui/breadcrumb';
import { useNavigatePage } from '@/hooks/logic-hooks/navigate-hooks';
import { useFetchKnowledgeBaseConfiguration } from '@/hooks/use-knowledge-request';
+import { KnowledgeBaseProvider } from '@/pages/dataset/contexts/knowledge-base-context';
import { useTranslation } from 'react-i18next';
import { Outlet } from 'react-router';
import { SideBar } from './sidebar';
@@ -16,33 +17,35 @@ import { SideBar } from './sidebar';
export default function DatasetWrapper() {
const { navigateToDatasetList } = useNavigatePage();
const { t } = useTranslation();
- const { data } = useFetchKnowledgeBaseConfiguration();
+ const { data, loading } = useFetchKnowledgeBaseConfiguration();
return (
-
-
-
-
-
-
- {t('knowledgeDetails.dataset')}
-
-
-
-
-
- {data.name}
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+ {t('knowledgeDetails.dataset')}
+
+
+
+
+
+ {data.name}
+
+
+
+
+
+
-
-
+
+
);
}