feat: update model use time
This commit is contained in:
parent
2fce76202a
commit
2fc31a706d
@ -1,7 +1,7 @@
|
|||||||
import type { NextApiRequest, NextApiResponse } from 'next';
|
import type { NextApiRequest, NextApiResponse } from 'next';
|
||||||
import { jsonRes } from '@/service/response';
|
import { jsonRes } from '@/service/response';
|
||||||
import { ChatItemType } from '@/types/chat';
|
import { ChatItemType } from '@/types/chat';
|
||||||
import { connectToDatabase, Chat } from '@/service/mongo';
|
import { connectToDatabase, Chat, Model } from '@/service/mongo';
|
||||||
import { authModel } from '@/service/utils/auth';
|
import { authModel } from '@/service/utils/auth';
|
||||||
import { authUser } from '@/service/utils/auth';
|
import { authUser } from '@/service/utils/auth';
|
||||||
import mongoose from 'mongoose';
|
import mongoose from 'mongoose';
|
||||||
@ -65,19 +65,10 @@ export async function saveChat({
|
|||||||
})) || []
|
})) || []
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// 没有 chatId, 创建一个对话
|
const [id] = await Promise.all([
|
||||||
if (!chatId) {
|
...(chatId // update chat
|
||||||
const { _id } = await Chat.create({
|
? [
|
||||||
_id: newChatId ? new mongoose.Types.ObjectId(newChatId) : undefined,
|
Chat.findByIdAndUpdate(chatId, {
|
||||||
userId,
|
|
||||||
modelId,
|
|
||||||
content,
|
|
||||||
title: content[0].value.slice(0, 20),
|
|
||||||
latestChat: content[1].value
|
|
||||||
});
|
|
||||||
return _id;
|
|
||||||
} else {
|
|
||||||
await Chat.findByIdAndUpdate(chatId, {
|
|
||||||
$push: {
|
$push: {
|
||||||
content: {
|
content: {
|
||||||
$each: content
|
$each: content
|
||||||
@ -86,6 +77,24 @@ export async function saveChat({
|
|||||||
title: content[0].value.slice(0, 20),
|
title: content[0].value.slice(0, 20),
|
||||||
latestChat: content[1].value,
|
latestChat: content[1].value,
|
||||||
updateTime: new Date()
|
updateTime: new Date()
|
||||||
});
|
}).then(() => '')
|
||||||
}
|
]
|
||||||
|
: [
|
||||||
|
Chat.create({
|
||||||
|
_id: newChatId ? new mongoose.Types.ObjectId(newChatId) : undefined,
|
||||||
|
userId,
|
||||||
|
modelId,
|
||||||
|
content,
|
||||||
|
title: content[0].value.slice(0, 20),
|
||||||
|
latestChat: content[1].value
|
||||||
|
}).then((res) => res._id)
|
||||||
|
]),
|
||||||
|
Model.findByIdAndUpdate(modelId, {
|
||||||
|
updateTime: new Date()
|
||||||
|
}) // update model
|
||||||
|
]);
|
||||||
|
|
||||||
|
return {
|
||||||
|
id
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,7 +20,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse<
|
|||||||
},
|
},
|
||||||
'_id avatar name chat.systemPrompt'
|
'_id avatar name chat.systemPrompt'
|
||||||
).sort({
|
).sort({
|
||||||
_id: -1
|
updateTime: -1
|
||||||
}),
|
}),
|
||||||
Collection.find({ userId })
|
Collection.find({ userId })
|
||||||
.populate({
|
.populate({
|
||||||
|
|||||||
@ -105,7 +105,7 @@ const Chat = ({ modelId, chatId }: { modelId: string; chatId: string }) => {
|
|||||||
const { copyData } = useCopyData();
|
const { copyData } = useCopyData();
|
||||||
const { isPc } = useGlobalStore();
|
const { isPc } = useGlobalStore();
|
||||||
const { Loading, setIsLoading } = useLoading();
|
const { Loading, setIsLoading } = useLoading();
|
||||||
const { userInfo } = useUserStore();
|
const { userInfo, loadMyModels } = useUserStore();
|
||||||
const { isOpen: isOpenSlider, onClose: onCloseSlider, onOpen: onOpenSlider } = useDisclosure();
|
const { isOpen: isOpenSlider, onClose: onCloseSlider, onOpen: onOpenSlider } = useDisclosure();
|
||||||
|
|
||||||
// close contextMenu
|
// close contextMenu
|
||||||
@ -228,13 +228,21 @@ const Chat = ({ modelId, chatId }: { modelId: string; chatId: string }) => {
|
|||||||
})
|
})
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// refresh history
|
// refresh data
|
||||||
setTimeout(() => {
|
|
||||||
loadHistory({ pageNum: 1, init: true });
|
loadHistory({ pageNum: 1, init: true });
|
||||||
|
loadMyModels(true);
|
||||||
generatingMessage();
|
generatingMessage();
|
||||||
}, 100);
|
|
||||||
},
|
},
|
||||||
[chatId, setForbidLoadChatData, generatingMessage, loadHistory, modelId, router, setChatData]
|
[
|
||||||
|
chatId,
|
||||||
|
modelId,
|
||||||
|
setChatData,
|
||||||
|
loadHistory,
|
||||||
|
loadMyModels,
|
||||||
|
generatingMessage,
|
||||||
|
setForbidLoadChatData,
|
||||||
|
router
|
||||||
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -458,14 +466,14 @@ const Chat = ({ modelId, chatId }: { modelId: string; chatId: string }) => {
|
|||||||
async ({
|
async ({
|
||||||
modelId,
|
modelId,
|
||||||
chatId,
|
chatId,
|
||||||
isLoading = false
|
loading = false
|
||||||
}: {
|
}: {
|
||||||
modelId: string;
|
modelId: string;
|
||||||
chatId: string;
|
chatId: string;
|
||||||
isLoading?: boolean;
|
loading?: boolean;
|
||||||
}) => {
|
}) => {
|
||||||
isLoading && setIsLoading(true);
|
|
||||||
try {
|
try {
|
||||||
|
loading && setIsLoading(true);
|
||||||
const res = await getInitChatSiteInfo(modelId, chatId);
|
const res = await getInitChatSiteInfo(modelId, chatId);
|
||||||
|
|
||||||
setChatData({
|
setChatData({
|
||||||
@ -500,18 +508,18 @@ const Chat = ({ modelId, chatId }: { modelId: string; chatId: string }) => {
|
|||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
[
|
[
|
||||||
router,
|
|
||||||
loadHistory,
|
|
||||||
setForbidLoadChatData,
|
|
||||||
scrollToBottom,
|
|
||||||
setChatData,
|
|
||||||
setIsLoading,
|
setIsLoading,
|
||||||
|
setChatData,
|
||||||
|
scrollToBottom,
|
||||||
|
setForbidLoadChatData,
|
||||||
|
router,
|
||||||
|
setLastChatModelId,
|
||||||
setLastChatId,
|
setLastChatId,
|
||||||
setLastChatModelId
|
loadHistory
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
// 初始化聊天框
|
// 初始化聊天框
|
||||||
const { isLoading } = useQuery(['init', modelId, chatId], () => {
|
useQuery(['init', modelId, chatId], () => {
|
||||||
// pc: redirect to latest model chat
|
// pc: redirect to latest model chat
|
||||||
if (!modelId && lastChatModelId) {
|
if (!modelId && lastChatModelId) {
|
||||||
router.replace(`/chat?modelId=${lastChatModelId}&chatId=${lastChatId}`);
|
router.replace(`/chat?modelId=${lastChatModelId}&chatId=${lastChatId}`);
|
||||||
@ -529,7 +537,8 @@ const Chat = ({ modelId, chatId }: { modelId: string; chatId: string }) => {
|
|||||||
|
|
||||||
return loadChatInfo({
|
return loadChatInfo({
|
||||||
modelId,
|
modelId,
|
||||||
chatId
|
chatId,
|
||||||
|
loading: true
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -874,7 +883,7 @@ const Chat = ({ modelId, chatId }: { modelId: string; chatId: string }) => {
|
|||||||
</Box>
|
</Box>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<Loading loading={isLoading} fixed={false} />
|
<Loading fixed={false} />
|
||||||
</Flex>
|
</Flex>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user