)[ssoError] || ssoError
+ ElMessage.error(errorText)
history.replaceState(null, '', window.location.pathname + window.location.hash)
}
} finally {
diff --git a/web/apps/portal/src/views/portal/chat/index.vue b/web/apps/portal/src/views/portal/chat/index.vue
index a0b8a0d..d96faf6 100644
--- a/web/apps/portal/src/views/portal/chat/index.vue
+++ b/web/apps/portal/src/views/portal/chat/index.vue
@@ -173,7 +173,10 @@ async function send() {
draft.value = ''
scrollToBottom()
try {
+ // 响应到达时校验会话未切换:发送中切模型/切会话时丢弃迟到响应,防止
+ // 串入新会话。
const response = await appendChatMessage(id, text)
+ if (currentId.value !== id) return
const choices = (response.choices as Array<{ message?: { content?: string } }>) || []
const answer = choices[0]?.message?.content || ''
messages.value.push({ sequence: messages.value.length + 1, role: 'assistant', content: answer, created_at: '' })
diff --git a/web/apps/portal/src/views/portal/security/index.vue b/web/apps/portal/src/views/portal/security/index.vue
index cf61e74..720b251 100644
--- a/web/apps/portal/src/views/portal/security/index.vue
+++ b/web/apps/portal/src/views/portal/security/index.vue
@@ -53,7 +53,7 @@
个人限流倍数
你的个人调用按此倍数放宽工具限流(例如工具限流 10 rpm、倍数 2 时个人可调用 20 rpm)
-
+