mirror of
https://github.com/infiniflow/ragflow.git
synced 2025-12-26 08:56:47 +08:00
Fix: Metadata tips info (#12209)
### What problem does this PR solve? Fix: Metadata tips info ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue)
This commit is contained in:
@ -170,7 +170,7 @@ const Modal: ModalType = ({
|
||||
<DialogPrimitive.Root open={open} onOpenChange={handleChange}>
|
||||
<DialogPrimitive.Portal>
|
||||
<DialogPrimitive.Overlay
|
||||
className="fixed inset-0 z-50 bg-bg-card backdrop-blur-sm flex items-center justify-center p-4"
|
||||
className="fixed inset-0 z-50 bg-bg-card backdrop-blur-[1px] flex items-center justify-center p-4"
|
||||
onClick={() => maskClosable && onOpenChange?.(false)}
|
||||
>
|
||||
<DialogPrimitive.Content
|
||||
|
||||
@ -37,6 +37,15 @@ const handleDocHelpCLick = () => {
|
||||
window.open('https://ragflow.io/docs/dev/category/guides', 'target');
|
||||
};
|
||||
|
||||
const PathMap = {
|
||||
[Routes.Datasets]: [Routes.Datasets],
|
||||
[Routes.Chats]: [Routes.Chats],
|
||||
[Routes.Searches]: [Routes.Searches],
|
||||
[Routes.Agents]: [Routes.Agents],
|
||||
[Routes.Memories]: [Routes.Memories, Routes.Memory, Routes.MemoryMessage],
|
||||
[Routes.Files]: [Routes.Files],
|
||||
} as const;
|
||||
|
||||
export function Header() {
|
||||
const { t } = useTranslation();
|
||||
const { pathname } = useLocation();
|
||||
@ -106,6 +115,18 @@ export function Header() {
|
||||
navigate(Routes.Root);
|
||||
}, [navigate]);
|
||||
|
||||
const activePathName = useMemo(() => {
|
||||
const name = Object.keys(PathMap).find((x: string) => {
|
||||
const pathList = PathMap[x as keyof typeof PathMap];
|
||||
return pathList.some((y: string) => pathname.indexOf(y) > -1);
|
||||
});
|
||||
if (name) {
|
||||
return name;
|
||||
} else {
|
||||
return pathname;
|
||||
}
|
||||
}, [pathname]);
|
||||
|
||||
return (
|
||||
<section className="py-5 px-10 flex justify-between items-center ">
|
||||
<div className="flex items-center gap-4">
|
||||
@ -121,7 +142,7 @@ export function Header() {
|
||||
sizeType="xl"
|
||||
buttonSize="xl"
|
||||
options={options}
|
||||
value={pathname}
|
||||
value={activePathName}
|
||||
onChange={handleChange}
|
||||
activeClassName="text-bg-base bg-metallic-gradient border-b-[#00BEB4] border-b-2"
|
||||
></Segmented>
|
||||
|
||||
@ -184,6 +184,10 @@ Procedural Memory: Learned skills, habits, and automated procedures.`,
|
||||
'Value already exists. Confirm to merge duplicates and combine all associated files.',
|
||||
fieldNameExists:
|
||||
'Field name already exists. Confirm to merge duplicates and combine all associated files.',
|
||||
valueSingleExists:
|
||||
'Value already exists. Confirm to merge duplicates .',
|
||||
fieldSingleNameExists:
|
||||
'Field name already exists. Confirm to merge duplicates .',
|
||||
fieldExists: 'Field already exists.',
|
||||
fieldSetting: 'Field settings',
|
||||
changesAffectNewParses: 'Changes affect new parses only.',
|
||||
|
||||
@ -171,11 +171,16 @@ export default {
|
||||
descriptionTip:
|
||||
'提供描述或示例来指导大语言模型为此字段提取值。如果留空,将依赖字段名称。',
|
||||
restrictTDefinedValuesTip:
|
||||
'枚举模式:限制大语言模型仅提取预设值。在下方定义值。',
|
||||
'枚举模式:限制大语言模型提取的值只能匹配预设值。在下方定义值。',
|
||||
valueExists: '值已存在。确认合并重复项并组合所有关联文件。',
|
||||
fieldNameExists: '字段名已存在。确认合并重复项并组合所有关联文件。',
|
||||
valueSingleExists: '值已存在。确认合并重复项。',
|
||||
fieldSingleNameExists: '字段名已存在。确认合并重复项。',
|
||||
fieldExists: '字段名已存在。',
|
||||
fieldSetting: '字段设置',
|
||||
changesAffectNewParses: '更改仅影响新解析。',
|
||||
editMetadataForDataset: '查看和编辑元数据于 ',
|
||||
restrictDefinedValues: '限制为已定义值',
|
||||
changesAffectNewParses: '更改仅影响新的解析。',
|
||||
editMetadataForDataset: '查看和编辑元数据 ',
|
||||
restrictDefinedValues: '限制为已定义的值',
|
||||
metadataGenerationSettings: '元数据生成设置',
|
||||
manageMetadataForDataset: '管理此数据集的元数据',
|
||||
manageMetadata: '管理元数据',
|
||||
@ -185,11 +190,8 @@ export default {
|
||||
action: '操作',
|
||||
field: '字段',
|
||||
description: '描述',
|
||||
fieldName: '字段名',
|
||||
fieldName: '字段名称',
|
||||
editMetadata: '编辑元数据',
|
||||
valueExists: '值已存在。确认合并重复项并组合所有关联文件。',
|
||||
fieldNameExists: '字段名已存在。确认合并重复项并组合所有关联文件。',
|
||||
fieldExists: '字段名已存在。',
|
||||
deleteWarn: '此 {{field}} 将从所有关联文件中移除',
|
||||
deleteManageFieldAllWarn:
|
||||
'此字段及其所有对应值将从所有关联的文件中删除。',
|
||||
|
||||
@ -32,28 +32,42 @@ export const MetadataDeleteMap = (
|
||||
t: TFunction<'translation', undefined>,
|
||||
): Record<
|
||||
MetadataType,
|
||||
{ title: string; warnFieldText: string; warnValueText: string }
|
||||
{
|
||||
title: string;
|
||||
warnFieldText: string;
|
||||
warnValueText: string;
|
||||
warnFieldName: string;
|
||||
warnValueName: string;
|
||||
}
|
||||
> => {
|
||||
return {
|
||||
[MetadataType.Manage]: {
|
||||
title: t('common.delete') + ' ' + t('knowledgeDetails.metadata.metadata'),
|
||||
warnFieldText: t('knowledgeDetails.metadata.deleteManageFieldAllWarn'),
|
||||
warnValueText: t('knowledgeDetails.metadata.deleteManageValueAllWarn'),
|
||||
warnFieldName: t('knowledgeDetails.metadata.fieldNameExists'),
|
||||
warnValueName: t('knowledgeDetails.metadata.valueExists'),
|
||||
},
|
||||
[MetadataType.Setting]: {
|
||||
title: t('common.delete') + ' ' + t('knowledgeDetails.metadata.metadata'),
|
||||
warnFieldText: t('knowledgeDetails.metadata.deleteSettingFieldWarn'),
|
||||
warnValueText: t('knowledgeDetails.metadata.deleteSettingValueWarn'),
|
||||
warnFieldName: t('knowledgeDetails.metadata.fieldExists'),
|
||||
warnValueName: t('knowledgeDetails.metadata.valueExists'),
|
||||
},
|
||||
[MetadataType.UpdateSingle]: {
|
||||
title: t('common.delete') + ' ' + t('knowledgeDetails.metadata.metadata'),
|
||||
warnFieldText: t('knowledgeDetails.metadata.deleteManageFieldSingleWarn'),
|
||||
warnValueText: t('knowledgeDetails.metadata.deleteManageValueSingleWarn'),
|
||||
warnFieldName: t('knowledgeDetails.metadata.fieldSingleNameExists'),
|
||||
warnValueName: t('knowledgeDetails.metadata.valueSingleExists'),
|
||||
},
|
||||
[MetadataType.SingleFileSetting]: {
|
||||
title: t('common.delete') + ' ' + t('knowledgeDetails.metadata.metadata'),
|
||||
warnFieldText: t('knowledgeDetails.metadata.deleteSettingFieldWarn'),
|
||||
warnValueText: t('knowledgeDetails.metadata.deleteSettingValueWarn'),
|
||||
warnFieldName: t('knowledgeDetails.metadata.fieldExists'),
|
||||
warnValueName: t('knowledgeDetails.metadata.valueSingleExists'),
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@ -47,10 +47,10 @@ export const useManageValues = (props: IManageValuesProps) => {
|
||||
setValueError((prev) => {
|
||||
return {
|
||||
...prev,
|
||||
field:
|
||||
type === MetadataType.Setting
|
||||
? t('knowledgeDetails.metadata.fieldExists')
|
||||
: t('knowledgeDetails.metadata.fieldNameExists'),
|
||||
field: MetadataDeleteMap(t)[type as MetadataType].warnFieldName,
|
||||
// type === MetadataType.Setting
|
||||
// ? t('knowledgeDetails.metadata.fieldExists')
|
||||
// : t('knowledgeDetails.metadata.fieldNameExists'),
|
||||
};
|
||||
});
|
||||
} else if (field === 'field' && !existsKeys.includes(value)) {
|
||||
@ -103,7 +103,8 @@ export const useManageValues = (props: IManageValuesProps) => {
|
||||
setValueError((prev) => {
|
||||
return {
|
||||
...prev,
|
||||
values: t('knowledgeDetails.metadata.valueExists'),
|
||||
values: MetadataDeleteMap(t)[type as MetadataType].warnValueName,
|
||||
// t('knowledgeDetails.metadata.valueExists'),
|
||||
};
|
||||
});
|
||||
} else {
|
||||
@ -120,7 +121,7 @@ export const useManageValues = (props: IManageValuesProps) => {
|
||||
return newValues;
|
||||
});
|
||||
},
|
||||
[t],
|
||||
[t, type],
|
||||
);
|
||||
|
||||
// Handle blur event, synchronize to main state
|
||||
|
||||
@ -485,7 +485,7 @@ export const LLMSelect = ({
|
||||
export function LLMModelItem({ line = 1, isEdit, label, name }: IProps) {
|
||||
const { t } = useTranslate('knowledgeConfiguration');
|
||||
const form = useFormContext();
|
||||
const disabled = useHasParsedDocument(isEdit);
|
||||
// const disabled = useHasParsedDocument(isEdit);
|
||||
return (
|
||||
<>
|
||||
<FormField
|
||||
@ -515,7 +515,7 @@ export function LLMModelItem({ line = 1, isEdit, label, name }: IProps) {
|
||||
<LLMSelect
|
||||
isEdit={!!isEdit}
|
||||
field={field}
|
||||
disabled={disabled}
|
||||
disabled={false}
|
||||
></LLMSelect>
|
||||
</FormControl>
|
||||
</div>
|
||||
|
||||
@ -47,7 +47,7 @@ const InfoItem: React.FC<{
|
||||
<span className="text-text-secondary text-sm">{label}</span>
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<span className="text-text-primary mt-1 truncate max-w-[200px]">
|
||||
<span className="text-text-primary mt-1 truncate w-full">
|
||||
{value}
|
||||
</span>
|
||||
</TooltipTrigger>
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
import message from '@/components/ui/message';
|
||||
import { useSetModalState } from '@/hooks/common-hooks';
|
||||
import { useHandleSearchChange } from '@/hooks/logic-hooks';
|
||||
import { useFetchTenantInfo } from '@/hooks/use-user-setting-request';
|
||||
import memoryService, { updateMemoryById } from '@/services/memory-service';
|
||||
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
|
||||
import { useDebounce } from 'ahooks';
|
||||
@ -216,15 +217,22 @@ export const useRenameMemory = () => {
|
||||
const { updateMemory } = useUpdateMemory();
|
||||
const { createMemory } = useCreateMemory();
|
||||
const [loading, setLoading] = useState(false);
|
||||
const { data: tenantInfo } = useFetchTenantInfo();
|
||||
|
||||
const handleShowChatRenameModal = useCallback(
|
||||
(record?: IMemory) => {
|
||||
if (record) {
|
||||
setMemory(record);
|
||||
const embd_id = record.embd_id || tenantInfo?.embd_id;
|
||||
const llm_id = record.llm_id || tenantInfo?.llm_id;
|
||||
setMemory({
|
||||
...record,
|
||||
embd_id,
|
||||
llm_id,
|
||||
});
|
||||
}
|
||||
showChatRenameModal();
|
||||
},
|
||||
[showChatRenameModal],
|
||||
[showChatRenameModal, tenantInfo],
|
||||
);
|
||||
|
||||
const handleHideModal = useCallback(() => {
|
||||
|
||||
@ -117,12 +117,13 @@ export const useMessageAction = () => {
|
||||
data: messageContent,
|
||||
isPending: fetchMessageContentLoading,
|
||||
mutateAsync: fetchMessageContent,
|
||||
} = useMutation<IMessageContentProps>({
|
||||
} = useMutation<IMessageContentProps, Error, IMessageInfo>({
|
||||
mutationKey: [
|
||||
MemoryApiAction.FetchMessageContent,
|
||||
selectedMessage.message_id,
|
||||
],
|
||||
mutationFn: async () => {
|
||||
|
||||
mutationFn: async (selectedMessage: IMessageInfo) => {
|
||||
setShowMessageContentDialog(true);
|
||||
const res = await memoryService.getMessageContent({
|
||||
memory_id: memoryId,
|
||||
@ -140,7 +141,7 @@ export const useMessageAction = () => {
|
||||
const handleClickMessageContentDialog = useCallback(
|
||||
(message: IMessageInfo) => {
|
||||
setSelectedMessage(message);
|
||||
fetchMessageContent();
|
||||
fetchMessageContent(message);
|
||||
},
|
||||
[fetchMessageContent],
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user