From f23223235121a236ce424fdbf277a3a22432d6cd Mon Sep 17 00:00:00 2001 From: 13121765685 Date: Mon, 12 Jan 2026 11:23:18 +0800 Subject: [PATCH] 222 --- .trae/documents/开发智能体管理页面.md | 70 ++ .trae/rules/project_rules.md | 6 +- .../src/locales/lang/en-US.js | 41 ++ .../src/locales/lang/zh-CN.js | 41 ++ apps/FrontendDesigner/src/router/index.js | 13 + .../src/views/admin/Adminagent/index.js | 35 + .../src/views/admin/Adminagent/index.vue | 328 ++++++++++ apps/frontend/src/views/AddAgent.vue | 14 +- apps/frontend/vite.config.js | 4 +- demo.md | 601 +++++++++++++++++- .../utils/src/api/FrontendDesigner/agent.js | 6 + .../utils/src/api/FrontendDesigner/index.js | 2 + pnpm-lock.yaml | 54 +- 13 files changed, 1145 insertions(+), 70 deletions(-) create mode 100644 .trae/documents/开发智能体管理页面.md create mode 100644 apps/FrontendDesigner/src/views/admin/Adminagent/index.js create mode 100644 apps/FrontendDesigner/src/views/admin/Adminagent/index.vue create mode 100644 packages/utils/src/api/FrontendDesigner/agent.js diff --git a/.trae/documents/开发智能体管理页面.md b/.trae/documents/开发智能体管理页面.md new file mode 100644 index 0000000..f11883a --- /dev/null +++ b/.trae/documents/开发智能体管理页面.md @@ -0,0 +1,70 @@ +## 实施计划 + +### 1. 分析当前代码结构 + +* **PhoneLogin.vue**:手机号登录页面主组件,包含登录卡片和子组件调用 + +* **PhoneLoginForm.vue**:登录表单组件,包含登录方式切换和表单字段 + +* **login.js**:包含登录相关的API调用方法,如`sendPhoneCode`和`phoneLoginCode` + +### 2. 修改PhoneLoginForm.vue组件 + +#### 模板部分修改 + +* **更新登录模式切换**:将现有的三种模式(密码登录、注册、重置密码)改为仅保留登录相关的模式 + +* **添加密码/验证码登录切换**:在登录模式下,添加一个新的切换开关,允许用户在密码登录和验证码登录之间切换 + +* **调整表单字段显示**:根据选择的登录方式显示相应的表单字段 + +#### 脚本部分修改 + +* **添加登录方式状态**:添加`loginMethod` ref,用于跟踪用户选择的是密码登录还是验证码登录 + +* **设置默认登录方式**:将默认登录方式设置为验证码登录 + +* **更新表单验证逻辑**:根据选择的登录方式调整验证规则 + +* **更新发送验证码逻辑**:发送登录验证码时传递`purpose: 'login'` + +* **更新表单提交逻辑**:验证码登录时调用`phoneLoginCode`函数 + +### 3. 修改PhoneLogin.vue组件 + +* **更新handleLogin方法**:确保根据登录方式调用正确的登录函数 + +### 4. 实施细节 + +#### PhoneLoginForm.vue修改点 + +* **第155行**:将默认`loginMode`改为'code' + +* **第38-70行**:添加密码/验证码登录切换按钮 + +* **第256-285行**:更新`handleSendCode`方法,确保发送验证码时传递正确的purpose + +* **第288-316行**:更新`handleSubmit`方法,处理验证码登录逻辑 + +#### PhoneLogin.vue修改点 + +* **第79-81行**:更新`handleLogin`方法,根据登录方式调用正确的登录函数 + +### 5. 预期行为 + +* 用户默认看到验证码登录界面 + +* 用户可以在密码登录和验证码登录之间切换 + +* 发送登录验证码时,传递`purpose: 'login'` + +* 验证码登录调用`phoneLoginCode`函数 + +* 密码登录保持原有功能不变 + +### 6. 需要修改的文件 + +* `d:\work\Aiproject\DeotalandAi\apps\frontend\src\components\auth\PhoneLoginForm.vue` + +* `d:\work\Aiproject\DeotalandAi\apps\frontend\src\views\Login\PhoneLogin.vue` + diff --git a/.trae/rules/project_rules.md b/.trae/rules/project_rules.md index b8e3ef0..c228c81 100644 --- a/.trae/rules/project_rules.md +++ b/.trae/rules/project_rules.md @@ -1,4 +1,5 @@ 如果前端项目,需要考虑以下几点: + 1.你是一名精通 Vue3(纯 JavaScript,不使用 TypeScript)的前端开发专家,专注于构建可适配移动端、桌面端、平板端的响应式页面并且开发的页面都会基于当前项目搭建的中英文框架支持中英文切换(页面中英文切换内容都是本地的,所以需要在项目中配置好对应的英文内容),和主题色切换请基于以下要求完成开发任务: 2.技术栈规范 核心框架:使用 Vue3(Options API 或 Composition API 均可,优先推荐 Composition API 以提升代码复用性),禁止使用 TypeScript,所有逻辑用原生 JavaScript 实现。 @@ -29,8 +30,9 @@ 移动端兼容 iOS 13+、Android 8+;桌面端兼容 Chrome 80+、Firefox 75+、Edge 80+;平板端覆盖主流设备(iPadOS、Android 平板)。 避免使用 ES6 + 以上高级语法(或通过 Babel 转译),确保低版本浏览器兼容性。 12.设计风格 -- 粘土拟态风格 +- 极简风格 13.交付标准 代码结构清晰,遵循 Vue3 最佳实践(如组件拆分粒度合理、逻辑与 UI 分离)。 提供完整的多端测试报告(说明在不同设备 / 尺寸下的测试结果及适配方案)。 -附带 README,说明项目启动、打包命令,以及响应式布局的核心实现逻辑。 \ No newline at end of file +附带 README,说明项目启动、打包命令,以及响应式布局的核心实现逻辑。 + - 项目我已经启动了,你只负责修改 \ No newline at end of file diff --git a/apps/FrontendDesigner/src/locales/lang/en-US.js b/apps/FrontendDesigner/src/locales/lang/en-US.js index 5db09b9..148a54b 100644 --- a/apps/FrontendDesigner/src/locales/lang/en-US.js +++ b/apps/FrontendDesigner/src/locales/lang/en-US.js @@ -271,6 +271,7 @@ export default { productManagement: 'Product Management', voucherManagement: 'Voucher Management', operationLog: 'Operation Log', + adminAgent: 'Admin Agent', logout: 'Logout', profile: 'Profile', settings: 'Settings' @@ -945,6 +946,46 @@ export default { createdAt: 'Created At', detailTitle: 'Operation Log Detail', getListFailed: 'Failed to get operation log list' + }, + agent: { + title: 'Admin Agent Management', + deviceId: 'Device ID', + agentName: 'Agent Name', + xiaozhiDeviceId: 'Xiaozhi Device ID', + macAddress: 'MAC Address', + serialNumber: 'Serial Number', + isAuth: 'Auth Status', + userEmail: 'User Email', + userPhone: 'User Phone', + userNickname: 'User Nickname', + createTime: 'Create Time', + updateTime: 'Update Time', + unbind: 'Unbind', + forceUnbind: 'Force Unbind', + unbindConfirm: 'Unbind Confirm', + unbindConfirmMessage: 'Are you sure to unbind this device?', + forceUnbindConfirm: 'Force Unbind Confirm', + forceUnbindConfirmMessage: 'Are you sure to force unbind this device?', + unbindSuccess: 'Unbind successful', + unbindFailed: 'Unbind failed', + forceUnbindSuccess: 'Force unbind successful', + forceUnbindFailed: 'Force unbind failed', + getListFailed: 'Failed to get device list', + authStatus: { + all: 'All', + authorized: 'Authorized', + unauthorized: 'Unauthorized' + }, + placeholder: { + agentName: 'Enter agent name', + xiaozhiDeviceId: 'Enter xiaozhi device ID', + macAddress: 'Enter MAC address', + serialNumber: 'Enter serial number', + isAuth: 'Select auth status', + userEmail: 'Enter user email', + userPhone: 'Enter user phone', + userNickname: 'Enter user nickname' + } } }, modelUpload: { diff --git a/apps/FrontendDesigner/src/locales/lang/zh-CN.js b/apps/FrontendDesigner/src/locales/lang/zh-CN.js index 0a966d1..50dbdde 100644 --- a/apps/FrontendDesigner/src/locales/lang/zh-CN.js +++ b/apps/FrontendDesigner/src/locales/lang/zh-CN.js @@ -285,6 +285,7 @@ orderManagement: { productManagement: '产品管理', voucherManagement: '优惠券管理', operationLog: '操作日志', + adminAgent: '智能体管理', logout: '退出登录', profile: '个人资料', settings: '设置', @@ -938,6 +939,46 @@ orderManagement: { createdAt: '创建时间', detailTitle: '操作日志详情', getListFailed: '获取操作日志列表失败' + }, + agent: { + title: '智能体管理', + deviceId: '设备ID', + agentName: '智能体名称', + xiaozhiDeviceId: '小智设备ID', + macAddress: 'MAC地址', + serialNumber: '序列号', + isAuth: '授权状态', + userEmail: '用户邮箱', + userPhone: '用户电话', + userNickname: '用户昵称', + createTime: '创建时间', + updateTime: '更新时间', + unbind: '解绑', + forceUnbind: '强制解绑', + unbindConfirm: '解绑确认', + unbindConfirmMessage: '确定要解绑该设备吗?', + forceUnbindConfirm: '强制解绑确认', + forceUnbindConfirmMessage: '确定要强制解绑该设备吗?', + unbindSuccess: '解绑成功', + unbindFailed: '解绑失败', + forceUnbindSuccess: '强制解绑成功', + forceUnbindFailed: '强制解绑失败', + getListFailed: '获取设备列表失败', + authStatus: { + all: '全部', + authorized: '已授权', + unauthorized: '未授权' + }, + placeholder: { + agentName: '请输入智能体名称', + xiaozhiDeviceId: '请输入小智设备ID', + macAddress: '请输入MAC地址', + serialNumber: '请输入序列号', + isAuth: '请选择授权状态', + userEmail: '请输入用户邮箱', + userPhone: '请输入用户电话', + userNickname: '请输入用户昵称' + } } }, modelUpload: { diff --git a/apps/FrontendDesigner/src/router/index.js b/apps/FrontendDesigner/src/router/index.js index 9fc42ff..3337f6f 100644 --- a/apps/FrontendDesigner/src/router/index.js +++ b/apps/FrontendDesigner/src/router/index.js @@ -25,6 +25,8 @@ const AdminPromptManagement = () => import('@/views/admin/AdminPromptManagement/ const AdminProductManagement = () => import('@/views/admin/ProductManagement/ProductManagement.vue') const AdminVoucherManagement = () => import('@/views/admin/VoucherManagement/VoucherManagement.vue') const AdminOperationLog = () => import('@/views/admin/AdminOperationLog/AdminOperationLog.vue') +const AdminAgent = () => import('@/views/admin/Adminagent/index.vue') + //权限路由映射表 export const permissionRoutes = [ { @@ -161,6 +163,17 @@ export const permissionRoutes = [ requiresAuth: true } }, + { + path: 'admin-agent', + name: 'AdminAgent', + component: AdminAgent, + meta: { + title: 'admin.layout.adminAgent', + icon: 'User', + menuOrder: 9, + requiresAuth: true + } + }, { path: 'permission', diff --git a/apps/FrontendDesigner/src/views/admin/Adminagent/index.js b/apps/FrontendDesigner/src/views/admin/Adminagent/index.js new file mode 100644 index 0000000..62667cb --- /dev/null +++ b/apps/FrontendDesigner/src/views/admin/Adminagent/index.js @@ -0,0 +1,35 @@ +import { requestUtils,adminApi } from "@deotaland/utils"; +export class AdminAgent { + constructor() { + } + // 设备列表 + async deviceList(data) { + let parmas = { + page: data.page, + page_size: data.pageSize, + agent_name: data.agentName, + xiaozhi_device_id: data.xiaozhiDeviceId, + mac_address: data.macAddress, + serial_number: data.serialNumber, + is_auth: data.isAuth,//0未授权1已授权 + user_email: data.userEmail, + user_phone: data.userPhone, + user_nickname: data.userNickname, + } + return await requestUtils.common(adminApi.default.deviceList,parmas); + } + // 解绑设备,用于在小智平台解绑了,但在本地平台还没解绑的情况 + async deviceUnbind(data) { + let parmas = { + device_id: data.device_id, + } + return await requestUtils.common(adminApi.default.deviceUnbind,parmas); + } + // 解绑设备,直接在平台解绑 + async deviceUnbindDevice(data) { + let parmas = { + device_id: data.device_id, + } + return await requestUtils.common(adminApi.default.deviceUnbindDevice,parmas); + } +} \ No newline at end of file diff --git a/apps/FrontendDesigner/src/views/admin/Adminagent/index.vue b/apps/FrontendDesigner/src/views/admin/Adminagent/index.vue new file mode 100644 index 0000000..e6f86e4 --- /dev/null +++ b/apps/FrontendDesigner/src/views/admin/Adminagent/index.vue @@ -0,0 +1,328 @@ + + + + + diff --git a/apps/frontend/src/views/AddAgent.vue b/apps/frontend/src/views/AddAgent.vue index 946f549..81c1a50 100644 --- a/apps/frontend/src/views/AddAgent.vue +++ b/apps/frontend/src/views/AddAgent.vue @@ -48,14 +48,10 @@ - - -

