From 60bece585c9431957f1a25fc2144460ba271f139 Mon Sep 17 00:00:00 2001 From: zhangzhanwei Date: Mon, 29 Dec 2025 17:33:05 +0800 Subject: [PATCH] feat: Add user group information in global field --- .../step_node/start_node/impl/base_start_node.py | 4 +++- apps/application/serializers/common.py | 16 ++++++++++++++++ apps/chat/serializers/chat.py | 1 + ui/src/api/knowledge/knowledge.ts | 1 - ui/src/locales/lang/en-US/ai-chat.ts | 1 + ui/src/locales/lang/zh-CN/ai-chat.ts | 1 + ui/src/locales/lang/zh-Hant/ai-chat.ts | 1 + ui/src/workflow/nodes/start-node/index.vue | 4 ++++ 8 files changed, 27 insertions(+), 2 deletions(-) diff --git a/apps/application/flow/step_node/start_node/impl/base_start_node.py b/apps/application/flow/step_node/start_node/impl/base_start_node.py index af04225cd..ab48eb07d 100644 --- a/apps/application/flow/step_node/start_node/impl/base_start_node.py +++ b/apps/application/flow/step_node/start_node/impl/base_start_node.py @@ -34,7 +34,9 @@ def get_global_variable(node): 'history_context': history_context, 'chat_id': str(chat_id), **node.workflow_manage.form_data, 'chat_user_id': body.get('chat_user_id'), 'chat_user_type': body.get('chat_user_type'), - 'chat_user': body.get('chat_user')} + 'chat_user': body.get('chat_user'), + 'chat_user_group': body.get('chat_user_group') + } class BaseStartStepNode(IStarNode): diff --git a/apps/application/serializers/common.py b/apps/application/serializers/common.py index 116bade19..a1ff948a4 100644 --- a/apps/application/serializers/common.py +++ b/apps/application/serializers/common.py @@ -22,6 +22,7 @@ from common.exception.app_exception import ChatException from knowledge.models import Document from models_provider.models import Model from models_provider.tools import get_model_credential +from system_manage.models import UserGroupRelation class ChatInfo: @@ -114,6 +115,21 @@ class ChatInfo: self.chat_user = {'username': '游客'} return self.chat_user + def get_chat_user_group(self, asker=None): + chat_user = self.get_chat_user(asker=asker) + chat_user_id = chat_user.get('id') + + if not chat_user_id: + return [] + + user_group_relation_model = DatabaseModelManage.get_model("user_group_relation") + if user_group_relation_model: + return [{ + 'id': user_group_relation.group_id, + 'name': user_group_relation.group.name + } for user_group_relation in QuerySet(user_group_relation_model).select_related('group').filter(user_id=chat_user_id)] + return [] + def to_base_pipeline_manage_params(self): self.get_application() self.get_chat_user() diff --git a/apps/chat/serializers/chat.py b/apps/chat/serializers/chat.py index 6a1cb00ee..befab5d00 100644 --- a/apps/chat/serializers/chat.py +++ b/apps/chat/serializers/chat.py @@ -403,6 +403,7 @@ class ChatSerializers(serializers.Serializer): 'workspace_id': workspace_id, 'debug': debug, 'chat_user': chat_info.get_chat_user(), + 'chat_user_group': chat_info.get_chat_user_group(), 'application_id': str(chat_info.application_id)}, WorkFlowPostHandler(chat_info), base_to_response, form_data, image_list, document_list, audio_list, diff --git a/ui/src/api/knowledge/knowledge.ts b/ui/src/api/knowledge/knowledge.ts index 3b8b624a4..09392e2f7 100644 --- a/ui/src/api/knowledge/knowledge.ts +++ b/ui/src/api/knowledge/knowledge.ts @@ -5,7 +5,6 @@ import type { Dict, pageRequest } from '@/api/type/common' import type { knowledgeData } from '@/api/type/knowledge' import useStore from '@/stores' -import knowledge from '../system-shared/knowledge' const prefix: any = { _value: '/workspace/' } Object.defineProperty(prefix, 'value', { get: function () { diff --git a/ui/src/locales/lang/en-US/ai-chat.ts b/ui/src/locales/lang/en-US/ai-chat.ts index 2f2999f48..cf2265360 100644 --- a/ui/src/locales/lang/en-US/ai-chat.ts +++ b/ui/src/locales/lang/en-US/ai-chat.ts @@ -15,6 +15,7 @@ export default { chatId: 'Chat ID', chatUserId: 'Chat User ID', chatUserType: 'Chat User Type', + chatUserGroup: 'Chat User Group', userInput: 'User Input', quote: 'Quote', download: 'Click to Download', diff --git a/ui/src/locales/lang/zh-CN/ai-chat.ts b/ui/src/locales/lang/zh-CN/ai-chat.ts index 5eae81f13..c9f0d8079 100644 --- a/ui/src/locales/lang/zh-CN/ai-chat.ts +++ b/ui/src/locales/lang/zh-CN/ai-chat.ts @@ -15,6 +15,7 @@ export default { chatId: '对话 ID', chatUserId: '对话用户 ID', chatUserType: '对话用户类型', + chatUserGroup: '对话用户组', userInput: '用户输入', quote: '引用', download: '点击下载文件', diff --git a/ui/src/locales/lang/zh-Hant/ai-chat.ts b/ui/src/locales/lang/zh-Hant/ai-chat.ts index e3b0d2a9a..8ae2ef0a5 100644 --- a/ui/src/locales/lang/zh-Hant/ai-chat.ts +++ b/ui/src/locales/lang/zh-Hant/ai-chat.ts @@ -15,6 +15,7 @@ export default { chatId: '對話 ID', chatUserId: '對話用戶 ID', chatUserType: '對話用戶類型', + chatUserGroup: '聊天使用者群組', userInput: '用戶輸入', quote: '引用', download: '點擊下載文件', diff --git a/ui/src/workflow/nodes/start-node/index.vue b/ui/src/workflow/nodes/start-node/index.vue index ab27b4fb2..f7ff22ee4 100644 --- a/ui/src/workflow/nodes/start-node/index.vue +++ b/ui/src/workflow/nodes/start-node/index.vue @@ -68,6 +68,10 @@ const globalFields = [ label: t('chat.chatUserType'), value: 'chat_user_type', }, + { + label: t('chat.chatUserGroup'), + value: 'chat_user_group', + }, { label: t('views.chatUser.title'), value: 'chat_user',