mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-02-02 16:45:08 +08:00
Fix:Automatically enable metadata and optimize parser dialog logic (#12553)
### What problem does this PR solve? Fix:Automatically enable metadata and optimize parser dialog logic ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue)
This commit is contained in:
@ -67,6 +67,7 @@ export interface ParserConfig {
|
|||||||
tag_kb_ids?: string[];
|
tag_kb_ids?: string[];
|
||||||
topn_tags?: number;
|
topn_tags?: number;
|
||||||
graphrag?: { use_graphrag?: boolean };
|
graphrag?: { use_graphrag?: boolean };
|
||||||
|
enable_metadata?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IKnowledgeFileParserConfig {
|
export interface IKnowledgeFileParserConfig {
|
||||||
|
|||||||
@ -389,6 +389,7 @@ export const useManageMetaDataModal = (
|
|||||||
const { data: res } = await kbService.kbUpdateMetaData({
|
const { data: res } = await kbService.kbUpdateMetaData({
|
||||||
kb_id: id,
|
kb_id: id,
|
||||||
metadata: data,
|
metadata: data,
|
||||||
|
enable_metadata: true,
|
||||||
});
|
});
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
message.success(t('message.operated'));
|
message.success(t('message.operated'));
|
||||||
|
|||||||
34
web/src/pages/dataset/contexts/knowledge-base-context.tsx
Normal file
34
web/src/pages/dataset/contexts/knowledge-base-context.tsx
Normal file
@ -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 (
|
||||||
|
<KnowledgeBaseContext.Provider value={{ knowledgeBase, loading }}>
|
||||||
|
{children}
|
||||||
|
</KnowledgeBaseContext.Provider>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 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;
|
||||||
|
};
|
||||||
@ -431,6 +431,7 @@ export function AutoMetadata({
|
|||||||
|
|
||||||
const handleSaveMetadata = (data?: IMetaDataReturnJSONSettings) => {
|
const handleSaveMetadata = (data?: IMetaDataReturnJSONSettings) => {
|
||||||
form.setValue('parser_config.metadata', data || []);
|
form.setValue('parser_config.metadata', data || []);
|
||||||
|
form.setValue('parser_config.enable_metadata', true);
|
||||||
};
|
};
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@ -21,6 +21,7 @@ import {
|
|||||||
useManageMetadata,
|
useManageMetadata,
|
||||||
} from '../components/metedata/hooks/use-manage-modal';
|
} from '../components/metedata/hooks/use-manage-modal';
|
||||||
import { ManageMetadataModal } from '../components/metedata/manage-modal';
|
import { ManageMetadataModal } from '../components/metedata/manage-modal';
|
||||||
|
import { useKnowledgeBaseContext } from '../contexts/knowledge-base-context';
|
||||||
import { DatasetTable } from './dataset-table';
|
import { DatasetTable } from './dataset-table';
|
||||||
import Generate from './generate-button/generate';
|
import Generate from './generate-button/generate';
|
||||||
import { ReparseDialog } from './reparse-dialog';
|
import { ReparseDialog } from './reparse-dialog';
|
||||||
@ -38,7 +39,7 @@ export default function Dataset() {
|
|||||||
onDocumentUploadOk,
|
onDocumentUploadOk,
|
||||||
documentUploadLoading,
|
documentUploadLoading,
|
||||||
} = useHandleUploadDocument();
|
} = useHandleUploadDocument();
|
||||||
|
const { knowledgeBase } = useKnowledgeBaseContext();
|
||||||
const {
|
const {
|
||||||
searchString,
|
searchString,
|
||||||
documents,
|
documents,
|
||||||
@ -221,8 +222,11 @@ export default function Dataset() {
|
|||||||
)}
|
)}
|
||||||
{reparseDialogVisible && (
|
{reparseDialogVisible && (
|
||||||
<ReparseDialog
|
<ReparseDialog
|
||||||
// hidden={isZeroChunk || isRunning}
|
hidden={
|
||||||
hidden={false}
|
chunkNum === 0 && !knowledgeBase?.parser_config?.enable_metadata
|
||||||
|
}
|
||||||
|
// hidden={false}
|
||||||
|
enable_metadata={knowledgeBase?.parser_config?.enable_metadata}
|
||||||
handleOperationIconClick={handleOperationIconClick}
|
handleOperationIconClick={handleOperationIconClick}
|
||||||
chunk_num={chunkNum}
|
chunk_num={chunkNum}
|
||||||
visible={reparseDialogVisible}
|
visible={reparseDialogVisible}
|
||||||
|
|||||||
@ -183,8 +183,12 @@ export function ParsingStatusCell({
|
|||||||
)}
|
)}
|
||||||
{reparseDialogVisible && (
|
{reparseDialogVisible && (
|
||||||
<ReparseDialog
|
<ReparseDialog
|
||||||
hidden={isRunning}
|
hidden={
|
||||||
|
(isZeroChunk && !record?.parser_config?.enable_metadata) ||
|
||||||
|
isRunning
|
||||||
|
}
|
||||||
// hidden={false}
|
// hidden={false}
|
||||||
|
enable_metadata={record?.parser_config?.enable_metadata}
|
||||||
handleOperationIconClick={handleOperationIconClick}
|
handleOperationIconClick={handleOperationIconClick}
|
||||||
chunk_num={chunk_num}
|
chunk_num={chunk_num}
|
||||||
visible={reparseDialogVisible}
|
visible={reparseDialogVisible}
|
||||||
|
|||||||
@ -15,6 +15,7 @@ export const ReparseDialog = memo(
|
|||||||
({
|
({
|
||||||
handleOperationIconClick,
|
handleOperationIconClick,
|
||||||
chunk_num,
|
chunk_num,
|
||||||
|
enable_metadata = false,
|
||||||
hidden = false,
|
hidden = false,
|
||||||
visible = true,
|
visible = true,
|
||||||
hideModal,
|
hideModal,
|
||||||
@ -24,6 +25,7 @@ export const ReparseDialog = memo(
|
|||||||
delete: boolean;
|
delete: boolean;
|
||||||
apply_kb: boolean;
|
apply_kb: boolean;
|
||||||
}) => void;
|
}) => void;
|
||||||
|
enable_metadata?: boolean;
|
||||||
visible: boolean;
|
visible: boolean;
|
||||||
hideModal: () => void;
|
hideModal: () => void;
|
||||||
hidden?: boolean;
|
hidden?: boolean;
|
||||||
@ -92,13 +94,16 @@ export const ReparseDialog = memo(
|
|||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
if (chunk_num > 0) {
|
if (chunk_num > 0 && enable_metadata) {
|
||||||
setFields([deleteField, applyKBField]);
|
setFields([deleteField, applyKBField]);
|
||||||
}
|
} else if (chunk_num > 0 && !enable_metadata) {
|
||||||
if (chunk_num <= 0) {
|
setFields([deleteField]);
|
||||||
|
} else if (chunk_num <= 0 && enable_metadata) {
|
||||||
setFields([applyKBField]);
|
setFields([applyKBField]);
|
||||||
|
} else {
|
||||||
|
setFields([]);
|
||||||
}
|
}
|
||||||
}, [chunk_num, t]);
|
}, [chunk_num, t, enable_metadata]);
|
||||||
|
|
||||||
const formCallbackRef = useRef<DynamicFormRef>(null);
|
const formCallbackRef = useRef<DynamicFormRef>(null);
|
||||||
|
|
||||||
@ -167,3 +172,5 @@ export const ReparseDialog = memo(
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
ReparseDialog.displayName = 'ReparseDialog';
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import {
|
|||||||
} from '@/components/ui/breadcrumb';
|
} from '@/components/ui/breadcrumb';
|
||||||
import { useNavigatePage } from '@/hooks/logic-hooks/navigate-hooks';
|
import { useNavigatePage } from '@/hooks/logic-hooks/navigate-hooks';
|
||||||
import { useFetchKnowledgeBaseConfiguration } from '@/hooks/use-knowledge-request';
|
import { useFetchKnowledgeBaseConfiguration } from '@/hooks/use-knowledge-request';
|
||||||
|
import { KnowledgeBaseProvider } from '@/pages/dataset/contexts/knowledge-base-context';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { Outlet } from 'react-router';
|
import { Outlet } from 'react-router';
|
||||||
import { SideBar } from './sidebar';
|
import { SideBar } from './sidebar';
|
||||||
@ -16,33 +17,35 @@ import { SideBar } from './sidebar';
|
|||||||
export default function DatasetWrapper() {
|
export default function DatasetWrapper() {
|
||||||
const { navigateToDatasetList } = useNavigatePage();
|
const { navigateToDatasetList } = useNavigatePage();
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const { data } = useFetchKnowledgeBaseConfiguration();
|
const { data, loading } = useFetchKnowledgeBaseConfiguration();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="flex h-full flex-col w-full">
|
<KnowledgeBaseProvider knowledgeBase={data} loading={loading}>
|
||||||
<PageHeader>
|
<section className="flex h-full flex-col w-full">
|
||||||
<Breadcrumb>
|
<PageHeader>
|
||||||
<BreadcrumbList>
|
<Breadcrumb>
|
||||||
<BreadcrumbItem>
|
<BreadcrumbList>
|
||||||
<BreadcrumbLink onClick={navigateToDatasetList}>
|
<BreadcrumbItem>
|
||||||
{t('knowledgeDetails.dataset')}
|
<BreadcrumbLink onClick={navigateToDatasetList}>
|
||||||
</BreadcrumbLink>
|
{t('knowledgeDetails.dataset')}
|
||||||
</BreadcrumbItem>
|
</BreadcrumbLink>
|
||||||
<BreadcrumbSeparator />
|
</BreadcrumbItem>
|
||||||
<BreadcrumbItem>
|
<BreadcrumbSeparator />
|
||||||
<BreadcrumbPage className="w-28 whitespace-nowrap text-ellipsis overflow-hidden">
|
<BreadcrumbItem>
|
||||||
{data.name}
|
<BreadcrumbPage className="w-28 whitespace-nowrap text-ellipsis overflow-hidden">
|
||||||
</BreadcrumbPage>
|
{data.name}
|
||||||
</BreadcrumbItem>
|
</BreadcrumbPage>
|
||||||
</BreadcrumbList>
|
</BreadcrumbItem>
|
||||||
</Breadcrumb>
|
</BreadcrumbList>
|
||||||
</PageHeader>
|
</Breadcrumb>
|
||||||
<div className="flex flex-1 min-h-0">
|
</PageHeader>
|
||||||
<SideBar></SideBar>
|
<div className="flex flex-1 min-h-0">
|
||||||
<div className="flex-1 overflow-auto">
|
<SideBar></SideBar>
|
||||||
<Outlet />
|
<div className="flex-1 overflow-auto">
|
||||||
|
<Outlet />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</section>
|
||||||
</section>
|
</KnowledgeBaseProvider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user