mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-23 13:03:50 +00:00
Open Yufu Feishu Knowledge Base Permissions (#4867)
* add feishu yuque dataset * Open Yufu Feishu Knowledge Base Permissions * Refactor the dataset request module, optimize the import path, and fix the type definition --------- Co-authored-by: dreamer6680 <146868355@qq.com>
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
import { getProApiDatasetFileListRequest } from '@/service/core/dataset/apiDataset/controller';
|
||||
import { getApiDatasetRequest } from '@fastgpt/service/core/dataset/apiDataset';
|
||||
import { NextAPI } from '@/service/middleware/entry';
|
||||
import { DatasetErrEnum } from '@fastgpt/global/common/error/code/dataset';
|
||||
import type { ParentIdType } from '@fastgpt/global/common/parentFolder/type';
|
||||
import type {
|
||||
APIFileItem,
|
||||
@@ -8,12 +7,10 @@ import type {
|
||||
YuqueServer,
|
||||
FeishuServer
|
||||
} from '@fastgpt/global/core/dataset/apiDataset';
|
||||
import { useApiDatasetRequest } from '@fastgpt/service/core/dataset/apiDataset/api';
|
||||
import { type NextApiRequest } from 'next';
|
||||
import { authCert } from '@fastgpt/service/support/permission/auth/common';
|
||||
|
||||
export type GetApiDatasetCataLogProps = {
|
||||
searchKey?: string;
|
||||
parentId?: ParentIdType;
|
||||
yuqueServer?: YuqueServer;
|
||||
feishuServer?: FeishuServer;
|
||||
@@ -27,21 +24,15 @@ async function handler(req: NextApiRequest) {
|
||||
|
||||
await authCert({ req, authToken: true });
|
||||
|
||||
const data = await (async () => {
|
||||
if (apiServer) {
|
||||
return useApiDatasetRequest({ apiServer }).listFiles({ searchKey, parentId });
|
||||
}
|
||||
if (feishuServer || yuqueServer) {
|
||||
return getProApiDatasetFileListRequest({
|
||||
feishuServer,
|
||||
yuqueServer,
|
||||
parentId
|
||||
});
|
||||
}
|
||||
return Promise.reject(DatasetErrEnum.noApiServer);
|
||||
})();
|
||||
const data = await (
|
||||
await getApiDatasetRequest({
|
||||
feishuServer,
|
||||
yuqueServer,
|
||||
apiServer
|
||||
})
|
||||
).listFiles({ parentId, searchKey });
|
||||
|
||||
return data.filter((item: APIFileItem) => item.hasChild === true);
|
||||
return data?.filter((item: APIFileItem) => item.hasChild === true) || [];
|
||||
}
|
||||
|
||||
export default NextAPI(handler);
|
||||
|
@@ -7,12 +7,11 @@ import type {
|
||||
FeishuServer,
|
||||
ApiDatasetDetailResponse
|
||||
} from '@fastgpt/global/core/dataset/apiDataset';
|
||||
import { getProApiDatasetFileDetailRequest } from '@/service/core/dataset/apiDataset/controller';
|
||||
import { getApiDatasetRequest } from '@fastgpt/service/core/dataset/apiDataset';
|
||||
import type { ApiRequestProps, ApiResponseType } from '@fastgpt/service/type/next';
|
||||
import { authCert } from '@fastgpt/service/support/permission/auth/common';
|
||||
import { authDataset } from '@fastgpt/service/support/permission/dataset/auth';
|
||||
import { ManagePermissionVal } from '@fastgpt/global/support/permission/constant';
|
||||
import { useApiDatasetRequest } from '@fastgpt/service/core/dataset/apiDataset/api';
|
||||
|
||||
export type GetApiDatasetPathQuery = {};
|
||||
|
||||
@@ -86,26 +85,21 @@ async function handler(
|
||||
}
|
||||
})();
|
||||
|
||||
if (!apiServer && !feishuServer && !yuqueServer) {
|
||||
return Promise.reject(DatasetErrEnum.noApiServer);
|
||||
}
|
||||
|
||||
if (feishuServer) {
|
||||
return '';
|
||||
}
|
||||
|
||||
if (apiServer) {
|
||||
return await getFullPath(parentId, useApiDatasetRequest({ apiServer }).getFileDetail);
|
||||
}
|
||||
if (yuqueServer || apiServer) {
|
||||
const apiDataset = await getApiDatasetRequest({
|
||||
yuqueServer,
|
||||
apiServer
|
||||
});
|
||||
|
||||
if (yuqueServer) {
|
||||
const yuqueFileGetter = async ({ apiFileId }: { apiFileId: string }) => {
|
||||
return await getProApiDatasetFileDetailRequest({
|
||||
yuqueServer,
|
||||
apiFileId
|
||||
});
|
||||
};
|
||||
return await getFullPath(parentId, yuqueFileGetter);
|
||||
if (!apiDataset?.getFileDetail) {
|
||||
return Promise.reject(DatasetErrEnum.noApiServer);
|
||||
}
|
||||
|
||||
return await getFullPath(parentId, apiDataset.getFileDetail);
|
||||
}
|
||||
|
||||
return Promise.reject(new Error(DatasetErrEnum.noApiServer));
|
||||
|
@@ -2,7 +2,7 @@ import { NextAPI } from '@/service/middleware/entry';
|
||||
import { DatasetErrEnum } from '@fastgpt/global/common/error/code/dataset';
|
||||
import { type ParentIdType } from '@fastgpt/global/common/parentFolder/type';
|
||||
import { ReadPermissionVal } from '@fastgpt/global/support/permission/constant';
|
||||
import { useApiDatasetRequest } from '@fastgpt/service/core/dataset/apiDataset/api';
|
||||
import { getApiDatasetRequest } from '@fastgpt/service/core/dataset/apiDataset';
|
||||
import { authDataset } from '@fastgpt/service/support/permission/dataset/auth';
|
||||
import { type NextApiRequest } from 'next';
|
||||
|
||||
@@ -27,18 +27,13 @@ async function handler(req: NextApiRequest) {
|
||||
const feishuServer = dataset.feishuServer;
|
||||
const yuqueServer = dataset.yuqueServer;
|
||||
|
||||
if (apiServer) {
|
||||
return useApiDatasetRequest({ apiServer }).listFiles({ searchKey, parentId });
|
||||
}
|
||||
if (feishuServer || yuqueServer) {
|
||||
return global.getProApiDatasetFileList({
|
||||
feishuServer,
|
||||
return (
|
||||
await getApiDatasetRequest({
|
||||
apiServer,
|
||||
yuqueServer,
|
||||
parentId
|
||||
});
|
||||
}
|
||||
|
||||
return Promise.reject(DatasetErrEnum.noApiServer);
|
||||
feishuServer
|
||||
})
|
||||
).listFiles({ searchKey, parentId });
|
||||
}
|
||||
|
||||
export default NextAPI(handler);
|
||||
|
@@ -9,7 +9,7 @@ import { type OutLinkChatAuthProps } from '@fastgpt/global/support/permission/ch
|
||||
import { DatasetErrEnum } from '@fastgpt/global/common/error/code/dataset';
|
||||
import { authChatCrud, authCollectionInChat } from '@/service/support/permission/auth/chat';
|
||||
import { getCollectionWithDataset } from '@fastgpt/service/core/dataset/controller';
|
||||
import { useApiDatasetRequest } from '@fastgpt/service/core/dataset/apiDataset/api';
|
||||
import { getApiDatasetRequest } from '@fastgpt/service/core/dataset/apiDataset';
|
||||
|
||||
export type readCollectionSourceQuery = {};
|
||||
|
||||
@@ -98,21 +98,15 @@ async function handler(
|
||||
const feishuServer = collection.dataset.feishuServer;
|
||||
const yuqueServer = collection.dataset.yuqueServer;
|
||||
|
||||
if (apiServer) {
|
||||
return useApiDatasetRequest({ apiServer }).getFilePreviewUrl({
|
||||
apiFileId: collection.apiFileId
|
||||
});
|
||||
}
|
||||
|
||||
if (feishuServer || yuqueServer) {
|
||||
return global.getProApiDatasetFilePreviewUrl({
|
||||
apiFileId: collection.apiFileId,
|
||||
return (
|
||||
await getApiDatasetRequest({
|
||||
apiServer,
|
||||
feishuServer,
|
||||
yuqueServer
|
||||
});
|
||||
}
|
||||
|
||||
return '';
|
||||
})
|
||||
).getFilePreviewUrl({
|
||||
apiFileId: collection.apiFileId
|
||||
});
|
||||
}
|
||||
if (collection.type === DatasetCollectionTypeEnum.externalFile) {
|
||||
if (collection.externalFileId && collection.dataset.externalReadUrl) {
|
||||
|
@@ -66,10 +66,7 @@ const Dataset = () => {
|
||||
|
||||
const onSelectDatasetType = useCallback(
|
||||
(e: CreateDatasetType) => {
|
||||
if (
|
||||
!feConfigs?.isPlus &&
|
||||
[DatasetTypeEnum.websiteDataset, DatasetTypeEnum.feishu, DatasetTypeEnum.yuque].includes(e)
|
||||
) {
|
||||
if (!feConfigs?.isPlus && [DatasetTypeEnum.websiteDataset].includes(e)) {
|
||||
return toast({
|
||||
status: 'warning',
|
||||
title: t('common:commercial_function_tip')
|
||||
|
@@ -20,12 +20,6 @@ import {
|
||||
type ConcatUsageProps,
|
||||
type CreateUsageProps
|
||||
} from '@fastgpt/global/support/wallet/usage/api';
|
||||
import {
|
||||
getProApiDatasetFileContentRequest,
|
||||
getProApiDatasetFileDetailRequest,
|
||||
getProApiDatasetFileListRequest,
|
||||
getProApiDatasetFilePreviewUrlRequest
|
||||
} from '@/service/core/dataset/apiDataset/controller';
|
||||
import { isProVersion } from './constants';
|
||||
|
||||
export const readConfigData = async (name: string) => {
|
||||
@@ -77,11 +71,6 @@ export function initGlobalVariables() {
|
||||
if (!isProVersion()) return;
|
||||
return POST('/support/wallet/usage/concatUsage', data);
|
||||
};
|
||||
|
||||
global.getProApiDatasetFileList = getProApiDatasetFileListRequest;
|
||||
global.getProApiDatasetFileContent = getProApiDatasetFileContentRequest;
|
||||
global.getProApiDatasetFilePreviewUrl = getProApiDatasetFilePreviewUrlRequest;
|
||||
global.getProApiDatasetFileDetail = getProApiDatasetFileDetailRequest;
|
||||
}
|
||||
|
||||
global.communityPlugins = [];
|
||||
|
@@ -1,49 +0,0 @@
|
||||
import type {
|
||||
APIFileItem,
|
||||
ApiFileReadContentResponse,
|
||||
ApiDatasetDetailResponse
|
||||
} from '@fastgpt/global/core/dataset/apiDataset';
|
||||
import { POST } from '@fastgpt/service/common/api/plusRequest';
|
||||
import {
|
||||
type GetProApiDatasetFileContentParams,
|
||||
type GetProApiDatasetFileDetailParams,
|
||||
type GetProApiDatasetFileListParams,
|
||||
type GetProApiDatasetFilePreviewUrlParams,
|
||||
ProApiDatasetOperationTypeEnum
|
||||
} from '@fastgpt/service/core/dataset/apiDataset/proApi';
|
||||
|
||||
export const getProApiDatasetFileListRequest = async (data: GetProApiDatasetFileListParams) => {
|
||||
const res = await POST<APIFileItem[]>('/core/dataset/systemApiDataset', {
|
||||
type: ProApiDatasetOperationTypeEnum.LIST,
|
||||
...data
|
||||
});
|
||||
return res;
|
||||
};
|
||||
|
||||
export const getProApiDatasetFileContentRequest = async (
|
||||
data: GetProApiDatasetFileContentParams
|
||||
) => {
|
||||
const res = await POST<ApiFileReadContentResponse>('/core/dataset/systemApiDataset', {
|
||||
type: ProApiDatasetOperationTypeEnum.CONTENT,
|
||||
...data
|
||||
});
|
||||
return res;
|
||||
};
|
||||
|
||||
export const getProApiDatasetFilePreviewUrlRequest = async (
|
||||
data: GetProApiDatasetFilePreviewUrlParams
|
||||
) => {
|
||||
const res = await POST<string>('/core/dataset/systemApiDataset', {
|
||||
type: ProApiDatasetOperationTypeEnum.READ,
|
||||
...data
|
||||
});
|
||||
return res;
|
||||
};
|
||||
|
||||
export const getProApiDatasetFileDetailRequest = async (data: GetProApiDatasetFileDetailParams) => {
|
||||
const res = await POST<ApiDatasetDetailResponse>('/core/dataset/systemApiDataset', {
|
||||
type: ProApiDatasetOperationTypeEnum.DETAIL,
|
||||
...data
|
||||
});
|
||||
return res;
|
||||
};
|
Reference in New Issue
Block a user