From e3228837f4d767b48fd1b380eee2cf7c485bd9c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=AD=90=E9=BB=98?= <925456043@qq.com> Date: Mon, 3 Aug 2026 11:24:12 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BB=9F=E4=B8=80=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E5=8A=A9=E6=89=8B=E5=A4=B4=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 工作流运行状态、智能体正式聊天与试运行展示助手头像 - 新增默认机器人头像及消息、空状态回退组件 --- .../app/src/views/ai/agent-chat/index.vue | 2 + .../app/src/views/ai/agents/AgentList.vue | 4 +- .../ai/agents/components/AgentTryoutPanel.vue | 2 + .../agents/components/AgentWelcomeState.vue | 29 +-- .../workflow/components/WorkflowChatPage.vue | 4 +- .../chat-timeline/ChatAssistantAvatar.vue | 52 +++++ .../components/chat-timeline/ChatTimeline.vue | 32 ++- .../chat-timeline/ChatTimelineItem.vue | 206 +++++++++++++----- .../__tests__/ChatTimelineAvatar.test.ts | 131 +++++++++++ .../assets/default-assistant-avatar.png | Bin 0 -> 227986 bytes .../chat-timeline/assistantAvatar.ts | 2 + .../src/components/chat-timeline/index.ts | 2 + 12 files changed, 380 insertions(+), 86 deletions(-) create mode 100644 easyflow-ui-admin/packages/effects/common-ui/src/components/chat-timeline/ChatAssistantAvatar.vue create mode 100644 easyflow-ui-admin/packages/effects/common-ui/src/components/chat-timeline/__tests__/ChatTimelineAvatar.test.ts create mode 100644 easyflow-ui-admin/packages/effects/common-ui/src/components/chat-timeline/assets/default-assistant-avatar.png create mode 100644 easyflow-ui-admin/packages/effects/common-ui/src/components/chat-timeline/assistantAvatar.ts diff --git a/easyflow-ui-admin/app/src/views/ai/agent-chat/index.vue b/easyflow-ui-admin/app/src/views/ai/agent-chat/index.vue index 77c39649..ce395511 100644 --- a/easyflow-ui-admin/app/src/views/ai/agent-chat/index.vue +++ b/easyflow-ui-admin/app/src/views/ai/agent-chat/index.vue @@ -24,6 +24,7 @@ import { ChatImageAttachments, ChatTimeline, ChatTimelineBuilder, + defaultAssistantAvatar, } from '@easyflow/common-ui'; import { copyTextToClipboard } from '@easyflow/utils'; @@ -1240,6 +1241,7 @@ onBeforeUnmount(() => { /> -import { computed, ref, watch } from 'vue'; +import { ref } from 'vue'; + +import { ChatAssistantAvatar } from '@easyflow/common-ui'; import { ArrowRight } from '@element-plus/icons-vue'; import { useResizeObserver } from '@vueuse/core'; import { ElIcon } from 'element-plus'; -const props = defineProps<{ +defineProps<{ agentName: string; avatar?: string; disabled?: boolean; @@ -17,11 +19,9 @@ const emit = defineEmits<{ selectQuestion: [question: string]; }>(); -const avatarFailed = ref(false); const welcomeRef = ref(); const legacyCompact = ref(false); const headingId = `agent-welcome-${Math.random().toString(36).slice(2, 9)}`; -const initial = computed(() => [...props.agentName.trim()][0] || 'A'); const needsContainerQueryFallback = typeof CSS === 'undefined' || !CSS.supports('container-type', 'inline-size'); @@ -29,13 +29,6 @@ useResizeObserver(welcomeRef, ([entry]) => { if (!needsContainerQueryFallback || !entry) return; legacyCompact.value = entry.contentRect.width <= 560; }); - -watch( - () => props.avatar, - () => { - avatarFailed.value = false; - }, -);