From b3af007dd2db156156b165ff55220af50399713c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E5=BF=97=E5=86=9B?= <543024265@qq.com> Date: Wed, 16 Jul 2025 18:49:28 +0800 Subject: [PATCH] =?UTF-8?q?feat(agent):=20=E6=96=B0=E5=A2=9E=E6=99=BA?= =?UTF-8?q?=E8=83=BD=E4=BD=93=E5=BA=94=E7=94=A8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加智能体列表页面和相关API - 实现聊天功能,包括历史对话和当前对话 - 新增工作流功能,包括表单提交和结果展示- 优化路由配置,增加智能体相关路由 - 添加全局常量和枚举,用于智能体类型区分 --- src/api/all/agent.ts | 10 +- src/assets/svg/img.png | Bin 0 -> 1256 bytes src/main.ts | 9 +- src/router/routes/modules/agentDynamic.ts | 46 ++++++ .../Agent/Chat/components/HistoryChat.vue | 74 +++++++-- src/views/Agent/Chat/index.vue | 50 ++++-- src/views/Agent/Index/index.vue | 71 +++++--- src/views/Agent/Index/style.scss | 151 +++++++++++++++++- .../work-flow/components/DynamicForm.vue | 6 +- .../work-flow/components/HistoryChat.vue | 15 +- .../work-flow/form/FormFieldRenderer.vue | 37 ----- src/views/Agent/work-flow/form/InputField.vue | 31 ---- .../Agent/work-flow/form/SelectField.vue | 31 ---- src/views/Agent/work-flow/index.vue | 45 +++--- src/views/Agent/work-flow/style.scss | 18 ++- 15 files changed, 412 insertions(+), 182 deletions(-) create mode 100644 src/assets/svg/img.png create mode 100644 src/router/routes/modules/agentDynamic.ts delete mode 100644 src/views/Agent/work-flow/form/FormFieldRenderer.vue delete mode 100644 src/views/Agent/work-flow/form/InputField.vue delete mode 100644 src/views/Agent/work-flow/form/SelectField.vue diff --git a/src/api/all/agent.ts b/src/api/all/agent.ts index b258e45..d8cee3c 100644 --- a/src/api/all/agent.ts +++ b/src/api/all/agent.ts @@ -6,15 +6,15 @@ export const getChatAgent = (id: number) => { // 获取历史聊天 export const getHistoryChat = (params: any) => { - return Http.get(`/v1/agent/getConversations`, { params }); + return Http.get(`/v1/agent/getConversations`, params); }; // 获取智能体分类 export const getCategoriesMenus = () => { return Http.get(`/v1/agent/getCategoriesMenus`); }; -export const getAgentList = () => { - return Http.get(`/v1/agent/getAgentList`); +export const getAgentList = (params: any) => { + return Http.get(`/v1/agent/getAgentList`, params); }; // 获取工作流详情 @@ -26,3 +26,7 @@ export const getWorkFlowInfo = (id: number) => { export const executeWorkFlow = (params: any) => { return Http.post(`/v1/agent/executeWorkFlow`, params); }; + +export const delAgentMessage = (params: any) => { + return Http.post(`/v1/agent/delAgentMessage`, params); +}; diff --git a/src/assets/svg/img.png b/src/assets/svg/img.png new file mode 100644 index 0000000000000000000000000000000000000000..6503abc96e987dcc559c336227229466fc5a6ac1 GIT binary patch literal 1256 zcmVP)LXK6GouIF~uBJHlYV9 z7*oVqWfMG7rf8TyGuCCm zLbd8SK3d0Fj86)ieuj4+AEU;(9MPTWK4ap42y+s^Q^cb0SCGmp zN={<)k_M)5A;NhQ0qYbqqMlP!a*J(37Jrb4CS>s^@jT-fq`o^yI`O{s!nb9~BI*&e z3O`Sh&qTWo<(04l*?@z|1{_Q_;9#-=2a^prm~6noWCIQ+8!$b;skh8UBg@c7pwW3H)VC^Md>_h>@LFBd{yl52&c&oI81o*w~3tY;cD#VOM0>IPK2 z8w>MxMJq;8_+_fi8QFjetpVp*J*OKqgNoewmAxB4;5;ad-v#RuT~U1Ehz3||T{W+Y zR)}rEt*4^RyRs0pCY*1Nc}38~UWSfpfHp4)!%wz)! zXkafh*?%*oH@K6R&EIIqv}u(o<%bXYlL^vj1KoObyZjopgfu~aEtLU+l0XlIOic^ z;f;nK%td2!Hgk$zyLMa zKwHRJ8=(1?z%f)07@!6lj4lLYXFOoOXRJ}*5;%tH0Rvj~+22+V_RXY1?GFk z(i))Uaddy5Y=if0q*F2Pb)q|E#Set;x$D9_&8sv>cgJUqGmm)Y! zf2+-rz#L9AU+aPXKEgwr<7s}8+(1wFMumnYR(imVBjIi4h)fTQCYQU;K=I5NvpU>^ zcN2zBZg!nvi}lb|d}6_s*yn)~m_fQVQvAvm { + await loadDynamicMenus(router); // 传入 router 实例 + + console.log(router,'router') + app.mount('#app'); +}); diff --git a/src/router/routes/modules/agentDynamic.ts b/src/router/routes/modules/agentDynamic.ts new file mode 100644 index 0000000..720a7df --- /dev/null +++ b/src/router/routes/modules/agentDynamic.ts @@ -0,0 +1,46 @@ +import { getCategoriesMenus } from '@/api/all/agent'; +import type { AppRouteRecordRaw } from '../types'; +import { MENU_GROUP_IDS } from '@/router/constants'; +import IconRepository from '@/assets/svg/icon-repository.svg'; +import { IconBookmark } from '@arco-design/web-vue/es/icon'; + +export const loadDynamicMenus = async (routerInstance) => { + try { + const { code, data } = await getCategoriesMenus(); + + let router = [ + { + path: '/repository233', + name: 'Repository', + redirect: 'repository/brandMaterials', + meta: { + locale: '品牌资产管理', + icon: IconRepository, + requiresAuth: true, + requireLogin: true, + roles: ['*'], + id: MENU_GROUP_IDS.PROPERTY_ID, + }, + children: [ + { + path: 'brandMaterials', + name: 'RepositoryBrandMaterials', + meta: { + locale: '品牌信息', + requiresAuth: true, + requireLogin: true, + roles: ['*'], + }, + component: () => import('@/views/property-marketing/brands/brand-materials/index.vue'), + }, + ], + }, + ]; + // 添加子路由到名为 Agent 的父路由下 + router.forEach(route => { + routerInstance.addRoute('Agent', route); + }); + } catch (error) { + console.error('Failed to load dynamic menus:', error); + } +}; diff --git a/src/views/Agent/Chat/components/HistoryChat.vue b/src/views/Agent/Chat/components/HistoryChat.vue index af7802e..c3abfd3 100644 --- a/src/views/Agent/Chat/components/HistoryChat.vue +++ b/src/views/Agent/Chat/components/HistoryChat.vue @@ -1,27 +1,39 @@ @@ -48,4 +75,19 @@ onMounted(() => { .logo { margin-bottom: 20px; } + +.menu-title { + color: var(--Text-1, #211f24); + font-size: 18px; + font-family: Alibaba PuHuiTi; + font-weight: 400; + line-height: 26px; + word-wrap: break-word; +} +.agent-img { + width: 100%; + height: 230px; + border-radius: 4px; +} + diff --git a/src/views/Agent/Chat/index.vue b/src/views/Agent/Chat/index.vue index 96f616e..7cf179c 100644 --- a/src/views/Agent/Chat/index.vue +++ b/src/views/Agent/Chat/index.vue @@ -1,9 +1,15 @@ diff --git a/src/views/Agent/work-flow/form/InputField.vue b/src/views/Agent/work-flow/form/InputField.vue deleted file mode 100644 index b4a9616..0000000 --- a/src/views/Agent/work-flow/form/InputField.vue +++ /dev/null @@ -1,31 +0,0 @@ - - - diff --git a/src/views/Agent/work-flow/form/SelectField.vue b/src/views/Agent/work-flow/form/SelectField.vue deleted file mode 100644 index 0896a55..0000000 --- a/src/views/Agent/work-flow/form/SelectField.vue +++ /dev/null @@ -1,31 +0,0 @@ - - - diff --git a/src/views/Agent/work-flow/index.vue b/src/views/Agent/work-flow/index.vue index 689e663..824ae77 100644 --- a/src/views/Agent/work-flow/index.vue +++ b/src/views/Agent/work-flow/index.vue @@ -1,27 +1,21 @@