From 8def4addc49dd654d3b5235e25d363ad10a8a2fe Mon Sep 17 00:00:00 2001 From: kuaifan Date: Sun, 5 Apr 2026 11:23:30 +0000 Subject: [PATCH] =?UTF-8?q?fix(chat):=20=E4=BF=AE=E5=A4=8D=20AI=20?= =?UTF-8?q?=E5=8A=A9=E6=89=8B(userid=3D-1)=E5=9C=A8=E5=A4=9A=E5=A4=84?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=BC=82=E5=B8=B8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在 UserAvatar 组件中统一处理 AI 助手虚拟用户,避免各组件重复判断; 同时修复 @提及、回复引用、转发消息等场景下的 undefined 和空白显示问题, 并过滤批量用户请求中的无效 userid。 Co-Authored-By: Claude Opus 4.6 (1M context) --- public/images/avatar/default_assistant.png | Bin 0 -> 5715 bytes .../assets/js/components/UserAvatar/index.vue | 5 +++++ .../pages/manage/components/ChatInput/index.vue | 1 + .../pages/manage/components/DialogView/index.vue | 6 ++---- .../js/pages/manage/components/DialogWrapper.vue | 4 ++++ resources/assets/js/store/actions.js | 2 +- .../public/images/avatar/default_assistant.png | Bin 0 -> 5715 bytes 7 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 public/images/avatar/default_assistant.png create mode 100644 resources/assets/statics/public/images/avatar/default_assistant.png diff --git a/public/images/avatar/default_assistant.png b/public/images/avatar/default_assistant.png new file mode 100644 index 0000000000000000000000000000000000000000..3407659f2cd4df94e57aa6c423fe6510a96cfa0a GIT binary patch literal 5715 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 literal 0 HcmV?d00001 diff --git a/resources/assets/js/components/UserAvatar/index.vue b/resources/assets/js/components/UserAvatar/index.vue index c1644415e..6c2658f17 100755 --- a/resources/assets/js/components/UserAvatar/index.vue +++ b/resources/assets/js/components/UserAvatar/index.vue @@ -151,6 +151,11 @@ export default { if (!this.$store.state.userId) { return; } + // AI 助手虚拟用户 + if (this.userid === -1) { + this.setUser({userid: -1, nickname: this.$L('AI 助手'), bot: false, userimg: $A.mainUrl('images/avatar/default_assistant.png'), online: false}); + return; + } const tempUser = this.$store.state.cacheUserBasic.find(({userid}) => userid == this.userid); if (tempUser) { this.setUser(tempUser); diff --git a/resources/assets/js/pages/manage/components/ChatInput/index.vue b/resources/assets/js/pages/manage/components/ChatInput/index.vue index da6936b49..566f2afb1 100755 --- a/resources/assets/js/pages/manage/components/ChatInput/index.vue +++ b/resources/assets/js/pages/manage/components/ChatInput/index.vue @@ -2259,6 +2259,7 @@ export default { this.quoteUpdate || // 修改消息 !this.quoteData || // 无引用消息 !this.replyMsgAutoMention || // 不自动@ + userData.userid === -1 || // AI 助手 this.userId === userData.userid || // 自己 this.quoteData.userid !== userData.userid // 不同人 ) { diff --git a/resources/assets/js/pages/manage/components/DialogView/index.vue b/resources/assets/js/pages/manage/components/DialogView/index.vue index 06c7be24b..f0d6ba200 100644 --- a/resources/assets/js/pages/manage/components/DialogView/index.vue +++ b/resources/assets/js/pages/manage/components/DialogView/index.vue @@ -2,9 +2,7 @@
- - {{ $L('AI 助手') }} - +
-
+
diff --git a/resources/assets/js/pages/manage/components/DialogWrapper.vue b/resources/assets/js/pages/manage/components/DialogWrapper.vue index fe56920d3..546e84bb5 100644 --- a/resources/assets/js/pages/manage/components/DialogWrapper.vue +++ b/resources/assets/js/pages/manage/components/DialogWrapper.vue @@ -3237,6 +3237,10 @@ export default { switch (type) { // 长按触发提及 case "mention": + if (data.userid === -1) { + // AI 助手不支持@提及 + break; + } const user = this.cacheUserBasic.find(({userid}) => userid == data.userid); if (user) { this.$refs.input?.addMention({ diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index 390429ef4..ef91bd062 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -645,7 +645,7 @@ export default { dispatch("dialogMsgRead"); dispatch("updateMicroAppsStatus"); // - const allIds = Object.values(state.userAvatar).map(({userid}) => userid); + const allIds = Object.values(state.userAvatar).map(({userid}) => userid).filter(id => id > 0); [...new Set(allIds)].some(userid => dispatch("getUserBasic", {userid})) }, diff --git a/resources/assets/statics/public/images/avatar/default_assistant.png b/resources/assets/statics/public/images/avatar/default_assistant.png new file mode 100644 index 0000000000000000000000000000000000000000..3407659f2cd4df94e57aa6c423fe6510a96cfa0a GIT binary patch literal 5715 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 literal 0 HcmV?d00001