Feat: admin audit (#5068)

* add admin audit (#5041)

* Test audit (#5058)

* feat: operation index

* fix: delete update vector

* perf: Clear invalid data

* perf: index

* perf: cleare invalid data

* index

* perf: audit event

* fix: schema enum

* add audit.svg (#5060)

Co-authored-by: dreamer6680 <146868355@qq.com>

* update package

* perf: audit

* perf: code move

* eslint

* doc

---------

Co-authored-by: gggaaallleee <91131304+gggaaallleee@users.noreply.github.com>
Co-authored-by: dreamer6680 <1468683855@qq.com>
Co-authored-by: dreamer6680 <146868355@qq.com>
This commit is contained in:
Archer
2025-06-19 10:35:21 +08:00
committed by GitHub
parent 36fafd2149
commit d44befeff0
53 changed files with 580 additions and 266 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "app",
"version": "4.9.12",
"version": "4.9.14",
"private": false,
"scripts": {
"dev": "next dev",

View File

@@ -1,4 +1,4 @@
import type { FlexProps} from '@chakra-ui/react';
import type { FlexProps } from '@chakra-ui/react';
import { Box, Flex, Textarea, useBoolean } from '@chakra-ui/react';
import React, { useRef, useCallback, useMemo, useState } from 'react';
import { useTranslation } from 'next-i18next';

View File

@@ -15,8 +15,8 @@ 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 { operationLogMap } from '@fastgpt/service/support/operationLog/constants';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { auditLogMap } from '@fastgpt/web/support/user/audit/constants';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { formatTime2YMDHMS } from '@fastgpt/global/common/string/time';
import UserBox from '@fastgpt/web/components/common/UserBox';
import MultipleSelect, {
@@ -27,11 +27,11 @@ import { getTeamMembers } from '@/web/support/user/team/api';
import { specialProcessors } from './processors';
import { defaultMetadataProcessor } from './processors/commonProcessor';
function OperationLogTable({ Tabs }: { Tabs: React.ReactNode }) {
function AuditLog({ Tabs }: { Tabs: React.ReactNode }) {
const { t } = useTranslation();
const [searchParams, setSearchParams] = useState<{
tmbIds?: string[];
events?: OperationLogEventEnum[];
events?: AuditEventEnum[];
}>({});
const { data: members, ScrollData } = useScrollPagination(getTeamMembers, {});
@@ -51,8 +51,8 @@ function OperationLogTable({ Tabs }: { Tabs: React.ReactNode }) {
const eventOptions = useMemo(
() =>
Object.values(OperationLogEventEnum).map((event) => ({
label: t(operationLogMap[event].typeLabel),
Object.values(AuditEventEnum).map((event) => ({
label: t(auditLogMap[event].typeLabel),
value: event
})),
[t]
@@ -61,14 +61,14 @@ function OperationLogTable({ Tabs }: { Tabs: React.ReactNode }) {
const processMetadataByEvent = useCallback(
(event: string, metadata: any) => {
const defaultFormat = defaultMetadataProcessor(metadata, t);
const specialFormat = specialProcessors[event as OperationLogEventEnum]?.(defaultFormat, t);
const specialFormat = specialProcessors[event as AuditEventEnum]?.(defaultFormat, t);
return specialFormat || defaultFormat;
},
[t]
);
const {
data: operationLogs = [],
data: auditLog = [],
isLoading: loadingLogs,
ScrollData: LogScrollData
} = useScrollPagination(getOperationLogs, {
@@ -92,7 +92,7 @@ function OperationLogTable({ Tabs }: { Tabs: React.ReactNode }) {
setValue: setSelectedEvents,
isSelectAll: isSelectAllEvent,
setIsSelectAll: setIsSelectAllEvent
} = useMultipleSelect<OperationLogEventEnum>(
} = useMultipleSelect<AuditEventEnum>(
eventOptions.map((item) => item.value),
true
);
@@ -166,8 +166,8 @@ function OperationLogTable({ Tabs }: { Tabs: React.ReactNode }) {
</Tr>
</Thead>
<Tbody>
{operationLogs?.map((log) => {
const i18nData = operationLogMap[log.event];
{auditLog?.map((log) => {
const i18nData = auditLogMap[log.event];
const metadata = processMetadataByEvent(log.event, { ...log.metadata });
return i18nData ? (
@@ -195,4 +195,4 @@ function OperationLogTable({ Tabs }: { Tabs: React.ReactNode }) {
);
}
export default OperationLogTable;
export default AuditLog;

View File

@@ -1,10 +1,10 @@
import type { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import type { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { createTeamProcessors } from './teamProcessors';
import { createAppProcessors } from './appProcessors';
import { createDatasetProcessors } from './datasetProcessors';
export type MetadataProcessor = (metadata: any, t: any) => any;
export const specialProcessors: Partial<Record<OperationLogEventEnum, MetadataProcessor>> = {
export const specialProcessors: Partial<Record<AuditEventEnum, MetadataProcessor>> = {
...createTeamProcessors,
...createAppProcessors,
...createDatasetProcessors

View File

@@ -21,7 +21,7 @@ const MemberTable = dynamic(() => import('@/pageComponents/account/team/MemberTa
const PermissionManage = dynamic(
() => import('@/pageComponents/account/team/PermissionManage/index')
);
const OperationLogTable = dynamic(() => import('@/pageComponents/account/team/OperationLog/index'));
const AuditLog = dynamic(() => import('@/pageComponents/account/team/Audit/index'));
const GroupManage = dynamic(() => import('@/pageComponents/account/team/GroupManage/index'));
const OrgManage = dynamic(() => import('@/pageComponents/account/team/OrgManage/index'));
const HandleInviteModal = dynamic(
@@ -96,7 +96,7 @@ const Team = () => {
}}
/>
),
[router, t, teamTab]
[planContent?.permissionTeamOperationLog, router, t, teamTab, toast]
);
return (
@@ -175,7 +175,7 @@ const Team = () => {
{teamTab === TeamTabEnum.org && <OrgManage Tabs={Tabs} />}
{teamTab === TeamTabEnum.group && <GroupManage Tabs={Tabs} />}
{teamTab === TeamTabEnum.permission && <PermissionManage Tabs={Tabs} />}
{teamTab === TeamTabEnum.audit && <OperationLogTable Tabs={Tabs} />}
{teamTab === TeamTabEnum.audit && <AuditLog Tabs={Tabs} />}
</Box>
</Flex>
{invitelinkid && <HandleInviteModal invitelinkid={invitelinkid} />}

View File

@@ -5,10 +5,10 @@ import { authApp } from '@fastgpt/service/support/permission/app/auth';
import { authUserPer } from '@fastgpt/service/support/permission/user/auth';
import type { ApiRequestProps, ApiResponseType } from '@fastgpt/service/type/next';
import { onCreateApp } from './create';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { AppTypeEnum } from '@fastgpt/global/core/app/constants';
import { getI18nAppType } from '@fastgpt/service/support/operationLog/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { getI18nAppType } from '@fastgpt/service/support/user/audit/util';
export type copyAppQuery = {};
export type copyAppBody = { appId: string };
@@ -46,10 +46,10 @@ async function handler(
pluginData: app.pluginData
});
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.CREATE_APP_COPY,
event: AuditEventEnum.CREATE_APP_COPY,
params: {
appName: app.name,
appType: getI18nAppType(app.type)

View File

@@ -19,9 +19,9 @@ import { checkTeamAppLimit } from '@fastgpt/service/support/permission/teamLimit
import { authUserPer } from '@fastgpt/service/support/permission/user/auth';
import { MongoTeamMember } from '@fastgpt/service/support/user/team/teamMemberSchema';
import { type ApiRequestProps } from '@fastgpt/service/type/next';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { getI18nAppType } from '@fastgpt/service/support/operationLog/util';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { getI18nAppType } from '@fastgpt/service/support/user/audit/util';
export type CreateAppBody = {
parentId?: ParentIdType;
@@ -152,10 +152,10 @@ export const onCreateApp = async ({
);
}
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.CREATE_APP,
event: AuditEventEnum.CREATE_APP,
params: {
appName: name!,
appType: getI18nAppType(type!)

View File

@@ -19,9 +19,9 @@ import { deleteChatFiles } from '@fastgpt/service/core/chat/controller';
import { pushTrack } from '@fastgpt/service/common/middle/tracks/utils';
import { MongoOpenApi } from '@fastgpt/service/support/openapi/schema';
import { removeImageByPath } from '@fastgpt/service/common/file/image/controller';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { getI18nAppType } from '@fastgpt/service/support/operationLog/util';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { getI18nAppType } from '@fastgpt/service/support/user/audit/util';
async function handler(req: NextApiRequest, res: NextApiResponse<any>) {
const { appId } = req.query as { appId: string };
@@ -43,10 +43,10 @@ async function handler(req: NextApiRequest, res: NextApiResponse<any>) {
appId
});
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.DELETE_APP,
event: AuditEventEnum.DELETE_APP,
params: {
appName: app.name,
appType: getI18nAppType(app.type)

View File

@@ -18,8 +18,8 @@ import { syncCollaborators } from '@fastgpt/service/support/permission/inheritPe
import { MongoResourcePermission } from '@fastgpt/service/support/permission/schema';
import { authUserPer } from '@fastgpt/service/support/permission/user/auth';
import { type ApiRequestProps } from '@fastgpt/service/type/next';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
export type CreateAppFolderBody = {
parentId?: ParentIdType;
name: string;
@@ -85,10 +85,10 @@ async function handler(req: ApiRequestProps<CreateAppFolderBody>) {
}
});
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.CREATE_APP_FOLDER,
event: AuditEventEnum.CREATE_APP_FOLDER,
params: {
folderName: name
}

View File

@@ -13,9 +13,9 @@ import { parsePaginationRequest } from '@fastgpt/service/common/api/pagination';
import { type PaginationResponse } from '@fastgpt/web/common/fetch/type';
import { addSourceMember } from '@fastgpt/service/support/user/utils';
import { replaceRegChars } from '@fastgpt/global/common/string/tools';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { getI18nAppType } from '@fastgpt/service/support/operationLog/util';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { getI18nAppType } from '@fastgpt/service/support/user/audit/util';
async function handler(
req: NextApiRequest,
@@ -148,10 +148,10 @@ async function handler(
const listWithoutTmbId = list.filter((item) => !item.tmbId);
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.EXPORT_APP_CHAT_LOG,
event: AuditEventEnum.EXPORT_APP_CHAT_LOG,
params: {
appName: app.name,
appType: getI18nAppType(app.type)

View File

@@ -24,9 +24,9 @@ import { TeamAppCreatePermissionVal } from '@fastgpt/global/support/permission/u
import { AppErrEnum } from '@fastgpt/global/common/error/code/app';
import { refreshSourceAvatar } from '@fastgpt/service/common/file/image/controller';
import { MongoResourcePermission } from '@fastgpt/service/support/permission/schema';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { getI18nAppType } from '@fastgpt/service/support/operationLog/util';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { getI18nAppType } from '@fastgpt/service/support/user/audit/util';
import { i18nT } from '@fastgpt/web/i18n/utils';
export type AppUpdateQuery = {
@@ -204,10 +204,10 @@ const logAppMove = ({
app: any;
targetName: string;
}) => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.MOVE_APP,
event: AuditEventEnum.MOVE_APP,
params: {
appName: app.name,
targetFolderName: targetName,
@@ -251,10 +251,10 @@ const logAppUpdate = ({
const { names: newItemNames, values: newItemValues } = getUpdateItems();
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.UPDATE_APP_INFO,
event: AuditEventEnum.UPDATE_APP_INFO,
params: {
appName: app.name,
newItemNames: newItemNames,

View File

@@ -9,9 +9,9 @@ import { getNextTimeByCronStringAndTimezone } from '@fastgpt/global/common/strin
import { type PostPublishAppProps } from '@/global/core/app/api';
import { WritePermissionVal } from '@fastgpt/global/support/permission/constant';
import { type ApiRequestProps } from '@fastgpt/service/type/next';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { getI18nAppType } from '@fastgpt/service/support/operationLog/util';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { getI18nAppType } from '@fastgpt/service/support/user/audit/util';
import { i18nT } from '@fastgpt/web/i18n/utils';
async function handler(req: ApiRequestProps<PostPublishAppProps>, res: NextApiResponse<any>) {
@@ -37,10 +37,10 @@ async function handler(req: ApiRequestProps<PostPublishAppProps>, res: NextApiRe
updateTime: new Date()
});
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.UPDATE_PUBLISH_APP,
event: AuditEventEnum.UPDATE_PUBLISH_APP,
params: {
appName: app.name,
operationName: i18nT('account_team:update'),
@@ -99,10 +99,10 @@ async function handler(req: ApiRequestProps<PostPublishAppProps>, res: NextApiRe
});
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.UPDATE_PUBLISH_APP,
event: AuditEventEnum.UPDATE_PUBLISH_APP,
params: {
appName: app.name,
operationName: isPublish

View File

@@ -4,9 +4,9 @@ import { authDataset } from '@fastgpt/service/support/permission/dataset/auth';
import { createOneCollection } from '@fastgpt/service/core/dataset/collection/controller';
import { NextAPI } from '@/service/middleware/entry';
import { WritePermissionVal } from '@fastgpt/global/support/permission/constant';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/operationLog/util';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/user/audit/util';
async function handler(req: NextApiRequest) {
const body = req.body as CreateDatasetCollectionParams;
@@ -26,10 +26,10 @@ async function handler(req: NextApiRequest) {
});
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.CREATE_COLLECTION,
event: AuditEventEnum.CREATE_COLLECTION,
params: {
collectionName: body.name,
datasetName: dataset.name,

View File

@@ -7,9 +7,9 @@ import { delCollection } from '@fastgpt/service/core/dataset/collection/controll
import { authDatasetCollection } from '@fastgpt/service/support/permission/dataset/auth';
import { CommonErrEnum } from '@fastgpt/global/common/error/code/common';
import { WritePermissionVal } from '@fastgpt/global/support/permission/constant';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/operationLog/util';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/user/audit/util';
type RetrainingCollectionResponse = {
collectionId: string;
@@ -52,10 +52,10 @@ async function handler(
});
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.RETRAIN_COLLECTION,
event: AuditEventEnum.RETRAIN_COLLECTION,
params: {
collectionName: collection.name,
datasetName: collection.dataset?.name || '',

View File

@@ -6,9 +6,9 @@ import { mongoSessionRun } from '@fastgpt/service/common/mongo/sessionRun';
import { NextAPI } from '@/service/middleware/entry';
import { WritePermissionVal } from '@fastgpt/global/support/permission/constant';
import { CommonErrEnum } from '@fastgpt/global/common/error/code/common';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/operationLog/util';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/user/audit/util';
async function handler(req: NextApiRequest) {
const { id: collectionId } = req.query as { id: string };
@@ -44,10 +44,10 @@ async function handler(req: NextApiRequest) {
);
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.DELETE_COLLECTION,
event: AuditEventEnum.DELETE_COLLECTION,
params: {
collectionName: collection.name,
datasetName: collection.dataset?.name || '',

View File

@@ -12,9 +12,9 @@ import { DatasetCollectionTypeEnum } from '@fastgpt/global/core/dataset/constant
import { type ClientSession } from '@fastgpt/service/common/mongo';
import { type CollectionWithDatasetType } from '@fastgpt/global/core/dataset/type';
import { mongoSessionRun } from '@fastgpt/service/common/mongo/sessionRun';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/operationLog/util';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/user/audit/util';
export type UpdateDatasetCollectionParams = {
id?: string;
parentId?: string;
@@ -135,10 +135,10 @@ async function handler(req: ApiRequestProps<UpdateDatasetCollectionParams>) {
});
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.UPDATE_COLLECTION,
event: AuditEventEnum.UPDATE_COLLECTION,
params: {
collectionName: collection.name,
datasetName: collection.dataset?.name || '',

View File

@@ -18,9 +18,9 @@ import { authDataset } from '@fastgpt/service/support/permission/dataset/auth';
import { checkTeamDatasetLimit } from '@fastgpt/service/support/permission/teamLimit';
import { authUserPer } from '@fastgpt/service/support/permission/user/auth';
import type { ApiRequestProps } from '@fastgpt/service/type/next';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/operationLog/util';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/user/audit/util';
export type DatasetCreateQuery = {};
export type DatasetCreateBody = CreateDatasetParams;
@@ -102,10 +102,10 @@ async function handler(
});
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.CREATE_DATASET,
event: AuditEventEnum.CREATE_DATASET,
params: {
datasetName: name,
datasetType: getI18nDatasetType(type)

View File

@@ -4,9 +4,9 @@ import { deleteDatasetData } from '@/service/core/dataset/data/controller';
import { NextAPI } from '@/service/middleware/entry';
import { WritePermissionVal } from '@fastgpt/global/support/permission/constant';
import { CommonErrEnum } from '@fastgpt/global/common/error/code/common';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/operationLog/util';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/user/audit/util';
async function handler(req: NextApiRequest) {
const { id: dataId } = req.query as {
id: string;
@@ -27,10 +27,10 @@ async function handler(req: NextApiRequest) {
await deleteDatasetData(datasetData);
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.DELETE_DATA,
event: AuditEventEnum.DELETE_DATA,
params: {
collectionName: collection.name,
datasetName: collection.dataset?.name || '',

View File

@@ -17,9 +17,9 @@ import { NextAPI } from '@/service/middleware/entry';
import { WritePermissionVal } from '@fastgpt/global/support/permission/constant';
import { CommonErrEnum } from '@fastgpt/global/common/error/code/common';
import { getLLMMaxChunkSize } from '@fastgpt/global/core/dataset/training/utils';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/operationLog/util';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/user/audit/util';
async function handler(req: NextApiRequest) {
const { collectionId, q, a, indexes } = req.body as InsertOneDatasetDataProps;
@@ -99,10 +99,10 @@ async function handler(req: NextApiRequest) {
});
(() => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.CREATE_DATA,
event: AuditEventEnum.CREATE_DATA,
params: {
collectionName: collection.name,
datasetName: collection.dataset?.name || '',

View File

@@ -5,9 +5,9 @@ import { NextAPI } from '@/service/middleware/entry';
import { WritePermissionVal } from '@fastgpt/global/support/permission/constant';
import { authDatasetData } from '@fastgpt/service/support/permission/dataset/auth';
import { type ApiRequestProps } from '@fastgpt/service/type/next';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/operationLog/util';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/user/audit/util';
async function handler(req: ApiRequestProps<UpdateDatasetDataProps>) {
const { dataId, q, a, indexes = [] } = req.body;
@@ -48,10 +48,10 @@ async function handler(req: ApiRequestProps<UpdateDatasetDataProps>) {
});
(() => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.UPDATE_DATA,
event: AuditEventEnum.UPDATE_DATA,
params: {
collectionName: collection.name,
datasetName: collection.dataset?.name || '',

View File

@@ -11,9 +11,9 @@ import { MongoDatasetCollectionTags } from '@fastgpt/service/core/dataset/tag/sc
import { removeImageByPath } from '@fastgpt/service/common/file/image/controller';
import { DatasetTypeEnum } from '@fastgpt/global/core/dataset/constants';
import { removeWebsiteSyncJobScheduler } from '@fastgpt/service/core/dataset/websiteSync';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/operationLog/util';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/user/audit/util';
async function handler(req: NextApiRequest) {
const { id: datasetId } = req.query as {
@@ -72,10 +72,10 @@ async function handler(req: NextApiRequest) {
});
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.DELETE_DATASET,
event: AuditEventEnum.DELETE_DATASET,
params: {
datasetName: dataset.name,
datasetType: getI18nDatasetType(dataset.type)

View File

@@ -17,8 +17,8 @@ import { syncCollaborators } from '@fastgpt/service/support/permission/inheritPe
import { MongoResourcePermission } from '@fastgpt/service/support/permission/schema';
import { authUserPer } from '@fastgpt/service/support/permission/user/auth';
import type { ApiRequestProps, ApiResponseType } from '@fastgpt/service/type/next';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
export type DatasetFolderCreateQuery = {};
export type DatasetFolderCreateBody = {
parentId?: string;
@@ -95,10 +95,10 @@ async function handler(
}
});
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.CREATE_DATASET_FOLDER,
event: AuditEventEnum.CREATE_DATASET_FOLDER,
params: {
folderName: name
}

View File

@@ -14,9 +14,9 @@ import { CommonErrEnum } from '@fastgpt/global/common/error/code/common';
import { useIPFrequencyLimit } from '@fastgpt/service/common/middle/reqFrequencyLimit';
import { type ApiRequestProps } from '@fastgpt/service/type/next';
import { getRerankModel } from '@fastgpt/service/core/ai/model';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/operationLog/util';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/user/audit/util';
async function handler(req: ApiRequestProps<SearchTestProps>): Promise<SearchTestResponse> {
const {
datasetId,
@@ -133,10 +133,10 @@ async function handler(req: ApiRequestProps<SearchTestProps>): Promise<SearchTes
});
}
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.SEARCH_TEST,
event: AuditEventEnum.SEARCH_TEST,
params: {
datasetName: dataset.name,
datasetType: getI18nDatasetType(dataset.type)

View File

@@ -37,9 +37,9 @@ import {
} from '@fastgpt/service/core/dataset/websiteSync';
import { delDatasetRelevantData } from '@fastgpt/service/core/dataset/controller';
import { isEqual } from 'lodash';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/operationLog/util';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/user/audit/util';
import { getEmbeddingModel, getLLMModel } from '@fastgpt/service/core/ai/model';
import { computedCollectionChunkSettings } from '@fastgpt/global/core/dataset/training/utils';
@@ -368,10 +368,10 @@ const logDatasetMove = ({
targetName: string;
}) => {
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.MOVE_DATASET,
event: AuditEventEnum.MOVE_DATASET,
params: {
datasetName: dataset.name,
targetFolderName: targetName,
@@ -391,10 +391,10 @@ const logDatasetUpdate = ({
dataset: any;
}) => {
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.UPDATE_DATASET,
event: AuditEventEnum.UPDATE_DATASET,
params: {
datasetName: dataset.name,
datasetType: getI18nDatasetType(dataset.type)

View File

@@ -8,8 +8,8 @@ import { ManagePermissionVal } from '@fastgpt/global/support/permission/constant
import { authApp } from '@fastgpt/service/support/permission/app/auth';
import { OpenApiErrEnum } from '@fastgpt/global/common/error/code/openapi';
import { TeamApikeyCreatePermissionVal } from '@fastgpt/global/support/permission/user/constant';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
async function handler(req: ApiRequestProps<EditApiKeyProps>): Promise<string> {
const { appId, name, limit } = req.body;
const { tmbId, teamId } = await (async () => {
@@ -51,10 +51,10 @@ async function handler(req: ApiRequestProps<EditApiKeyProps>): Promise<string> {
});
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.CREATE_API_KEY,
event: AuditEventEnum.CREATE_API_KEY,
params: {
keyName: name
}

View File

@@ -4,8 +4,8 @@ import { OwnerPermissionVal } from '@fastgpt/global/support/permission/constant'
import { CommonErrEnum } from '@fastgpt/global/common/error/code/common';
import type { ApiRequestProps, ApiResponseType } from '@fastgpt/service/type/next';
import { NextAPI } from '@/service/middleware/entry';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
export type OpenAPIDeleteQuery = { id: string };
export type OpenAPIDeleteBody = {};
export type OpenAPIDeleteResponse = {};
@@ -28,10 +28,10 @@ async function handler(
});
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.DELETE_API_KEY,
event: AuditEventEnum.DELETE_API_KEY,
params: {
keyName: openapi.name
}

View File

@@ -4,8 +4,8 @@ import { authOpenApiKeyCrud } from '@fastgpt/service/support/permission/auth/ope
import { OwnerPermissionVal } from '@fastgpt/global/support/permission/constant';
import type { ApiRequestProps } from '@fastgpt/service/type/next';
import { NextAPI } from '@/service/middleware/entry';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
async function handler(req: ApiRequestProps<EditApiKeyProps & { _id: string }>): Promise<void> {
const { _id, name, limit } = req.body;
@@ -17,10 +17,10 @@ async function handler(req: ApiRequestProps<EditApiKeyProps & { _id: string }>):
});
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.UPDATE_API_KEY,
event: AuditEventEnum.UPDATE_API_KEY,
params: {
keyName: name
}

View File

@@ -5,9 +5,9 @@ import type { PublishChannelEnum } from '@fastgpt/global/support/outLink/constan
import { ManagePermissionVal } from '@fastgpt/global/support/permission/constant';
import type { ApiRequestProps } from '@fastgpt/service/type/next';
import { NextAPI } from '@/service/middleware/entry';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { getI18nAppType } from '@fastgpt/service/support/operationLog/util';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { getI18nAppType } from '@fastgpt/service/support/user/audit/util';
import { getNanoid } from '@fastgpt/global/common/string/tools';
export type OutLinkCreateQuery = {};
@@ -40,10 +40,10 @@ async function handler(
});
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.CREATE_APP_PUBLISH_CHANNEL,
event: AuditEventEnum.CREATE_APP_PUBLISH_CHANNEL,
params: {
appName: app.name,
channelName: props.name,

View File

@@ -3,9 +3,9 @@ import { authOutLinkCrud } from '@fastgpt/service/support/permission/publish/aut
import { OwnerPermissionVal } from '@fastgpt/global/support/permission/constant';
import type { ApiRequestProps } from '@fastgpt/service/type/next';
import { NextAPI } from '@/service/middleware/entry';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { getI18nAppType } from '@fastgpt/service/support/operationLog/util';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { getI18nAppType } from '@fastgpt/service/support/user/audit/util';
export type OutLinkDeleteQuery = {
id: string;
@@ -28,10 +28,10 @@ async function handler(
await MongoOutLink.findByIdAndDelete(id);
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.DELETE_APP_PUBLISH_CHANNEL,
event: AuditEventEnum.DELETE_APP_PUBLISH_CHANNEL,
params: {
appName: app.name,
channelName: outLink.name,

View File

@@ -5,9 +5,9 @@ import { ManagePermissionVal } from '@fastgpt/global/support/permission/constant
import type { ApiRequestProps } from '@fastgpt/service/type/next';
import { NextAPI } from '@/service/middleware/entry';
import { CommonErrEnum } from '@fastgpt/global/common/error/code/common';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { getI18nAppType } from '@fastgpt/service/support/operationLog/util';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { getI18nAppType } from '@fastgpt/service/support/user/audit/util';
export type OutLinkUpdateQuery = {};
// {
@@ -55,10 +55,10 @@ async function handler(
});
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.UPDATE_APP_PUBLISH_CHANNEL,
event: AuditEventEnum.UPDATE_APP_PUBLISH_CHANNEL,
params: {
appName: logApp.name,
channelName: outLink.name,

View File

@@ -9,8 +9,8 @@ import { useIPFrequencyLimit } from '@fastgpt/service/common/middle/reqFrequency
import { pushTrack } from '@fastgpt/service/common/middle/tracks/utils';
import { CommonErrEnum } from '@fastgpt/global/common/error/code/common';
import { UserErrEnum } from '@fastgpt/global/common/error/code/user';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { UserAuthTypeEnum } from '@fastgpt/global/support/user/auth/constants';
import { authCode } from '@fastgpt/service/support/user/auth/controller';
import { createUserSession } from '@fastgpt/service/support/user/session';
@@ -79,10 +79,10 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {
teamId: userDetail.team.teamId,
tmbId: userDetail.team.tmbId
});
addOperationLog({
addAuditLog({
tmbId: userDetail.team.tmbId,
teamId: userDetail.team.teamId,
event: OperationLogEventEnum.LOGIN
event: AuditEventEnum.LOGIN
});
return {

View File

@@ -5,8 +5,8 @@ import { MongoUser } from '@fastgpt/service/support/user/schema';
import { MongoTeamMember } from '@fastgpt/service/support/user/team/teamMemberSchema';
import { i18nT } from '@fastgpt/web/i18n/utils';
import { NextAPI } from '@/service/middleware/entry';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
async function handler(req: NextApiRequest, res: NextApiResponse<any>) {
const { oldPsw, newPsw } = req.body as { oldPsw: string; newPsw: string };
@@ -41,10 +41,10 @@ async function handler(req: NextApiRequest, res: NextApiResponse<any>) {
});
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.CHANGE_PASSWORD,
event: AuditEventEnum.CHANGE_PASSWORD,
params: {}
});
})();

View File

@@ -3,9 +3,9 @@ import { authDataset } from '@fastgpt/service/support/permission/dataset/auth';
import { checkExportDatasetLimit } from '@fastgpt/service/support/user/utils';
import { NextAPI } from '@/service/middleware/entry';
import { WritePermissionVal } from '@fastgpt/global/support/permission/constant';
import { addOperationLog } from '@fastgpt/service/support/operationLog/addOperationLog';
import { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/operationLog/util';
import { addAuditLog } from '@fastgpt/service/support/user/audit/util';
import { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
import { getI18nDatasetType } from '@fastgpt/service/support/user/audit/util';
async function handler(req: NextApiRequest) {
const { datasetId } = req.query as {
@@ -30,10 +30,10 @@ async function handler(req: NextApiRequest) {
});
(async () => {
addOperationLog({
addAuditLog({
tmbId,
teamId,
event: OperationLogEventEnum.EXPORT_DATASET,
event: AuditEventEnum.EXPORT_DATASET,
params: {
datasetName: dataset.name,
datasetType: getI18nDatasetType(dataset.type)

View File

@@ -1,15 +1,11 @@
import { GET, POST, PUT } from '@/web/common/api/request';
import type { PaginationProps, PaginationResponse } from '@fastgpt/web/common/fetch/type';
import type { OperationListItemType } from '@fastgpt/global/support/operationLog/type';
import type { OperationLogEventEnum } from '@fastgpt/global/support/operationLog/constants';
import type { OperationListItemType } from '@fastgpt/global/support/user/audit/type';
import type { AuditEventEnum } from '@fastgpt/global/support/user/audit/constants';
export const getOperationLogs = (
props: PaginationProps & {
tmbIds?: string[];
events?: OperationLogEventEnum[];
events?: AuditEventEnum[];
}
) =>
POST<PaginationResponse<OperationListItemType>>(
`/proApi/support/user/team/operationLog/list`,
props
);
) => POST<PaginationResponse<OperationListItemType>>(`/proApi/support/user/audit/list`, props);