mirror of
https://github.com/labring/FastGPT.git
synced 2026-05-16 01:09:01 +08:00
c93c3937e1
* refactor: fastgpt object storage & global proxy (#6155) * feat: migrate to fastgpt storage sdk * chore: rename env variable * chore: move to sdk dir * docs: object storage * CHORE * chore: storage mocks * chore: update docker-compose * fix: global proxy agent * fix: update COS proxy * refactor: use fetch instead of http.request * fix: axios request base url * fix: axios proxy request behavior * fix: bumps axios * fix: patch axios for proxy * fix: replace axios with proxied axios * fix: upload txt file encoding * clean code * fix: use "minio" for minio adapter (#6205) * fix: use minio client to delete files when using minio vendor (#6206) * doc * feat: filter citations and add response button control (#6170) * feat: filter citations and add response button control * i18n * fix * fix test * perf: chat api code * fix: workflow edge overlap and auto-align in folded loop nodes (#6204) * fix: workflow edge overlap and auto-align in folded loop nodes * sort * fix * fix edge * fix icon * perf: s3 file name * perf: admin get app api * perf: catch user error * fix: refactor useOrg hook to use debounced search key (#6180) * chore: comment minio adapter (#6207) * chore: filename with suffix random id * perf: s3 storage code * fix: encode filename when copy object --------- Co-authored-by: archer <545436317@qq.com> * fix: node card link * json * perf: chat index; * index * chat item soft delete (#6216) * chat item soft delete * temp * fix * remove code * perf: delete chat item --------- Co-authored-by: archer <545436317@qq.com> * feat: select wheather filter sensitive info when export apps (#6222) * fix some bugs (#6210) * fix v4.14.5 bugs * type * fix * fix * custom feedback * fix * code * fix * remove invalid function --------- Co-authored-by: archer <545436317@qq.com> * perf: test * fix file default local upload (#6223) * docs: improve object storage introduction (#6224) * doc --------- Co-authored-by: roy <whoeverimf5@gmail.com> Co-authored-by: heheer <heheer@sealos.io> Co-authored-by: Finley Ge <32237950+FinleyGe@users.noreply.github.com>
110 lines
2.5 KiB
TypeScript
110 lines
2.5 KiB
TypeScript
import { connectionMongo, getMongoModel } from '../../common/mongo';
|
|
const { Schema } = connectionMongo;
|
|
import { type ChatItemSchemaType } from '@fastgpt/global/core/chat/type';
|
|
import { ChatRoleMap } from '@fastgpt/global/core/chat/constants';
|
|
import { getNanoid } from '@fastgpt/global/common/string/tools';
|
|
import {
|
|
TeamCollectionName,
|
|
TeamMemberCollectionName
|
|
} from '@fastgpt/global/support/user/team/constant';
|
|
import { AppCollectionName } from '../app/schema';
|
|
import { userCollectionName } from '../../support/user/schema';
|
|
import { DispatchNodeResponseKeyEnum } from '@fastgpt/global/core/workflow/runtime/constants';
|
|
import { ChatItemCollectionName } from './constants';
|
|
|
|
const ChatItemSchema = new Schema({
|
|
teamId: {
|
|
type: Schema.Types.ObjectId,
|
|
ref: TeamCollectionName,
|
|
required: true
|
|
},
|
|
tmbId: {
|
|
type: Schema.Types.ObjectId,
|
|
ref: TeamMemberCollectionName,
|
|
required: true
|
|
},
|
|
userId: {
|
|
type: Schema.Types.ObjectId,
|
|
ref: userCollectionName
|
|
},
|
|
chatId: {
|
|
type: String,
|
|
require: true
|
|
},
|
|
dataId: {
|
|
type: String,
|
|
require: true,
|
|
default: () => getNanoid(24)
|
|
},
|
|
appId: {
|
|
type: Schema.Types.ObjectId,
|
|
ref: AppCollectionName,
|
|
required: true
|
|
},
|
|
time: {
|
|
type: Date,
|
|
default: () => new Date()
|
|
},
|
|
hideInUI: {
|
|
type: Boolean,
|
|
default: false
|
|
},
|
|
obj: {
|
|
// chat role
|
|
type: String,
|
|
required: true,
|
|
enum: Object.keys(ChatRoleMap)
|
|
},
|
|
value: {
|
|
// chat content
|
|
type: Array,
|
|
default: []
|
|
},
|
|
|
|
// Field memory
|
|
memories: Object,
|
|
errorMsg: String,
|
|
durationSeconds: Number,
|
|
citeCollectionIds: [String],
|
|
|
|
// Feedback
|
|
userGoodFeedback: String,
|
|
userBadFeedback: String,
|
|
customFeedbacks: [String],
|
|
adminFeedback: {
|
|
type: {
|
|
datasetId: String,
|
|
collectionId: String,
|
|
dataId: String,
|
|
q: String,
|
|
a: String
|
|
}
|
|
},
|
|
isFeedbackRead: Boolean,
|
|
deleteTime: {
|
|
type: Date,
|
|
default: null
|
|
},
|
|
|
|
// @deprecated
|
|
[DispatchNodeResponseKeyEnum.nodeResponse]: Array
|
|
});
|
|
|
|
/*
|
|
delete by app;
|
|
delete by chat id;
|
|
close custom feedback;
|
|
*/
|
|
ChatItemSchema.index({ appId: 1, chatId: 1, dataId: 1 });
|
|
// Get histories
|
|
ChatItemSchema.index({ appId: 1, chatId: 1, deleteTime: 1 });
|
|
// get chatitem list,Anchor filter
|
|
ChatItemSchema.index({ appId: 1, chatId: 1, _id: -1 });
|
|
// Query by role (AI/Human), get latest chat item, permission check
|
|
ChatItemSchema.index({ appId: 1, chatId: 1, obj: 1, _id: -1 });
|
|
|
|
export const MongoChatItem = getMongoModel<ChatItemSchemaType>(
|
|
ChatItemCollectionName,
|
|
ChatItemSchema
|
|
);
|