diff --git a/server/app/controller/chat.js b/server/app/controller/chat.js index 0b6ced7..d43fe2b 100644 --- a/server/app/controller/chat.js +++ b/server/app/controller/chat.js @@ -37,25 +37,33 @@ async function saveAIConfig({ res, request }) { async function getChatHistory({ res }) { const chatHistory = await chatHistoryDB.findAsync({}) - chatHistory.sort((a, b) => b.createdAt - a.createdAt) - res.success({ data: chatHistory || [] }) + const newChatHistory = chatHistory.map(item => { + item.id = item._id + delete item._id + return item + }).sort((a, b) => b.createdAt - a.createdAt) + res.success({ data: newChatHistory || [] }) } async function saveChatHistory({ res, request }) { const chatRecord = request.body - const { id, _id } = chatRecord - if (!id) return res.fail({ data: false, msg: '参数错误' }) - - if (!_id) { - console.log('不存在-创建') - chatRecord.createdAt = Date.now() - await chatHistoryDB.insertAsync(chatRecord) - } else { + const { id = '', chatList } = chatRecord + if (!chatList) return res.fail({ data: false, msg: '参数错误' }) + let updateChat = chatRecord + if (id) { console.log('存在-更新') chatRecord.updatedAt = Date.now() - await chatHistoryDB.updateAsync({ _id }, chatRecord) + await chatHistoryDB.updateAsync({ _id: id }, chatRecord) + } else { + console.log('不存在-创建') + chatRecord.createdAt = Date.now() + delete chatRecord.id + const result = await chatHistoryDB.insertAsync(chatRecord) + updateChat = result + updateChat.id = result._id + delete updateChat._id } - res.success({ data: true }) + res.success({ data: { updateChat } }) } async function removeChatHistory({ res, request }) { diff --git a/web/src/components/ai-chat/ai-api-config.vue b/web/src/components/ai-chat/ai-api-config.vue index 338c46b..99af8b1 100644 --- a/web/src/components/ai-chat/ai-api-config.vue +++ b/web/src/components/ai-chat/ai-api-config.vue @@ -40,12 +40,20 @@ tag-type="success" tag-effect="plain" clearable + @change="handleModelsChange" /> 获取模型 - - + + + + @@ -104,7 +112,7 @@ const AIconfigFormData = ref({ apiUrl: '', apiKey: '', models: [], - titlePrompt: '使用四到五个字直接返回这句话的简要主题,不要解释、不要标点、不要语气词、不要多余文本,不要加粗,如果没有主题,请直接返回“闲聊”' + titleGenMedel: '' }) watch(props.aiConfig, (newVal) => { @@ -124,7 +132,7 @@ const rules = { ], apiKey: [{ required: true, message: '请输入API KEY', trigger: 'change' },], models: [{ required: true, message: '请输入或获取模型列表', trigger: 'change' },], - titlePrompt: [{ required: false, message: '请输入标题生成提示', trigger: 'change' },] + titleGenMedel: [{ required: true, message: '请选择标题生成模型', trigger: 'change' },] } const handleFetchModels = async () => { @@ -177,6 +185,12 @@ const inputApiUrlSuggestion = (query, cb) => { const origin = new URL(AIconfigFormData.value.apiUrl).origin cb([{ value: `${ origin }/v1/chat/completions` },]) } + +const handleModelsChange = (newVal) => { + if (!newVal?.includes(AIconfigFormData.value.titleGenMedel)) { + AIconfigFormData.value.titleGenMedel = '' + } +}