Merge #50 into develop_web from feature/20251219_yjp

fix:面包屑修改

* feature/20251219_yjp: (1 commits)
  fix:面包屑修改

Signed-off-by: vrhs@163.com <accounts_660b6454a0eb398d3f8d2c76@mail.teambition.com>
Merged-by: vrhs@163.com <accounts_660b6454a0eb398d3f8d2c76@mail.teambition.com>

CR-link: https://codeup.aliyun.com/redbearai/python/redbear-mem-open/change/50
This commit is contained in:
vrhs@163.com
2025-12-24 19:25:37 +08:00
5 changed files with 104 additions and 10 deletions

View File

@@ -30,16 +30,74 @@ export const useBreadcrumbManager = (options?: BreadcrumbOptions) => {
const updateBreadcrumbs = useCallback((breadcrumbPath: BreadcrumbPath) => {
const breadcrumbType = options?.breadcrumbType || 'list';
// 获取基础面包屑,对于详情页面,使用列表页面的基础面包屑作为起点
const baseBreadcrumbs = breadcrumbType === 'list'
? (allBreadcrumbs['space'] || [])
: (allBreadcrumbs['space'] || []); // 详情页面也从 space 获取基础面包屑
// 对于详情页面,直接使用固定的知识库管理面包屑,不依赖可能被污染的 allBreadcrumbs
let baseBreadcrumbs: MenuItem[] = [];
// 只保留知识库菜单项之前的面包屑
const knowledgeBaseMenuIndex = baseBreadcrumbs.findIndex(item => item.path === '/knowledge-base');
const filteredBaseBreadcrumbs = knowledgeBaseMenuIndex >= 0
? baseBreadcrumbs.slice(0, knowledgeBaseMenuIndex + 1)
: baseBreadcrumbs;
if (breadcrumbType === 'detail') {
// 详情页面:始终使用固定的知识库管理面包屑
baseBreadcrumbs = [
{
id: 6,
parent: 0,
code: 'knowledge',
label: '知识库',
i18nKey: 'menu.knowledgeManagement',
path: '/knowledge-base',
enable: true,
display: true,
level: 1,
sort: 0,
icon: null,
iconActive: null,
menuDesc: null,
deleted: null,
updateTime: 0,
new_: null,
keepAlive: false,
master: null,
disposable: false,
appSystem: null,
subs: [],
}
];
} else {
// 列表页面:从 space 获取基础面包屑,但确保包含知识库管理
const spaceBreadcrumbs = allBreadcrumbs['space'] || [];
const knowledgeBaseMenuIndex = spaceBreadcrumbs.findIndex(item => item.path === '/knowledge-base');
if (knowledgeBaseMenuIndex >= 0) {
baseBreadcrumbs = spaceBreadcrumbs.slice(0, knowledgeBaseMenuIndex + 1);
} else {
// 如果没有找到知识库菜单,使用默认的知识库管理面包屑
baseBreadcrumbs = [
{
id: 6,
parent: 0,
code: 'knowledge',
label: '知识库',
i18nKey: 'menu.knowledgeManagement',
path: '/knowledge-base',
enable: true,
display: true,
level: 1,
sort: 0,
icon: null,
iconActive: null,
menuDesc: null,
deleted: null,
updateTime: 0,
new_: null,
keepAlive: false,
master: null,
disposable: false,
appSystem: null,
subs: [],
}
];
}
}
const filteredBaseBreadcrumbs = baseBreadcrumbs;
// 给"知识库管理"添加点击事件
const breadcrumbsWithClick = filteredBaseBreadcrumbs.map((item) => {

View File

@@ -613,6 +613,8 @@ export const en = {
answer: 'Answer',
normalMode: 'Normal Mode',
qaMode: 'QA Mode',
fileParsingSettings: 'File Parsing Settings',
pdfEnhancementAnalysis: 'PDF Enhancement Analysis',
createForm:{
name: 'Name',
embedding_id: 'Embedding',

View File

@@ -237,6 +237,8 @@ export const zh = {
answer: '答案',
normalMode: '常规模式',
qaMode: '问答模式',
fileParsingSettings: '文件解析设置',
pdfEnhancementAnalysis: 'PDF增强解析',
createForm: {
name: '名称',
embedding_id: '嵌入模型',

View File

@@ -1,5 +1,5 @@
import { useMemo,useRef, useState, useEffect } from 'react';
import { Button, Flex, Radio, Steps, Modal, Input, Spin,message} from 'antd';
import { Button, Flex, Radio, Steps, Modal, Input, Spin, message, Checkbox} from 'antd';
import { useTranslation } from 'react-i18next';
import { useLocation, useNavigate, useParams } from 'react-router-dom';
import Table, { type TableRef } from '@/components/Table'
@@ -81,6 +81,7 @@ const CreateDataset = () => {
const [blockSize, setBlockSize] = useState<number>(130);
const [processingMethod, setProcessingMethod] = useState<ProcessingMethod>('directBlock');
const [parameterSettings, setParameterSettings] = useState<ParameterSettings>('defaultSettings');
const [pdfEnhancementEnabled, setPdfEnhancementEnabled] = useState<boolean>(false);
const [messageApi, contextHolder] = message.useMessage();
const fileType = ['pdf', 'doc', 'docx', 'xls', 'xlsx', 'csv', 'md', 'htm', 'html', 'json', 'ppt', 'pptx', 'txt','png','jpg']
const steps = useMemo(
@@ -469,6 +470,26 @@ const CreateDataset = () => {
</div>
)}
<div className='rb:text-base rb:font-medium rb:text-gray-800'>
{t('knowledgeBase.fileParsingSettings')}
</div>
<div className='rb:mt-4'>
<div
className={`rb:flex rb:items-center rb:w-full rb:border rb:rounded-lg rb:p-4 rb:cursor-pointer ${
pdfEnhancementEnabled ? 'rb:border-blue-500' : 'rb:border-gray-300'
}`}
onClick={() => setPdfEnhancementEnabled(!pdfEnhancementEnabled)}
>
<Checkbox
checked={pdfEnhancementEnabled}
onChange={(e) => setPdfEnhancementEnabled(e.target.checked)}
className='rb:mr-3'
/>
<span className='rb:text-base rb:font-medium rb:text-gray-800 rb:pl-[22px]'>
{t('knowledgeBase.pdfEnhancementAnalysis')}
</span>
</div>
</div>
<div className='rb:text-base rb:font-medium rb:text-gray-800 rb:mt-6'>
{t('knowledgeBase.dataProcessingSettings')}
</div>
<div className='rb:font-medium rb:text-gray-500 rb:mt-4 rb:mb-3'>

View File

@@ -118,6 +118,17 @@ const Private: FC = () => {
let url = `/documents/${knowledgeBaseId}/documents`;
setTableApi(url);
fetchKnowledgeBaseDetail(knowledgeBaseId);
// 立即设置基础面包屑,确保不会显示其他页面的面包屑
updateBreadcrumbs({
knowledgeBaseFolderPath,
knowledgeBase: {
id: knowledgeBaseId,
name: '加载中...',
type: 'knowledgeBase'
},
documentFolderPath: folderPath,
});
}
}, [knowledgeBaseId]);