feat:替换 Dify 为自建 RAG去实现

1、修复了若干无权限时的失败提示语
2、新增了一个生成后续建议问题的功能
3、重构了知识问答部分的权限管理模块
4、修复了若干渲染不恰当的样式渲染
This commit is contained in:
PingChuan
2026-04-10 16:20:32 +08:00
parent f525707358
commit 5bee9288b9
31 changed files with 407 additions and 304 deletions
@@ -94,11 +94,24 @@ export function useDocumentDetail(datasetId: string, document: Document | null)
pollIndexingStatus(batch);
}, [stopPolling, pollIndexingStatus]);
// 当文档变化时重置设置
// 当文档变化时,从文档已有的 process_rule 回显设置,无则使用默认值
useEffect(() => {
if (document) {
// 可以从文档中读取已有的设置,这里使用默认值
setSettings(DEFAULT_DOCUMENT_DETAIL_SETTINGS);
const rule = (document as any).process_rule;
if (rule?.mode === 'custom' && rule?.rules) {
const seg = rule.rules.segmentation || {};
const preRules = rule.rules.pre_processing_rules || [];
setSettings({
separator: (seg.separator || '\\n\\n').replace(/\n/g, '\\n'),
maxTokens: seg.max_tokens || DEFAULT_DOCUMENT_DETAIL_SETTINGS.maxTokens,
chunkOverlap: DEFAULT_DOCUMENT_DETAIL_SETTINGS.chunkOverlap,
removeExtraSpaces: preRules.find((r: any) => r.id === 'remove_extra_spaces')?.enabled ?? DEFAULT_DOCUMENT_DETAIL_SETTINGS.removeExtraSpaces,
removeUrlsEmails: preRules.find((r: any) => r.id === 'remove_urls_emails')?.enabled ?? DEFAULT_DOCUMENT_DETAIL_SETTINGS.removeUrlsEmails,
indexingTechnique: DEFAULT_DOCUMENT_DETAIL_SETTINGS.indexingTechnique,
});
} else {
setSettings(DEFAULT_DOCUMENT_DETAIL_SETTINGS);
}
setPreviewSegments([]);
setShowPreview(false);
setIsProcessing(false);
+9 -5
View File
@@ -105,8 +105,10 @@ export function useDatasetManager() {
await loadDocuments(datasetId, 1);
} catch (err: any) {
console.error('[DatasetManager] 加载知识库详情失败:', err);
setError(err.message || '加载知识库失败');
message.error('加载知识库失败');
const is403 = err.message?.includes('403') || err.response?.status === 403;
const msg = is403 ? '您没有查看知识库的权限' : (err.message || '加载知识库失败');
setError(msg);
message.error(msg);
} finally {
setLoadingDataset(false);
}
@@ -151,13 +153,15 @@ export function useDatasetManager() {
setDataset(fullDataset);
await loadDocuments(firstDatasetId, 1);
} else {
setError('未找到知识库,请先在Dify中创建知识库');
setError('未找到知识库,请先联系管理员创建知识库');
}
}
} catch (err: any) {
console.error('[DatasetManager] 加载知识库失败:', err);
setError(err.message || '加载知识库失败');
message.error('加载知识库失败');
const is403 = err.message?.includes('403') || err.response?.status === 403;
const msg = is403 ? '您没有查看知识库的权限' : (err.message || '加载知识库失败');
setError(msg);
message.error(msg);
} finally {
setLoadingDataset(false);
setInited(true);