doc gpt V0.2
This commit is contained in:
24
src/service/models/authCode.ts
Normal file
24
src/service/models/authCode.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import { Schema, model, models } from 'mongoose';
|
||||
|
||||
const AuthCodeSchema = new Schema({
|
||||
email: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
code: {
|
||||
type: String,
|
||||
required: true,
|
||||
length: 6
|
||||
},
|
||||
type: {
|
||||
type: String,
|
||||
enum: ['register', 'findPassword'],
|
||||
required: true
|
||||
},
|
||||
expiredTime: {
|
||||
type: Number,
|
||||
default: () => Date.now() + 5 * 60 * 1000
|
||||
}
|
||||
});
|
||||
|
||||
export const AuthCode = models['auth_code'] || model('auth_code', AuthCodeSchema);
|
||||
26
src/service/models/chat.ts
Normal file
26
src/service/models/chat.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import { Schema, model, models } from 'mongoose';
|
||||
|
||||
const ChatSchema = new Schema({
|
||||
userId: {
|
||||
type: Schema.Types.ObjectId,
|
||||
ref: 'user',
|
||||
required: true
|
||||
},
|
||||
modelId: {
|
||||
type: Schema.Types.ObjectId,
|
||||
ref: 'model',
|
||||
required: true
|
||||
},
|
||||
expiredTime: {
|
||||
// 过期时间
|
||||
type: Number,
|
||||
required: true
|
||||
},
|
||||
loadAmount: {
|
||||
// 剩余加载次数
|
||||
type: Number,
|
||||
required: true
|
||||
}
|
||||
});
|
||||
|
||||
export const Chat = models['chat'] || model('chat', ChatSchema);
|
||||
28
src/service/models/chatWindow.ts
Normal file
28
src/service/models/chatWindow.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import { Schema, model, models } from 'mongoose';
|
||||
|
||||
const ChatWindowSchema = new Schema({
|
||||
chatId: {
|
||||
type: Schema.Types.ObjectId,
|
||||
ref: 'chat',
|
||||
required: true
|
||||
},
|
||||
updateTime: {
|
||||
type: Number,
|
||||
required: true
|
||||
},
|
||||
content: [
|
||||
{
|
||||
obj: {
|
||||
type: String,
|
||||
required: true,
|
||||
enum: ['Human', 'AI', 'SYSTEM']
|
||||
},
|
||||
value: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
export const ChatWindow = models['chatWindow'] || model('chatWindow', ChatWindowSchema);
|
||||
86
src/service/models/model.ts
Normal file
86
src/service/models/model.ts
Normal file
@@ -0,0 +1,86 @@
|
||||
import { Schema, model, models } from 'mongoose';
|
||||
|
||||
const ModelSchema = new Schema({
|
||||
name: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
avatar: {
|
||||
type: String,
|
||||
default: '/imgs/modelAvatar.png'
|
||||
},
|
||||
systemPrompt: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
userId: {
|
||||
type: Schema.Types.ObjectId,
|
||||
ref: 'user',
|
||||
required: true
|
||||
},
|
||||
status: {
|
||||
type: String,
|
||||
required: true,
|
||||
enum: ['waiting', 'running', 'training', 'closed']
|
||||
},
|
||||
updateTime: {
|
||||
type: Date,
|
||||
default: () => new Date()
|
||||
},
|
||||
trainingTimes: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
service: {
|
||||
company: {
|
||||
type: String,
|
||||
required: true,
|
||||
enum: ['openai']
|
||||
},
|
||||
trainId: {
|
||||
// 训练时需要的 ID
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
chatModel: {
|
||||
// 聊天时使用的模型
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
modelName: {
|
||||
// 底层模型的名称
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
security: {
|
||||
type: {
|
||||
domain: {
|
||||
type: [String],
|
||||
default: ['*']
|
||||
},
|
||||
contextMaxLen: {
|
||||
type: Number,
|
||||
default: 20
|
||||
},
|
||||
contentMaxLen: {
|
||||
type: Number,
|
||||
default: 4000
|
||||
},
|
||||
expiredTime: {
|
||||
type: Number,
|
||||
default: 1,
|
||||
set: (val: number) => val * (60 * 60 * 1000)
|
||||
},
|
||||
maxLoadAmount: {
|
||||
// 负数代表不限制
|
||||
type: Number,
|
||||
default: -1
|
||||
}
|
||||
},
|
||||
default: {},
|
||||
required: true
|
||||
}
|
||||
});
|
||||
|
||||
export const Model = models['model'] || model('model', ModelSchema);
|
||||
28
src/service/models/training.ts
Normal file
28
src/service/models/training.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import { Schema, model, models } from 'mongoose';
|
||||
|
||||
const TrainingSChema = new Schema({
|
||||
serviceName: {
|
||||
// 模型厂商名
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
tuneId: {
|
||||
// 微调进程 ID
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
modelId: {
|
||||
// 关联模型的 ID
|
||||
type: Schema.Types.ObjectId,
|
||||
ref: 'model',
|
||||
required: true
|
||||
},
|
||||
status: {
|
||||
// 状态值
|
||||
type: String,
|
||||
required: true,
|
||||
enum: ['pending', 'succeed', 'errored', 'canceled']
|
||||
}
|
||||
});
|
||||
|
||||
export const Training = models['training'] || model('training', TrainingSChema);
|
||||
40
src/service/models/user.ts
Normal file
40
src/service/models/user.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import { Schema, model, models } from 'mongoose';
|
||||
import { hashPassword } from '@/service/utils/tools';
|
||||
|
||||
const UserSchema = new Schema({
|
||||
email: {
|
||||
type: String,
|
||||
required: true,
|
||||
unique: true // 唯一
|
||||
},
|
||||
password: {
|
||||
type: String,
|
||||
required: true,
|
||||
set: (val: string) => hashPassword(val),
|
||||
get: (val: string) => hashPassword(val),
|
||||
select: false
|
||||
},
|
||||
balance: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
accounts: [
|
||||
{
|
||||
type: {
|
||||
type: String,
|
||||
required: true,
|
||||
enum: ['openai'] // 定义允许的type
|
||||
},
|
||||
value: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
}
|
||||
],
|
||||
createTime: {
|
||||
type: Date,
|
||||
default: () => new Date()
|
||||
}
|
||||
});
|
||||
|
||||
export const User = models['user'] || model('user', UserSchema);
|
||||
Reference in New Issue
Block a user