mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-23 05:12:39 +00:00

* perf: local file create collection * rename middleware * perf: remove code * feat: next14 * feat: external file dataset * collection tags field * external file dataset doc * fix: ts
94 lines
2.8 KiB
TypeScript
94 lines
2.8 KiB
TypeScript
import { getVectorCountByTeamId } from '../../common/vectorStore/controller';
|
|
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';
|
|
|
|
export const checkDatasetLimit = async ({
|
|
teamId,
|
|
insertLen = 0
|
|
}: {
|
|
teamId: string;
|
|
insertLen?: number;
|
|
}) => {
|
|
const [{ standardConstants, totalPoints, usedPoints, datasetMaxSize }, usedSize] =
|
|
await Promise.all([getTeamPlanStatus({ teamId }), getVectorCountByTeamId(teamId)]);
|
|
|
|
if (!standardConstants) return;
|
|
|
|
if (usedSize + insertLen >= datasetMaxSize) {
|
|
return Promise.reject(
|
|
`您的知识库容量为: ${datasetMaxSize}组,已使用: ${usedSize}组,导入当前文件需要: ${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);
|
|
}
|
|
};
|
|
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;
|
|
};
|