mirror of
https://github.com/labring/FastGPT.git
synced 2025-12-26 04:24:54 +00:00
Some checks failed
Build FastGPT images in Personal warehouse / build-fastgpt-images (push) Has been cancelled
Co-authored-by: Archer <545436317@qq.com> Co-authored-by: Finley Ge <32237950+FinleyGe@users.noreply.github.com>
97 lines
2.9 KiB
TypeScript
97 lines
2.9 KiB
TypeScript
import { getTeamPlanStatus, getTeamStandPlan } from '../../support/wallet/sub/utils';
|
|
import { MongoApp } from '../../core/app/schema';
|
|
import { MongoPlugin } from '../../core/plugin/schema';
|
|
import { MongoDataset } from '../../core/dataset/schema';
|
|
import { DatasetTypeEnum } from '@fastgpt/global/core/dataset/constants';
|
|
import { TeamErrEnum } from '@fastgpt/global/common/error/code/team';
|
|
import { SystemErrEnum } from '@fastgpt/global/common/error/code/system';
|
|
|
|
export const checkDatasetLimit = async ({
|
|
teamId,
|
|
insertLen = 0
|
|
}: {
|
|
teamId: string;
|
|
insertLen?: number;
|
|
}) => {
|
|
const { standardConstants, totalPoints, usedPoints, datasetMaxSize, usedDatasetSize } =
|
|
await getTeamPlanStatus({ teamId });
|
|
|
|
if (!standardConstants) return;
|
|
|
|
if (usedDatasetSize + insertLen >= datasetMaxSize) {
|
|
return Promise.reject(
|
|
`您的知识库容量为: ${datasetMaxSize}组,已使用: ${usedDatasetSize}组,导入当前文件需要: ${insertLen}组,请增加知识库容量后导入。`
|
|
);
|
|
}
|
|
|
|
if (usedPoints >= totalPoints) {
|
|
return Promise.reject(TeamErrEnum.aiPointsNotEnough);
|
|
}
|
|
return;
|
|
};
|
|
|
|
export const checkTeamAIPoints = async (teamId: string) => {
|
|
const { standardConstants, totalPoints, usedPoints } = await getTeamPlanStatus({
|
|
teamId
|
|
});
|
|
|
|
if (!standardConstants) return;
|
|
|
|
if (usedPoints >= totalPoints) {
|
|
return Promise.reject(TeamErrEnum.aiPointsNotEnough);
|
|
}
|
|
|
|
return {
|
|
totalPoints,
|
|
usedPoints
|
|
};
|
|
};
|
|
|
|
export const checkTeamDatasetLimit = async (teamId: string) => {
|
|
const [{ standardConstants }, datasetCount] = await Promise.all([
|
|
getTeamStandPlan({ teamId }),
|
|
MongoDataset.countDocuments({
|
|
teamId,
|
|
type: { $ne: DatasetTypeEnum.folder }
|
|
})
|
|
]);
|
|
|
|
if (standardConstants && datasetCount >= standardConstants.maxDatasetAmount) {
|
|
return Promise.reject(TeamErrEnum.datasetAmountNotEnough);
|
|
}
|
|
if (!global.feConfigs.isPlus && datasetCount >= 30) {
|
|
return Promise.reject(SystemErrEnum.communityVersionNumLimit);
|
|
}
|
|
};
|
|
export const checkTeamAppLimit = async (teamId: string) => {
|
|
const [{ standardConstants }, appCount] = await Promise.all([
|
|
getTeamStandPlan({ teamId }),
|
|
MongoApp.count({ teamId })
|
|
]);
|
|
|
|
if (standardConstants && appCount >= standardConstants.maxAppAmount) {
|
|
return Promise.reject(TeamErrEnum.appAmountNotEnough);
|
|
}
|
|
};
|
|
export const checkTeamPluginLimit = async (teamId: string) => {
|
|
const [{ standardConstants }, pluginCount] = await Promise.all([
|
|
getTeamStandPlan({ teamId }),
|
|
MongoPlugin.count({ teamId })
|
|
]);
|
|
|
|
if (standardConstants && pluginCount >= standardConstants.maxAppAmount) {
|
|
return Promise.reject(TeamErrEnum.pluginAmountNotEnough);
|
|
}
|
|
};
|
|
|
|
export const checkTeamReRankPermission = async (teamId: string) => {
|
|
const { standardConstants } = await getTeamStandPlan({
|
|
teamId
|
|
});
|
|
|
|
if (standardConstants && !standardConstants?.permissionReRank) {
|
|
return false;
|
|
}
|
|
return true;
|
|
};
|