* perf: insert mongo dataset data session * perf: dataset data index * remove delay * rename bill schema * rename bill record * perf: bill table * perf: prompt * perf: sub plan * change the usage count * feat: usage bill * publish usages * doc * 新增团队聊天功能 (#20) * perf: doc * feat 添加标签部分 feat 信息团队标签配置 feat 新增团队同步管理 feat team分享页面 feat 完成team分享页面 feat 实现模糊搜索 style 格式化 fix 修复迷糊匹配 style 样式修改 fix 团队标签功能修复 * fix 修复鉴权功能 * merge 合并代码 * fix 修复引用错误 * fix 修复pr问题 * fix 修复ts格式问题 --------- Co-authored-by: archer <545436317@qq.com> Co-authored-by: liuxingwan <liuxingwan.lxw@alibaba-inc.com> * update extra plan * fix: ts * format * perf: bill field * feat: standard plan * fix: ts * feat 个人账号页面修改 (#22) * feat 添加标签部分 feat 信息团队标签配置 feat 新增团队同步管理 feat team分享页面 feat 完成team分享页面 feat 实现模糊搜索 style 格式化 fix 修复迷糊匹配 style 样式修改 fix 团队标签功能修复 * fix 修复鉴权功能 * merge 合并代码 * fix 修复引用错误 * fix 修复pr问题 * fix 修复ts格式问题 * feat 修改个人账号页 --------- Co-authored-by: liuxingwan <liuxingwan.lxw@alibaba-inc.com> * fix chunk index; error page text * feat: dataset process Integral prediction * feat: stand plan field * feat: sub plan limit * perf: index * query extension * perf: share link push app name * perf: plan point unit * perf: get sub plan * perf: account page --------- Co-authored-by: yst <77910600+yu-and-liu@users.noreply.github.com> Co-authored-by: liuxingwan <liuxingwan.lxw@alibaba-inc.com>
71 lines
2.2 KiB
TypeScript
71 lines
2.2 KiB
TypeScript
import { SubTypeEnum } from '@fastgpt/global/support/wallet/sub/constants';
|
|
import { MongoTeamSub } from './schema';
|
|
import {
|
|
FeTeamPlanStatusType,
|
|
StandSubPlanLevelMapType
|
|
} from '@fastgpt/global/support/wallet/sub/type.d';
|
|
import { getVectorCountByTeamId } from '../../../common/vectorStore/controller';
|
|
|
|
export const getTeamSubPlans = async ({
|
|
teamId,
|
|
standardPlans
|
|
}: {
|
|
teamId: string;
|
|
standardPlans?: StandSubPlanLevelMapType;
|
|
}): Promise<FeTeamPlanStatusType> => {
|
|
const [plans, usedDatasetSize] = await Promise.all([
|
|
MongoTeamSub.find({ teamId }).lean(),
|
|
getVectorCountByTeamId(teamId)
|
|
]);
|
|
|
|
const standard = plans.find((plan) => plan.type === SubTypeEnum.standard);
|
|
const extraDatasetSize = plans.filter((plan) => plan.type === SubTypeEnum.extraDatasetSize);
|
|
const extraPoints = plans.filter((plan) => plan.type === SubTypeEnum.extraPoints);
|
|
|
|
const totalPoints =
|
|
(standard?.totalPoints || 0) +
|
|
extraPoints.reduce((acc, cur) => acc + (cur.totalPoints || 0), 0);
|
|
const surplusPoints =
|
|
(standard?.surplusPoints || 0) +
|
|
extraPoints.reduce((acc, cur) => acc + (cur.surplusPoints || 0), 0);
|
|
|
|
const standardMaxDatasetSize =
|
|
standard?.currentSubLevel && standardPlans
|
|
? standardPlans[standard.currentSubLevel]?.maxDatasetSize || Infinity
|
|
: Infinity;
|
|
const totalDatasetSize =
|
|
standardMaxDatasetSize +
|
|
extraDatasetSize.reduce((acc, cur) => acc + (cur.currentExtraDatasetSize || 0), 0);
|
|
|
|
return {
|
|
[SubTypeEnum.standard]: standard,
|
|
standardConstants:
|
|
standard?.currentSubLevel && standardPlans
|
|
? standardPlans[standard.currentSubLevel]
|
|
: undefined,
|
|
|
|
totalPoints,
|
|
usedPoints: totalPoints - surplusPoints,
|
|
|
|
datasetMaxSize: totalDatasetSize,
|
|
usedDatasetSize
|
|
};
|
|
};
|
|
export const getTeamStandPlan = async ({
|
|
teamId,
|
|
standardPlans
|
|
}: {
|
|
teamId: string;
|
|
standardPlans?: StandSubPlanLevelMapType;
|
|
}) => {
|
|
const standard = await MongoTeamSub.findOne({ teamId, type: SubTypeEnum.standard }).lean();
|
|
|
|
return {
|
|
[SubTypeEnum.standard]: standard,
|
|
standardConstants:
|
|
standard?.currentSubLevel && standardPlans
|
|
? standardPlans[standard.currentSubLevel]
|
|
: undefined
|
|
};
|
|
};
|