mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-23 21:13:50 +00:00
fix colection create api (#766)
Co-authored-by: heheer <71265218+newfish-cmyk@users.noreply.github.com>
This commit is contained in:
@@ -49,7 +49,7 @@ export const addLog = {
|
||||
},
|
||||
error(msg: string, error?: any) {
|
||||
this.log('error', msg, {
|
||||
message: error?.message,
|
||||
message: error?.message || error,
|
||||
stack: error?.stack,
|
||||
...(error?.config && {
|
||||
config: {
|
||||
|
@@ -47,18 +47,19 @@ const ChatItemSchema = new Schema({
|
||||
default: () => new Date()
|
||||
},
|
||||
obj: {
|
||||
// chat role
|
||||
type: String,
|
||||
required: true,
|
||||
enum: Object.keys(ChatRoleMap)
|
||||
},
|
||||
value: {
|
||||
// chat content
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
userGoodFeedback: {
|
||||
type: String
|
||||
},
|
||||
userFeedback: String,
|
||||
userBadFeedback: {
|
||||
type: String
|
||||
},
|
||||
|
@@ -86,13 +86,13 @@ const DatasetDataSchema = new Schema({
|
||||
});
|
||||
|
||||
try {
|
||||
// same data check
|
||||
DatasetDataSchema.index({ teamId: 1, collectionId: 1, q: 1, a: 1 }, { background: true });
|
||||
// list collection and count data; list data
|
||||
DatasetDataSchema.index(
|
||||
{ teamId: 1, datasetId: 1, collectionId: 1, chunkIndex: 1, updateTime: -1 },
|
||||
{ background: true }
|
||||
);
|
||||
// same data check
|
||||
DatasetDataSchema.index({ teamId: 1, collectionId: 1, q: 1, a: 1 }, { background: true });
|
||||
// full text index
|
||||
DatasetDataSchema.index({ teamId: 1, datasetId: 1, fullTextToken: 'text' }, { background: true });
|
||||
// Recall vectors after data matching
|
||||
|
@@ -10,8 +10,10 @@ export const checkDatasetLimit = async ({
|
||||
freeSize?: number;
|
||||
insertLen?: number;
|
||||
}) => {
|
||||
const { maxSize } = await getTeamDatasetValidSub({ teamId, freeSize });
|
||||
const usedSize = await getVectorCountByTeamId(teamId);
|
||||
const [{ maxSize }, usedSize] = await Promise.all([
|
||||
getTeamDatasetValidSub({ teamId, freeSize }),
|
||||
getVectorCountByTeamId(teamId)
|
||||
]);
|
||||
|
||||
if (usedSize + insertLen >= maxSize) {
|
||||
return Promise.reject(`数据库容量不足,无法继续添加。可以在账号页面进行扩容。`);
|
||||
|
@@ -8,10 +8,6 @@ import {
|
||||
} from '@fastgpt/global/support/user/team/constant';
|
||||
|
||||
const BillSchema = new Schema({
|
||||
userId: {
|
||||
type: Schema.Types.ObjectId,
|
||||
ref: 'user'
|
||||
},
|
||||
teamId: {
|
||||
type: Schema.Types.ObjectId,
|
||||
ref: TeamCollectionName,
|
||||
@@ -28,7 +24,7 @@ const BillSchema = new Schema({
|
||||
},
|
||||
appId: {
|
||||
type: Schema.Types.ObjectId,
|
||||
ref: 'model',
|
||||
ref: 'apps',
|
||||
required: false
|
||||
},
|
||||
time: {
|
||||
@@ -52,7 +48,7 @@ const BillSchema = new Schema({
|
||||
});
|
||||
|
||||
try {
|
||||
BillSchema.index({ teamId: 1, time: -1 });
|
||||
BillSchema.index({ teamId: 1, tmbId: 1, source: 1, time: -1 }, { background: true });
|
||||
BillSchema.index({ time: 1 }, { expireAfterSeconds: 180 * 24 * 60 * 60 });
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
|
@@ -1,10 +1,15 @@
|
||||
import { connectionMongo, type Model } from '../../../common/mongo';
|
||||
const { Schema, model, models } = connectionMongo;
|
||||
import { TeamCollectionName } from '@fastgpt/global/support/user/team/constant';
|
||||
import { subModeMap, subStatusMap, subTypeMap } from '@fastgpt/global/support/wallet/sub/constants';
|
||||
import {
|
||||
standardSubLevelMap,
|
||||
subModeMap,
|
||||
subStatusMap,
|
||||
subTypeMap
|
||||
} from '@fastgpt/global/support/wallet/sub/constants';
|
||||
import type { TeamSubSchema } from '@fastgpt/global/support/wallet/sub/type';
|
||||
|
||||
export const subCollectionName = 'team.subscription';
|
||||
export const subCollectionName = 'team.subscriptions';
|
||||
|
||||
const SubSchema = new Schema({
|
||||
teamId: {
|
||||
@@ -17,29 +22,107 @@ const SubSchema = new Schema({
|
||||
enum: Object.keys(subTypeMap),
|
||||
required: true
|
||||
},
|
||||
status: {
|
||||
// active: continue sub; canceled: canceled sub;
|
||||
type: String,
|
||||
enum: Object.keys(subStatusMap),
|
||||
required: true
|
||||
},
|
||||
mode: {
|
||||
type: String,
|
||||
enum: Object.keys(subModeMap),
|
||||
required: true
|
||||
},
|
||||
status: {
|
||||
type: String,
|
||||
enum: Object.keys(subStatusMap),
|
||||
required: true
|
||||
},
|
||||
renew: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
startTime: {
|
||||
type: Date
|
||||
type: Date,
|
||||
default: () => new Date()
|
||||
},
|
||||
expiredTime: {
|
||||
type: Date
|
||||
type: Date,
|
||||
required: true
|
||||
},
|
||||
datasetStoreAmount: {
|
||||
price: {
|
||||
// last sub pay price(total price)
|
||||
type: Number,
|
||||
required: true
|
||||
},
|
||||
|
||||
// sub content
|
||||
currentSubLevel: {
|
||||
type: String,
|
||||
enum: Object.keys(standardSubLevelMap)
|
||||
},
|
||||
nextSubLevel: {
|
||||
type: String,
|
||||
enum: Object.keys(standardSubLevelMap)
|
||||
},
|
||||
|
||||
currentExtraDatasetSize: {
|
||||
type: Number
|
||||
}
|
||||
},
|
||||
nextExtraDatasetSize: {
|
||||
type: Number
|
||||
},
|
||||
|
||||
currentExtraPoints: {
|
||||
type: Number
|
||||
},
|
||||
nextExtraPoints: {
|
||||
type: Number
|
||||
},
|
||||
|
||||
// standard sub limit
|
||||
maxTeamMember: {
|
||||
type: Number
|
||||
},
|
||||
maxAppAmount: {
|
||||
type: Number
|
||||
},
|
||||
maxDatasetAmount: {
|
||||
type: Number
|
||||
},
|
||||
chatHistoryStoreDuration: {
|
||||
// n day
|
||||
type: Number
|
||||
},
|
||||
maxDatasetSize: {
|
||||
type: Number
|
||||
},
|
||||
trainingWeight: {
|
||||
// 0 1 2 3
|
||||
type: Number
|
||||
},
|
||||
customApiKey: {
|
||||
type: Boolean
|
||||
},
|
||||
customCopyright: {
|
||||
type: Boolean
|
||||
},
|
||||
exportDatasetInterval: {
|
||||
// hours
|
||||
type: Number
|
||||
},
|
||||
websiteSyncInterval: {
|
||||
// hours
|
||||
type: Number
|
||||
},
|
||||
reRankWeight: {
|
||||
// 0 1 2 3
|
||||
type: Number
|
||||
},
|
||||
totalPoints: {
|
||||
// record standard sub points
|
||||
type: Number
|
||||
},
|
||||
|
||||
surplusPoints: {
|
||||
// standard sub / extra points sub
|
||||
type: Number
|
||||
},
|
||||
|
||||
// abandon
|
||||
renew: Boolean, //决定是否续费
|
||||
datasetStoreAmount: Number
|
||||
});
|
||||
|
||||
try {
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { SubStatusEnum } from '@fastgpt/global/support/wallet/sub/constants';
|
||||
import { SubTypeEnum } from '@fastgpt/global/support/wallet/sub/constants';
|
||||
import { MongoTeamSub } from './schema';
|
||||
|
||||
/* get team dataset size */
|
||||
@@ -11,17 +11,14 @@ export const getTeamDatasetValidSub = async ({
|
||||
}) => {
|
||||
const sub = await MongoTeamSub.findOne({
|
||||
teamId,
|
||||
status: SubStatusEnum.active
|
||||
})
|
||||
.sort({
|
||||
expiredTime: -1
|
||||
})
|
||||
.lean();
|
||||
type: SubTypeEnum.extraDatasetSize,
|
||||
expiredTime: { $gte: new Date() }
|
||||
}).lean();
|
||||
|
||||
const maxSize = (() => {
|
||||
if (!sub || !sub.datasetStoreAmount) return freeSize;
|
||||
if (!sub || !sub.currentExtraDatasetSize) return freeSize;
|
||||
|
||||
return sub.datasetStoreAmount + freeSize;
|
||||
return sub.currentExtraDatasetSize + freeSize;
|
||||
})();
|
||||
|
||||
return {
|
||||
|
Reference in New Issue
Block a user