Files
leaudit-platform-frontend/app/components/dify-dataset-manager/index.tsx
T
PingChuan 5bee9288b9 feat:替换 Dify 为自建 RAG去实现
1、修复了若干无权限时的失败提示语
2、新增了一个生成后续建议问题的功能
3、重构了知识问答部分的权限管理模块
4、修复了若干渲染不恰当的样式渲染
2026-04-10 16:20:32 +08:00

153 lines
4.8 KiB
TypeScript

import { Spin } from 'antd';
import DatasetLayout from './layout';
import DocumentList from './document-list';
import DocumentDetail from './document-detail';
import RetrieveTest from './retrieve-test';
import DatasetSettings from './dataset-settings';
import AreaDatasetConfig from './area-dataset-config';
import { useDatasetManager } from '~/hooks/dify-dataset-manager';
import { usePermission } from '~/hooks/usePermission';
import '../../styles/components/dify-dataset-manager/index.css';
/**
* 知识库管理主组件
* 带左侧菜单栏的完整布局
*/
export default function DatasetManager() {
const {
// 状态
dataset,
loadingDataset,
documents,
loadingDocuments,
documentTotal,
documentPage,
documentPageSize,
inited,
error,
activeTab,
selectedDocument,
// 知识库列表(基于权限)
availableDatasets,
loadingAvailableDatasets,
// 方法
handlePageChange,
handleDocumentDeleted,
handleDocumentStatusChanged,
handleRefresh,
handleViewDocument,
handleBackToDocuments,
handleTabChange,
handleDatasetUpdated,
handleDatasetChange,
} = useDatasetManager();
// 判断当前用户是否能编辑当前知识库(省级管理员可编辑全部,市级管理员只能编辑本地区)
const { userRole, userArea } = usePermission();
const canEditDataset = userRole === 'provincial_admin' || ((dataset as any)?.area === userArea);
// 加载中状态
if (!inited || loadingDataset) {
return (
<div className="dataset-manager-wrapper">
<div className="dataset-loading-state">
<Spin size="large" />
<span className="loading-text">...</span>
</div>
</div>
);
}
// 错误状态
if (error) {
return (
<div className="dataset-manager-wrapper">
<div className="dataset-error-state">
<i className="ri-error-warning-line error-icon"></i>
<h3></h3>
<p>{error}</p>
</div>
</div>
);
}
/**
* 渲染右侧内容区
*/
const renderContent = () => {
// 文档菜单
if (activeTab === 'documents') {
// 如果选中了文档,显示文档详情
if (selectedDocument) {
return (
<DocumentDetail
datasetId={dataset?.id || ''}
document={selectedDocument}
canEditDataset={canEditDataset}
/>
);
}
// 否则显示文档列表
return (
<DocumentList
datasetId={dataset?.id || ''}
datasetName={dataset?.name || ''}
documents={documents}
loading={loadingDocuments}
total={documentTotal}
page={documentPage}
pageSize={documentPageSize}
onPageChange={handlePageChange}
onDocumentDeleted={handleDocumentDeleted}
onDocumentStatusChanged={handleDocumentStatusChanged}
onRefresh={handleRefresh}
onViewDocument={handleViewDocument}
canEditDataset={canEditDataset}
/>
);
}
// 召回测试菜单
if (activeTab === 'retrieve') {
return <RetrieveTest datasetId={dataset?.id || ''} />;
}
// 配置管理菜单
if (activeTab === 'area-config') {
return <AreaDatasetConfig />;
}
// 设置菜单
if (activeTab === 'settings') {
return (
<DatasetSettings
dataset={dataset}
onDatasetUpdated={handleDatasetUpdated}
canEditDataset={canEditDataset}
/>
);
}
return null;
};
return (
<div className="dataset-manager-wrapper">
<DatasetLayout
dataset={dataset}
activeTab={activeTab}
onTabChange={handleTabChange}
showBackButton={activeTab === 'documents' && !!selectedDocument}
onBack={handleBackToDocuments}
availableDatasets={availableDatasets}
loadingAvailableDatasets={loadingAvailableDatasets}
onDatasetChange={handleDatasetChange}
>
{renderContent()}
</DatasetLayout>
</div>
);
}