{{ t('agentTemplate.dialogConfig') }}

- { // 可用音色(根据当前语言过滤) const availableVoices = computed(() => { const currentLang = agentForm.language.split('-')[0] // 提取语言代码,如 'zh-CN' -> 'zh' - return allVoices.value.filter(voice => voice.language === currentLang) + const list = allVoices.value.filter(voice => voice.language === currentLang&&voice.name != '湾湾小何') + console.log(list); + return list }) // 可用模型 @@ -854,6 +852,7 @@ onMounted(async () => { // 从路由参数获取智能体名称 const agentName = route.query.name || route.params.name || 'deo' agentForm.name = agentName + agentForm.assistant_name = agentName } // 创建XiaozhiServer实例并调用getTtsList方法 @@ -895,7 +894,7 @@ const getTtsList = async ()=>{ if(data.code === 0){ ttsData.value = data.data // 处理所有音色数据,转换为统一格式 - const voices = [] + let voices = [] const ttsVoices = data.data.tts_voices || {} // 遍历所有语言的音色 for(const lang in ttsVoices){ @@ -913,8 +912,9 @@ const getTtsList = async ()=>{ }) } } - + voices = voices.filter(voice => voice.name != '湾湾小何') allVoices.value = voices + console.log(allVoices.value,'allVoices.value'); // 如果当前没有选择音色,设置默认音色 if(!agentForm.voice && voices.length > 0){ diff --git a/apps/frontend/vite.config.js b/apps/frontend/vite.config.js index 809d0cd..915cfba 100644 --- a/apps/frontend/vite.config.js +++ b/apps/frontend/vite.config.js @@ -66,8 +66,8 @@ export default defineConfig({ // 配置代理解决CORS问题 proxy: { '/api': { - target: 'https://api.deotaland.ai', - // target: 'http://api.deotaland.local', + // target: 'https://api.deotaland.ai', + target: 'http://api.deotaland.local', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '') } diff --git a/demo.md b/demo.md index e2a7453..bc7a3d0 100644 --- a/demo.md +++ b/demo.md @@ -1,19 +1,592 @@ { "code": 0, + "message": "", "success": true, "data": { - "id": 2, - "nickname": "suoyousheng", - "avatarUrl": null, - "phone": null, - "email": "suoyousheng@gmail.com", - "status": "active", - "lastActive": "2025-12-11T13:52:23.226796Z", - "inviteCode": "BTXYU6Z8", - "invitedBy": null, - "inviterNickname": null, - "createdAt": null, - "updatedAt": "2025-12-11T05:52:23.227754Z" - }, - "message": "操作成功" + "items": [ + { + "id": 37, + "agent_id": null, + "agent_name": null, + "xiaozhi_device_id": 1403723, + "mac_address": "c8:47:8c:2d:db:bd", + "serial_number": "D573FFF799F8C0FC6D504069FCB5D622", + "is_auth": true, + "device_data": { + "id": 1403723, + "alias": null, + "iccid": "", + "is_auth": true, + "user_id": 677673, + "agent_id": 1223893, + "board_name": "deotaland-d-1", + "created_at": "2025-12-24T02:05:38.000Z", + "macAddress": "c8:47:8c:2d:db:bd", + "updated_at": "2025-12-24T02:05:38.000Z", + "app_version": "1.4.0", + "auto_update": 1, + "mac_address": "c8:47:8c:2d:db:bd", + "serial_number": "D573FFF799F8C0FC6D504069FCB5D622", + "last_connected_at": null + }, + "user_nickname": null, + "created_at": "2025-12-24T01:58:51.560441+00:00", + "updated_at": "2025-12-24T02:05:51.489015+00:00" + }, + { + "id": 36, + "agent_id": null, + "agent_name": null, + "xiaozhi_device_id": 1403580, + "mac_address": "c8:47:8c:63:cf:dd", + "serial_number": "51F90FA0D476BD4BB9BD0A13F196268A", + "is_auth": true, + "device_data": { + "id": 1403580, + "alias": null, + "iccid": "", + "is_auth": true, + "user_id": 677673, + "agent_id": 1223893, + "board_name": "deotaland-d-1", + "created_at": "2025-12-24T01:22:18.000Z", + "macAddress": "c8:47:8c:63:cf:dd", + "updated_at": "2025-12-24T01:22:18.000Z", + "app_version": "1.4.0", + "auto_update": 1, + "mac_address": "c8:47:8c:63:cf:dd", + "serial_number": "51F90FA0D476BD4BB9BD0A13F196268A", + "last_connected_at": null + }, + "user_nickname": null, + "created_at": "2025-12-24T01:22:15.787045+00:00", + "updated_at": "2025-12-24T01:44:55.214833+00:00" + }, + { + "id": 35, + "agent_id": null, + "agent_name": null, + "xiaozhi_device_id": 1401628, + "mac_address": "c8:47:8c:7b:39:a5", + "serial_number": "698C9C12D7E028E6D4A708E500095CF2", + "is_auth": true, + "device_data": { + "id": 1401628, + "alias": null, + "iccid": "", + "is_auth": true, + "user_id": 677673, + "agent_id": 1223893, + "board_name": "deotaland-d-1", + "created_at": "2025-12-23T09:35:14.000Z", + "macAddress": "c8:47:8c:7b:39:a5", + "updated_at": "2025-12-23T09:35:14.000Z", + "app_version": "1.4.0", + "auto_update": 1, + "mac_address": "c8:47:8c:7b:39:a5", + "serial_number": "698C9C12D7E028E6D4A708E500095CF2", + "last_connected_at": null + }, + "user_nickname": null, + "created_at": "2025-12-23T09:35:12.413827+00:00", + "updated_at": "2025-12-24T01:08:32.483676+00:00" + }, + { + "id": 34, + "agent_id": null, + "agent_name": null, + "xiaozhi_device_id": 1401623, + "mac_address": "c8:47:8c:53:73:f2", + "serial_number": "980AD543279040C4534E0379E60D53EB", + "is_auth": true, + "device_data": { + "id": 1401623, + "alias": null, + "iccid": "", + "is_auth": true, + "user_id": 677673, + "agent_id": 1223893, + "board_name": "deotaland-d-1", + "created_at": "2025-12-23T09:34:07.000Z", + "macAddress": "c8:47:8c:53:73:f2", + "updated_at": "2025-12-23T09:34:07.000Z", + "app_version": "1.4.0", + "auto_update": 1, + "mac_address": "c8:47:8c:53:73:f2", + "serial_number": "980AD543279040C4534E0379E60D53EB", + "last_connected_at": null + }, + "user_nickname": null, + "created_at": "2025-12-23T09:34:05.593979+00:00", + "updated_at": "2025-12-23T09:35:03.700268+00:00" + }, + { + "id": 33, + "agent_id": null, + "agent_name": null, + "xiaozhi_device_id": 1401615, + "mac_address": "c8:47:8c:b8:f2:83", + "serial_number": "F9C373E779B4352CBE2CD44AB3A50AFD", + "is_auth": true, + "device_data": { + "id": 1401615, + "alias": null, + "iccid": "", + "is_auth": true, + "user_id": 677673, + "agent_id": 1223893, + "board_name": "deotaland-d-1", + "created_at": "2025-12-23T09:33:17.000Z", + "macAddress": "c8:47:8c:b8:f2:83", + "updated_at": "2025-12-23T09:33:17.000Z", + "app_version": "1.4.0", + "auto_update": 1, + "mac_address": "c8:47:8c:b8:f2:83", + "serial_number": "F9C373E779B4352CBE2CD44AB3A50AFD", + "last_connected_at": null + }, + "user_nickname": null, + "created_at": "2025-12-23T09:33:15.074071+00:00", + "updated_at": "2025-12-23T09:33:55.751273+00:00" + }, + { + "id": 32, + "agent_id": null, + "agent_name": null, + "xiaozhi_device_id": 1401605, + "mac_address": "c8:47:8c:39:19:31", + "serial_number": "2CDA9874D76C3C94A1D9DC54096F2208", + "is_auth": true, + "device_data": { + "id": 1401605, + "alias": null, + "iccid": "", + "is_auth": true, + "user_id": 677673, + "agent_id": 1223893, + "board_name": "deotaland-d-1", + "created_at": "2025-12-23T09:32:22.000Z", + "macAddress": "c8:47:8c:39:19:31", + "updated_at": "2025-12-23T09:32:22.000Z", + "app_version": "1.4.0", + "auto_update": 1, + "mac_address": "c8:47:8c:39:19:31", + "serial_number": "2CDA9874D76C3C94A1D9DC54096F2208", + "last_connected_at": null + }, + "user_nickname": null, + "created_at": "2025-12-23T09:32:20.347740+00:00", + "updated_at": "2025-12-23T09:33:05.661537+00:00" + }, + { + "id": 31, + "agent_id": null, + "agent_name": null, + "xiaozhi_device_id": 1401598, + "mac_address": "c8:47:8c:24:d8:13", + "serial_number": "D87F933C24C71405B8CC8AB5D9412159", + "is_auth": true, + "device_data": { + "id": 1401598, + "alias": null, + "iccid": "", + "is_auth": true, + "user_id": 677673, + "agent_id": 1223893, + "board_name": "deotaland-d-1", + "created_at": "2025-12-23T09:31:31.000Z", + "macAddress": "c8:47:8c:24:d8:13", + "updated_at": "2025-12-23T09:31:31.000Z", + "app_version": "1.4.0", + "auto_update": 1, + "mac_address": "c8:47:8c:24:d8:13", + "serial_number": "D87F933C24C71405B8CC8AB5D9412159", + "last_connected_at": null + }, + "user_nickname": null, + "created_at": "2025-12-23T09:31:29.850426+00:00", + "updated_at": "2025-12-23T09:31:48.670695+00:00" + }, + { + "id": 30, + "agent_id": null, + "agent_name": null, + "xiaozhi_device_id": 1401585, + "mac_address": "c8:47:8c:f4:1a:64", + "serial_number": "E454746E3B854FD75DE638FF8CF75286", + "is_auth": true, + "device_data": { + "id": 1401585, + "alias": null, + "iccid": "", + "is_auth": true, + "user_id": 677673, + "agent_id": 1223893, + "board_name": "deotaland-d-1", + "created_at": "2025-12-23T09:30:09.000Z", + "macAddress": "c8:47:8c:f4:1a:64", + "updated_at": "2025-12-23T09:30:09.000Z", + "app_version": "1.4.0", + "auto_update": 1, + "mac_address": "c8:47:8c:f4:1a:64", + "serial_number": "E454746E3B854FD75DE638FF8CF75286", + "last_connected_at": null + }, + "user_nickname": null, + "created_at": "2025-12-23T09:30:07.416068+00:00", + "updated_at": "2025-12-23T09:30:25.870478+00:00" + }, + { + "id": 29, + "agent_id": null, + "agent_name": null, + "xiaozhi_device_id": 1401579, + "mac_address": "c8:47:8c:b9:23:75", + "serial_number": "C1971774FE930B2AC5AC0890B904FC87", + "is_auth": true, + "device_data": { + "id": 1401579, + "alias": null, + "iccid": "", + "is_auth": true, + "user_id": 677673, + "agent_id": 1223893, + "board_name": "deotaland-d-1", + "created_at": "2025-12-23T09:28:56.000Z", + "macAddress": "c8:47:8c:b9:23:75", + "updated_at": "2025-12-23T09:28:56.000Z", + "app_version": "1.4.0", + "auto_update": 1, + "mac_address": "c8:47:8c:b9:23:75", + "serial_number": "C1971774FE930B2AC5AC0890B904FC87", + "last_connected_at": null + }, + "user_nickname": null, + "created_at": "2025-12-23T09:28:54.061646+00:00", + "updated_at": "2025-12-23T09:29:09.621515+00:00" + }, + { + "id": 28, + "agent_id": null, + "agent_name": null, + "xiaozhi_device_id": 1401570, + "mac_address": "c8:47:8c:15:2a:70", + "serial_number": "DD4755E697A3B342562E975278C84014", + "is_auth": true, + "device_data": { + "id": 1401570, + "alias": null, + "iccid": "", + "is_auth": true, + "user_id": 677673, + "agent_id": 1223893, + "board_name": "deotaland-d-1", + "created_at": "2025-12-23T09:27:51.000Z", + "macAddress": "c8:47:8c:15:2a:70", + "updated_at": "2025-12-23T09:27:51.000Z", + "app_version": "1.4.0", + "auto_update": 1, + "mac_address": "c8:47:8c:15:2a:70", + "serial_number": "DD4755E697A3B342562E975278C84014", + "last_connected_at": null + }, + "user_nickname": null, + "created_at": "2025-12-23T09:27:49.669610+00:00", + "updated_at": "2025-12-23T09:28:39.300155+00:00" + }, + { + "id": 27, + "agent_id": null, + "agent_name": null, + "xiaozhi_device_id": 1401568, + "mac_address": "c8:47:8c:14:96:e4", + "serial_number": "3460E5FAA64F8BD32A97AD09BC6EF318", + "is_auth": true, + "device_data": { + "id": 1401568, + "alias": null, + "iccid": "", + "is_auth": true, + "user_id": 677673, + "agent_id": 1223893, + "board_name": "deotaland-d-1", + "created_at": "2025-12-23T09:26:40.000Z", + "macAddress": "c8:47:8c:14:96:e4", + "updated_at": "2025-12-23T09:26:40.000Z", + "app_version": "1.4.0", + "auto_update": 1, + "mac_address": "c8:47:8c:14:96:e4", + "serial_number": "3460E5FAA64F8BD32A97AD09BC6EF318", + "last_connected_at": null + }, + "user_nickname": null, + "created_at": "2025-12-23T09:26:38.333116+00:00", + "updated_at": "2025-12-23T09:26:57.920852+00:00" + }, + { + "id": 26, + "agent_id": null, + "agent_name": null, + "xiaozhi_device_id": 1401559, + "mac_address": "c8:47:8c:fd:a9:a7", + "serial_number": "1B926A2CFF32A518A291152EB214C125", + "is_auth": true, + "device_data": { + "id": 1401559, + "alias": null, + "iccid": "", + "is_auth": true, + "user_id": 677673, + "agent_id": 1223893, + "board_name": "deotaland-d-1", + "created_at": "2025-12-23T09:23:50.000Z", + "macAddress": "c8:47:8c:fd:a9:a7", + "updated_at": "2025-12-23T09:23:50.000Z", + "app_version": "1.4.0", + "auto_update": 1, + "mac_address": "c8:47:8c:fd:a9:a7", + "serial_number": "1B926A2CFF32A518A291152EB214C125", + "last_connected_at": null + }, + "user_nickname": null, + "created_at": "2025-12-23T09:23:48.364367+00:00", + "updated_at": "2025-12-23T09:24:06.861291+00:00" + }, + { + "id": 25, + "agent_id": null, + "agent_name": null, + "xiaozhi_device_id": 1401542, + "mac_address": "c8:47:8c:c5:bf:e0", + "serial_number": "BD6629490895D608A5DEA0151BB7D289", + "is_auth": true, + "device_data": { + "id": 1401542, + "alias": null, + "iccid": "", + "is_auth": true, + "user_id": 677673, + "agent_id": 1223893, + "board_name": "deotaland-d-1", + "created_at": "2025-12-23T09:20:44.000Z", + "macAddress": "c8:47:8c:c5:bf:e0", + "updated_at": "2025-12-23T09:20:44.000Z", + "app_version": "1.4.0", + "auto_update": 1, + "mac_address": "c8:47:8c:c5:bf:e0", + "serial_number": "BD6629490895D608A5DEA0151BB7D289", + "last_connected_at": null + }, + "user_nickname": null, + "created_at": "2025-12-23T09:20:42.340747+00:00", + "updated_at": "2025-12-23T09:20:59.293540+00:00" + }, + { + "id": 24, + "agent_id": null, + "agent_name": null, + "xiaozhi_device_id": 1401533, + "mac_address": "c8:47:8c:15:a1:f0", + "serial_number": "5F8DEEC65580DB5E53FAB6F0FB8BCBFD", + "is_auth": true, + "device_data": { + "id": 1401533, + "alias": null, + "iccid": "", + "is_auth": true, + "user_id": 677673, + "agent_id": 1223893, + "board_name": "deotaland-d-1", + "created_at": "2025-12-23T09:19:27.000Z", + "macAddress": "c8:47:8c:15:a1:f0", + "updated_at": "2025-12-23T09:19:27.000Z", + "app_version": "1.4.0", + "auto_update": 1, + "mac_address": "c8:47:8c:15:a1:f0", + "serial_number": "5F8DEEC65580DB5E53FAB6F0FB8BCBFD", + "last_connected_at": null + }, + "user_nickname": null, + "created_at": "2025-12-23T09:19:25.121039+00:00", + "updated_at": "2025-12-23T09:20:34.002488+00:00" + }, + { + "id": 23, + "agent_id": null, + "agent_name": null, + "xiaozhi_device_id": 1401523, + "mac_address": "c8:47:8c:ce:db:23", + "serial_number": "37EE129E77BDFE62749FBE8C71593EEF", + "is_auth": true, + "device_data": { + "id": 1401523, + "alias": null, + "iccid": "", + "is_auth": true, + "user_id": 677673, + "agent_id": 1223893, + "board_name": "deotaland-d-1", + "created_at": "2025-12-23T09:18:07.000Z", + "macAddress": "c8:47:8c:ce:db:23", + "updated_at": "2025-12-23T09:18:07.000Z", + "app_version": "1.4.0", + "auto_update": 1, + "mac_address": "c8:47:8c:ce:db:23", + "serial_number": "37EE129E77BDFE62749FBE8C71593EEF", + "last_connected_at": null + }, + "user_nickname": null, + "created_at": "2025-12-23T09:18:05.646345+00:00", + "updated_at": "2025-12-23T09:18:35.541568+00:00" + }, + { + "id": 22, + "agent_id": null, + "agent_name": null, + "xiaozhi_device_id": 1401511, + "mac_address": "c8:47:8c:f6:a2:ab", + "serial_number": "0DC2E3342A02589FBF29BC90101F89C5", + "is_auth": true, + "device_data": { + "id": 1401511, + "alias": null, + "iccid": "", + "is_auth": true, + "user_id": 677673, + "agent_id": 1223893, + "board_name": "deotaland-d-1", + "created_at": "2025-12-23T09:16:44.000Z", + "macAddress": "c8:47:8c:f6:a2:ab", + "updated_at": "2025-12-23T09:16:44.000Z", + "app_version": "1.4.0", + "auto_update": 1, + "mac_address": "c8:47:8c:f6:a2:ab", + "serial_number": "0DC2E3342A02589FBF29BC90101F89C5", + "last_connected_at": null + }, + "user_nickname": null, + "created_at": "2025-12-23T09:16:42.818711+00:00", + "updated_at": "2025-12-23T09:17:03.807210+00:00" + }, + { + "id": 21, + "agent_id": null, + "agent_name": null, + "xiaozhi_device_id": 1401498, + "mac_address": "c8:47:8c:cd:f7:a9", + "serial_number": "DE2F4FCB0ED991A3CAB2729C1BE5F6CC", + "is_auth": true, + "device_data": { + "id": 1401498, + "alias": null, + "iccid": "", + "is_auth": true, + "user_id": 677673, + "agent_id": 1223893, + "board_name": "deotaland-d-1", + "created_at": "2025-12-23T09:15:27.000Z", + "macAddress": "c8:47:8c:cd:f7:a9", + "updated_at": "2025-12-23T09:15:27.000Z", + "app_version": "1.4.0", + "auto_update": 1, + "mac_address": "c8:47:8c:cd:f7:a9", + "serial_number": "DE2F4FCB0ED991A3CAB2729C1BE5F6CC", + "last_connected_at": null + }, + "user_nickname": null, + "created_at": "2025-12-23T09:15:25.683187+00:00", + "updated_at": "2025-12-23T09:15:39.779258+00:00" + }, + { + "id": 20, + "agent_id": null, + "agent_name": null, + "xiaozhi_device_id": 1401491, + "mac_address": "c8:47:8c:c9:f2:98", + "serial_number": "546EE384367AAB209F067296F2F72E00", + "is_auth": true, + "device_data": { + "id": 1401491, + "alias": null, + "iccid": "", + "is_auth": true, + "user_id": 677673, + "agent_id": 1223893, + "board_name": "deotaland-d-1", + "created_at": "2025-12-23T09:14:11.000Z", + "macAddress": "c8:47:8c:c9:f2:98", + "updated_at": "2025-12-23T09:14:11.000Z", + "app_version": "1.4.0", + "auto_update": 1, + "mac_address": "c8:47:8c:c9:f2:98", + "serial_number": "546EE384367AAB209F067296F2F72E00", + "last_connected_at": null + }, + "user_nickname": null, + "created_at": "2025-12-23T09:14:09.762809+00:00", + "updated_at": "2025-12-23T09:14:26.434891+00:00" + }, + { + "id": 19, + "agent_id": null, + "agent_name": null, + "xiaozhi_device_id": 1401480, + "mac_address": "c8:47:8c:4b:15:91", + "serial_number": "CA144DA49F912C4B0173C80155F300B7", + "is_auth": true, + "device_data": { + "id": 1401480, + "alias": null, + "iccid": "", + "is_auth": true, + "user_id": 677673, + "agent_id": 1223893, + "board_name": "deotaland-d-1", + "created_at": "2025-12-23T09:12:58.000Z", + "macAddress": "c8:47:8c:4b:15:91", + "updated_at": "2025-12-23T09:12:58.000Z", + "app_version": "1.4.0", + "auto_update": 1, + "mac_address": "c8:47:8c:4b:15:91", + "serial_number": "CA144DA49F912C4B0173C80155F300B7", + "last_connected_at": null + }, + "user_nickname": null, + "created_at": "2025-12-23T09:12:56.616617+00:00", + "updated_at": "2025-12-23T09:13:14.601850+00:00" + }, + { + "id": 18, + "agent_id": null, + "agent_name": null, + "xiaozhi_device_id": 1401474, + "mac_address": "c8:47:8c:77:e2:70", + "serial_number": "5DE0EF7D5E0B63B441429E0C35E9C136", + "is_auth": true, + "device_data": { + "id": 1401474, + "alias": null, + "iccid": "", + "is_auth": true, + "user_id": 677673, + "agent_id": 1223893, + "board_name": "deotaland-d-1", + "created_at": "2025-12-23T09:11:40.000Z", + "macAddress": "c8:47:8c:77:e2:70", + "updated_at": "2025-12-23T09:11:40.000Z", + "app_version": "1.4.0", + "auto_update": 1, + "mac_address": "c8:47:8c:77:e2:70", + "serial_number": "5DE0EF7D5E0B63B441429E0C35E9C136", + "last_connected_at": null + }, + "user_nickname": null, + "created_at": "2025-12-23T09:11:38.069967+00:00", + "updated_at": "2025-12-23T09:12:04.062386+00:00" + } + ], + "page": 1, + "page_size": 20, + "total": 32 + } } \ No newline at end of file diff --git a/packages/utils/src/api/FrontendDesigner/agent.js b/packages/utils/src/api/FrontendDesigner/agent.js new file mode 100644 index 0000000..1b0f424 --- /dev/null +++ b/packages/utils/src/api/FrontendDesigner/agent.js @@ -0,0 +1,6 @@ +const login = { + deviceList:{url:'/api-core/admin/device/list',method:'GET'},// 设备列表 + deviceUnbind:{url:'/api-core/admin/device/unbind',method:'POST'},// 解绑设备,用于在小智平台解绑了,但在本地平台还没解绑的情况 + deviceUnbindDevice:{url:'/api-core/admin/device/unbind-device',method:'POST'},// 解绑设备,直接在平台解绑 +} +export default login; diff --git a/packages/utils/src/api/FrontendDesigner/index.js b/packages/utils/src/api/FrontendDesigner/index.js index e5c5b95..4429a37 100644 --- a/packages/utils/src/api/FrontendDesigner/index.js +++ b/packages/utils/src/api/FrontendDesigner/index.js @@ -10,6 +10,7 @@ import pointsManagement from './pointsManagement.js'; import configuration from './configuration.js'; import seriespriceConfig from './seriespriceConfig.js'; import voucher from './voucher.js'; +import agent from './agent.js'; export default { ...login, @@ -24,4 +25,5 @@ export default { ...configuration, ...seriespriceConfig, ...voucher, + ...agent, }; \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6d912d6..6fe359b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,12 +8,21 @@ importers: .: devDependencies: + '@element-plus/icons-vue': + specifier: ^2.3.2 + version: 2.3.2(vue@3.5.24) + '@google/genai': + specifier: ^1.27.0 + version: 1.27.0 '@vitejs/plugin-vue': specifier: ^6.0.1 version: 6.0.1(vite@7.2.2)(vue@3.5.24) concurrently: specifier: ^8.2.0 version: 8.2.0 + element-plus: + specifier: ^2.11.7 + version: 2.12.0(vue@3.5.24) eslint: specifier: ^8.45.0 version: 8.45.0 @@ -324,7 +333,6 @@ packages: /@ctrl/tinycolor@3.6.1: resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} engines: {node: '>=10'} - dev: false /@dimforge/rapier3d-compat@0.12.0: resolution: {integrity: sha512-uekIGetywIgopfD97oDL5PfeezkFpNhwlzlaEYNOA0N6ghdsOvh/HYjSMek5Q2O1PYvRSDFcqFVJl4r4ZBwOow==} @@ -336,7 +344,6 @@ packages: vue: ^3.2.0 dependencies: vue: 3.5.24 - dev: false /@esbuild/aix-ppc64@0.25.12: resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} @@ -683,18 +690,15 @@ packages: resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} dependencies: '@floating-ui/utils': 0.2.10 - dev: false /@floating-ui/dom@1.7.4: resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} dependencies: '@floating-ui/core': 1.7.3 '@floating-ui/utils': 0.2.10 - dev: false /@floating-ui/utils@0.2.10: resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} - dev: false /@google/genai@1.27.0: resolution: {integrity: sha512-sveeQqwyzO/U5kOjo3EflF1rf7v0ZGprrjPGmeT6V5u22IUTcA4wBFxW+q1n7hOX0M1iWR3944MImoNPOM+zsA==} @@ -711,7 +715,6 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: false /@humanfs/core@0.19.1: resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} @@ -1100,7 +1103,6 @@ packages: /@sxzz/popperjs-es@2.11.7: resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==} - dev: false /@tailwindcss/node@4.1.17: resolution: {integrity: sha512-csIkHIgLb3JisEFQ0vxr2Y57GUNYh447C8xzwj89U/8fdW8LhProdxvnVH6U8M2Y73QKiTIH+LWbK3V2BBZsAg==} @@ -1315,11 +1317,9 @@ packages: resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} dependencies: '@types/lodash': 4.17.20 - dev: false /@types/lodash@4.17.20: resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==} - dev: false /@types/stats.js@0.17.4: resolution: {integrity: sha512-jIBvWWShCvlBqBNIZt0KAshWpvSjhkwkEu4ZUcASoAvhmrgAUI2t1dXrjSL4xXVLB4FznPrIsX3nKXFl/Dt4vA==} @@ -1339,7 +1339,6 @@ packages: /@types/web-bluetooth@0.0.16: resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} - dev: false /@types/web-bluetooth@0.0.21: resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} @@ -1499,14 +1498,12 @@ packages: transitivePeerDependencies: - '@vue/composition-api' - vue - dev: false /@vueuse/metadata@14.1.0: resolution: {integrity: sha512-7hK4g015rWn2PhKcZ99NyT+ZD9sbwm7SGvp7k+k+rKGWnLjS/oQozoIZzWfCewSUeBmnJkIb+CNr7Zc/EyRnnA==} /@vueuse/metadata@9.13.0: resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==} - dev: false /@vueuse/shared@14.1.0(vue@3.5.24): resolution: {integrity: sha512-EcKxtYvn6gx1F8z9J5/rsg3+lTQnvOruQd8fUecW99DCK04BkWD7z5KQ/wTAx+DazyoEE9dJt/zV8OIEQbM6kw==} @@ -1522,7 +1519,6 @@ packages: transitivePeerDependencies: - '@vue/composition-api' - vue - dev: false /@webgpu/types@0.1.66: resolution: {integrity: sha512-YA2hLrwLpDsRueNDXIMqN9NTzD6bCDkuXbOSe0heS+f8YE8usA6Gbv1prj81pzVHrbaAma7zObnIC+I6/sXJgA==} @@ -1545,7 +1541,6 @@ packages: /agent-base@7.1.4: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} - dev: false /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -1580,7 +1575,6 @@ packages: /async-validator@4.2.5: resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} - dev: false /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -1617,7 +1611,6 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: false /baseline-browser-mapping@2.9.4: resolution: {integrity: sha512-ZCQ9GEWl73BVm8bu5Fts8nt7MHdbt5vY9bP6WGnUh+r3l8M7CgfyTlwsgCbMC66BNxPr6Xoce3j66Ms5YUQTNA==} @@ -1626,7 +1619,6 @@ packages: /bignumber.js@9.3.1: resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} - dev: false /birpc@2.8.0: resolution: {integrity: sha512-Bz2a4qD/5GRhiHSwj30c/8kC8QGj12nNDwz3D4ErQ4Xhy35dsSDvF+RA/tWpjyU0pdGtSDiEk6B5fBGE1qNVhw==} @@ -1662,7 +1654,6 @@ packages: /buffer-equal-constant-time@1.0.1: resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - dev: false /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -1807,7 +1798,6 @@ packages: /data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} - dev: false /date-fns@2.30.0: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} @@ -1822,7 +1812,6 @@ packages: /dayjs@1.11.19: resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} - dev: false /debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} @@ -1903,7 +1892,6 @@ packages: resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} dependencies: safe-buffer: 5.2.1 - dev: false /electron-to-chromium@1.5.266: resolution: {integrity: sha512-kgWEglXvkEfMH7rxP5OSZZwnaDWT7J9EoZCujhnpLbfi0bbNtRkgdX2E3gt0Uer11c61qCYktB3hwkAS325sJg==} @@ -1955,7 +1943,6 @@ packages: vue: 3.5.24 transitivePeerDependencies: - '@vue/composition-api' - dev: false /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2252,7 +2239,6 @@ packages: /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: false /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -2297,7 +2283,6 @@ packages: dependencies: node-domexception: 1.0.0 web-streams-polyfill: 3.3.3 - dev: false /fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} @@ -2379,7 +2364,6 @@ packages: engines: {node: '>=12.20.0'} dependencies: fetch-blob: 3.2.0 - dev: false /fraction.js@5.3.4: resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} @@ -2430,7 +2414,6 @@ packages: rimraf: 5.0.10 transitivePeerDependencies: - supports-color - dev: false /gcp-metadata@8.1.2: resolution: {integrity: sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==} @@ -2441,7 +2424,6 @@ packages: json-bigint: 1.0.0 transitivePeerDependencies: - supports-color - dev: false /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} @@ -2532,12 +2514,10 @@ packages: jws: 4.0.0 transitivePeerDependencies: - supports-color - dev: false /google-logging-utils@1.1.3: resolution: {integrity: sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==} engines: {node: '>=14'} - dev: false /gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} @@ -2560,7 +2540,6 @@ packages: jws: 4.0.0 transitivePeerDependencies: - supports-color - dev: false /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} @@ -2611,7 +2590,6 @@ packages: debug: 4.4.3 transitivePeerDependencies: - supports-color - dev: false /ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} @@ -2715,7 +2693,6 @@ packages: resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} dependencies: bignumber.js: 9.3.1 - dev: false /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -2744,14 +2721,12 @@ packages: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 safe-buffer: 5.2.1 - dev: false /jws@4.0.0: resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} dependencies: jwa: 2.0.1 safe-buffer: 5.2.1 - dev: false /keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -2921,7 +2896,6 @@ packages: /lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - dev: false /lodash-unified@1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21): resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==} @@ -2933,7 +2907,6 @@ packages: '@types/lodash-es': 4.17.12 lodash: 4.17.21 lodash-es: 4.17.21 - dev: false /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -2957,7 +2930,6 @@ packages: /memoize-one@6.0.0: resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} - dev: false /meshoptimizer@0.22.0: resolution: {integrity: sha512-IebiK79sqIy+E4EgOr+CAw+Ke8hAspXKzBd0JdgEmPHiAwmvEj2S4h1rfvo+o/BnfEYd/jAOg5IeeIjzlzSnDg==} @@ -3056,7 +3028,6 @@ packages: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} deprecated: Use your platform's native DOMException instead - dev: false /node-fetch@3.3.2: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} @@ -3065,7 +3036,6 @@ packages: data-uri-to-buffer: 4.0.1 fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 - dev: false /node-releases@2.0.27: resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} @@ -3078,7 +3048,6 @@ packages: /normalize-wheel-es@1.2.0: resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==} - dev: false /normalize.css@8.0.1: resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==} @@ -3365,7 +3334,6 @@ packages: hasBin: true dependencies: glob: 10.5.0 - dev: false /rollup@4.53.2: resolution: {integrity: sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==} @@ -3417,7 +3385,6 @@ packages: /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: false /scule@1.3.0: resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} @@ -3961,7 +3928,6 @@ packages: optional: true dependencies: vue: 3.5.24 - dev: false /vue-eslint-parser@9.4.3(eslint@9.15.0): resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==} @@ -4091,7 +4057,6 @@ packages: /web-streams-polyfill@3.3.3: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} - dev: false /webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} @@ -4140,7 +4105,6 @@ packages: optional: true utf-8-validate: optional: true - dev: false /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}