diff --git a/projects/app/src/pageComponents/account/team/OperationLog/index.tsx b/projects/app/src/pageComponents/account/team/OperationLog/index.tsx index 9e56cd0db..8a19a5f42 100644 --- a/projects/app/src/pageComponents/account/team/OperationLog/index.tsx +++ b/projects/app/src/pageComponents/account/team/OperationLog/index.tsx @@ -1,6 +1,5 @@ import { Box, - Button, Flex, Table, TableContainer, @@ -11,12 +10,11 @@ import { Tr, HStack } from '@chakra-ui/react'; -import { useState, useEffect, useMemo } from 'react'; +import { useState, useEffect, useMemo, useCallback } from 'react'; import { useTranslation } from 'next-i18next'; import MyBox from '@fastgpt/web/components/common/MyBox'; import { useScrollPagination } from '@fastgpt/web/hooks/useScrollPagination'; import { getOperationLogs } from '@/web/support/user/team/operantionLog/api'; -import { TeamPermission } from '@fastgpt/global/support/permission/user/controller'; import { operationLogMap } from '@fastgpt/service/support/operationLog/constants'; import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants'; import { formatTime2YMDHMS } from '@fastgpt/global/common/string/time'; @@ -26,7 +24,8 @@ import MultipleSelect, { } from '@fastgpt/web/components/common/MySelect/MultipleSelect'; import Avatar from '@fastgpt/web/components/common/Avatar'; import { getTeamMembers } from '@/web/support/user/team/api'; -import { createMetadataProcessorMap, type MetadataProcessor } from './processors'; +import { specialProcessors } from './processors'; +import { defaultMetadataProcessor } from './processors/commonProcessor'; function OperationLogTable({ Tabs }: { Tabs: React.ReactNode }) { const { t } = useTranslation(); @@ -59,13 +58,14 @@ function OperationLogTable({ Tabs }: { Tabs: React.ReactNode }) { [t] ); - const processMetadataByEvent = useMemo(() => { - const metadataProcessorMap = createMetadataProcessorMap(); - return (event: string, metadata: any) => { - const processor = metadataProcessorMap[event as OperationLogEventEnum]; - return processor ? processor(metadata, t) : metadata; - }; - }, [t]); + const processMetadataByEvent = useCallback( + (event: string, metadata: any) => { + const defaultFormat = defaultMetadataProcessor(metadata, t); + const specialFormat = specialProcessors[event as OperationLogEventEnum]?.(defaultFormat, t); + return specialFormat || defaultFormat; + }, + [t] + ); const { data: operationLogs = [], @@ -182,7 +182,7 @@ function OperationLogTable({ Tabs }: { Tabs: React.ReactNode }) { {formatTime2YMDHMS(log.timestamp)} {t(i18nData.typeLabel)} - {t(i18nData.content, metadata as any) as string} + {t(i18nData.content as any, metadata)} ) : null; })} diff --git a/projects/app/src/pageComponents/account/team/OperationLog/processors/appProcessors.ts b/projects/app/src/pageComponents/account/team/OperationLog/processors/appProcessors.ts index a96cb8731..ac453b4f3 100644 --- a/projects/app/src/pageComponents/account/team/OperationLog/processors/appProcessors.ts +++ b/projects/app/src/pageComponents/account/team/OperationLog/processors/appProcessors.ts @@ -1,5 +1,4 @@ import { AppPermission } from '@fastgpt/global/support/permission/app/controller'; -import { createSpecialProcessor } from './commonProcessor'; export const processUpdateAppCollaboratorSpecific = (metadata: any) => { const permissionValue = parseInt(metadata.permission, 10); @@ -12,6 +11,6 @@ export const processUpdateAppCollaboratorSpecific = (metadata: any) => { }; }; -export const createAppProcessors = () => ({ - UPDATE_APP_COLLABORATOR: createSpecialProcessor(processUpdateAppCollaboratorSpecific) -}); +export const createAppProcessors = { + UPDATE_APP_COLLABORATOR: processUpdateAppCollaboratorSpecific +}; diff --git a/projects/app/src/pageComponents/account/team/OperationLog/processors/commonProcessor.ts b/projects/app/src/pageComponents/account/team/OperationLog/processors/commonProcessor.ts index 4ea243cb3..a4556a628 100644 --- a/projects/app/src/pageComponents/account/team/OperationLog/processors/commonProcessor.ts +++ b/projects/app/src/pageComponents/account/team/OperationLog/processors/commonProcessor.ts @@ -10,13 +10,11 @@ export interface CommonMetadataFields { export const defaultMetadataProcessor = (metadata: CommonMetadataFields, t: any): any => { const result = { ...metadata }; - const translatableFields = ['appType', 'datasetType', 'operationName', 'itemName']; - - Object.entries(metadata) - .filter(([key, value]) => translatableFields.includes(key) && value) - .forEach(([key, value]) => { + Object.entries(metadata).forEach(([key, value]) => { + if (typeof value === 'string' && value.includes(':')) { result[key] = t(value as any); - }); + } + }); if (metadata.newItemNames) { if (Array.isArray(metadata.newItemNames)) { @@ -33,11 +31,3 @@ export const defaultMetadataProcessor = (metadata: CommonMetadataFields, t: any) return result; }; - -export const createSpecialProcessor = (specificProcessor: (metadata: any) => any) => { - return (metadata: any, t: any) => { - let processedMetadata = defaultMetadataProcessor(metadata, t); - processedMetadata = specificProcessor(processedMetadata); - return processedMetadata; - }; -}; diff --git a/projects/app/src/pageComponents/account/team/OperationLog/processors/datasetProcessors.ts b/projects/app/src/pageComponents/account/team/OperationLog/processors/datasetProcessors.ts index c9c30bda6..968b17657 100644 --- a/projects/app/src/pageComponents/account/team/OperationLog/processors/datasetProcessors.ts +++ b/projects/app/src/pageComponents/account/team/OperationLog/processors/datasetProcessors.ts @@ -1,5 +1,4 @@ import { DatasetPermission } from '@fastgpt/global/support/permission/dataset/controller'; -import { createSpecialProcessor } from './commonProcessor'; export const processUpdateDatasetCollaboratorSpecific = (metadata: any) => { const permissionValue = parseInt(metadata.permission, 10); @@ -12,6 +11,6 @@ export const processUpdateDatasetCollaboratorSpecific = (metadata: any) => { }; }; -export const createDatasetProcessors = () => ({ - UPDATE_DATASET_COLLABORATOR: createSpecialProcessor(processUpdateDatasetCollaboratorSpecific) -}); +export const createDatasetProcessors = { + UPDATE_DATASET_COLLABORATOR: processUpdateDatasetCollaboratorSpecific +}; diff --git a/projects/app/src/pageComponents/account/team/OperationLog/processors/index.ts b/projects/app/src/pageComponents/account/team/OperationLog/processors/index.ts index 10981efb4..baaa4e2fc 100644 --- a/projects/app/src/pageComponents/account/team/OperationLog/processors/index.ts +++ b/projects/app/src/pageComponents/account/team/OperationLog/processors/index.ts @@ -1,30 +1,11 @@ -import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants'; -import { defaultMetadataProcessor } from './commonProcessor'; +import type { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants'; import { createTeamProcessors } from './teamProcessors'; import { createAppProcessors } from './appProcessors'; import { createDatasetProcessors } from './datasetProcessors'; export type MetadataProcessor = (metadata: any, t: any) => any; - -export const createMetadataProcessorMap = (): Record => { - const specialProcessors: Partial> = { - ...createTeamProcessors(), - ...createAppProcessors(), - ...createDatasetProcessors() - }; - - const processorMap = {} as Record; - - Object.values(OperationLogEventEnum).forEach((event) => { - processorMap[event] = - specialProcessors[event] || - ((metadata: any, t: any) => defaultMetadataProcessor(metadata, t)); - }); - - return processorMap; +export const specialProcessors: Partial> = { + ...createTeamProcessors, + ...createAppProcessors, + ...createDatasetProcessors }; - -export * from './commonProcessor'; -export * from './teamProcessors'; -export * from './appProcessors'; -export * from './datasetProcessors'; diff --git a/projects/app/src/pageComponents/account/team/OperationLog/processors/teamProcessors.ts b/projects/app/src/pageComponents/account/team/OperationLog/processors/teamProcessors.ts index 928a8c3c1..147d1b733 100644 --- a/projects/app/src/pageComponents/account/team/OperationLog/processors/teamProcessors.ts +++ b/projects/app/src/pageComponents/account/team/OperationLog/processors/teamProcessors.ts @@ -1,5 +1,4 @@ import { TeamPermission } from '@fastgpt/global/support/permission/user/controller'; -import { createSpecialProcessor } from './commonProcessor'; export const processAssignPermissionSpecific = (metadata: any) => { const permissionValue = parseInt(metadata.permission, 10); @@ -14,6 +13,6 @@ export const processAssignPermissionSpecific = (metadata: any) => { }; }; -export const createTeamProcessors = () => ({ - ASSIGN_PERMISSION: createSpecialProcessor(processAssignPermissionSpecific) -}); +export const createTeamProcessors = { + ASSIGN_PERMISSION: processAssignPermissionSpecific +}; diff --git a/projects/app/src/pages/api/core/app/update.ts b/projects/app/src/pages/api/core/app/update.ts index 1bf4ed6ed..b43537bf0 100644 --- a/projects/app/src/pages/api/core/app/update.ts +++ b/projects/app/src/pages/api/core/app/update.ts @@ -205,18 +205,16 @@ const logAppMove = ({ app: any; targetName: string; }) => { - (async () => { - addOperationLog({ - tmbId, - teamId, - event: OperationLogEventEnum.MOVE_APP, - params: { - appName: app.name, - targetFolderName: targetName, - appType: getI18nAppType(app.type) - } - }); - })(); + addOperationLog({ + tmbId, + teamId, + event: OperationLogEventEnum.MOVE_APP, + params: { + appName: app.name, + targetFolderName: targetName, + appType: getI18nAppType(app.type) + } + }); }; const logAppUpdate = ({ @@ -232,39 +230,37 @@ const logAppUpdate = ({ name?: string; intro?: string; }) => { - (async () => { - const getUpdateItems = () => { - const names: string[] = []; - const values: string[] = []; + const getUpdateItems = () => { + const names: string[] = []; + const values: string[] = []; - if (name !== undefined) { - names.push(i18nT('common:core.app.name')); - values.push(name); - } + if (name !== undefined) { + names.push(i18nT('common:core.app.name')); + values.push(name); + } - if (intro !== undefined) { - names.push(i18nT('common:Intro')); - values.push(intro); - } + if (intro !== undefined) { + names.push(i18nT('common:Intro')); + values.push(intro); + } - return { - names, - values - }; + return { + names, + values }; + }; - const { names: newItemNames, values: newItemValues } = getUpdateItems(); + const { names: newItemNames, values: newItemValues } = getUpdateItems(); - addOperationLog({ - tmbId, - teamId, - event: OperationLogEventEnum.UPDATE_APP_INFO, - params: { - appName: app.name, - newItemNames: newItemNames, - newItemValues: newItemValues, - appType: getI18nAppType(app.type) - } - }); - })(); + addOperationLog({ + tmbId, + teamId, + event: OperationLogEventEnum.UPDATE_APP_INFO, + params: { + appName: app.name, + newItemNames: newItemNames, + newItemValues: newItemValues, + appType: getI18nAppType(app.type) + } + }); };