diff --git a/apps/chat/serializers/chat.py b/apps/chat/serializers/chat.py index fd2b400d0b3..2d5c571ac4d 100644 --- a/apps/chat/serializers/chat.py +++ b/apps/chat/serializers/chat.py @@ -303,6 +303,8 @@ def chat_work_flow(self, application, instance: dict, base_to_response): chat_variable = dict(chat.meta) if isinstance(chat.meta, dict) else {} if chat_record_id is None: ChatRecord(id=chat_record_id_str, **self.get_defaults_record(message_dict)).save(force_insert=True) + # 新提问刷新会话更新时间,历史列表按 update_time 倒序展示 + QuerySet(Chat).filter(id=chat_id).update(update_time=timezone.now()) parameters = { "retrieval_identity": identity_from_server(chat_user_id, chat_user_type, debug), diff --git a/ui/src/conversation-panel/components/message-input/index.ts b/ui/src/conversation-panel/components/message-input/index.ts index 57594471ab6..a2e9c1e579b 100644 --- a/ui/src/conversation-panel/components/message-input/index.ts +++ b/ui/src/conversation-panel/components/message-input/index.ts @@ -229,7 +229,8 @@ export function createMessageInputStore(deps: MessageInputDeps) { const isFirstMessage = messages.value.length === 0 const abstract = questionText.substring(0, 256) - if (isFirstMessage && !conversations.value.some((conversation) => conversation.id === chatId)) { + const conversation = conversations.value.find((item) => item.id === chatId) + if (isFirstMessage && !conversation) { // 本地新会话尚未由历史接口返回,使用首次发送时间展示相对时间。 const createTime = new Date().toISOString() conversations.value.unshift({ @@ -238,6 +239,14 @@ export function createMessageInputStore(deps: MessageInputDeps) { create_time: createTime, update_time: createTime, }) + } else if (conversation) { + // 在已有会话中继续提问:移到历史列表顶部并刷新更新时间,与后端按 update_time 倒序展示一致。 + conversation.update_time = new Date().toISOString() + const index = conversations.value.indexOf(conversation) + if (index > 0) { + conversations.value.splice(index, 1) + conversations.value.unshift(conversation) + } } sendMessage({