From 031c56e30be7d8e865d8936709e81153a2e4e318 Mon Sep 17 00:00:00 2001 From: Junsen <951434130@qq.com> Date: Fri, 8 Aug 2025 17:34:12 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=B0=86=E9=85=8D=E7=BD=AE=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E5=90=8D=E7=A7=B0=E6=9B=B4=E6=94=B9=E4=B8=BA=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E8=8E=B7=E5=8F=96=E7=9A=84=E7=8E=AF=E5=A2=83=E5=8F=98?= =?UTF-8?q?=E9=87=8FVITE=5FAPP=5FTITLE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/xiaozhi-mobile-admin/.husky/commit-msg | 1 - main/xiaozhi-mobile-admin/.husky/pre-commit | 1 - main/xiaozhi-mobile-admin/openapi-spec.yaml | 1086 ----------------- main/xiaozhi-mobile-admin/src/store/config.ts | 2 +- 4 files changed, 1 insertion(+), 1089 deletions(-) delete mode 100644 main/xiaozhi-mobile-admin/.husky/commit-msg delete mode 100644 main/xiaozhi-mobile-admin/.husky/pre-commit delete mode 100644 main/xiaozhi-mobile-admin/openapi-spec.yaml diff --git a/main/xiaozhi-mobile-admin/.husky/commit-msg b/main/xiaozhi-mobile-admin/.husky/commit-msg deleted file mode 100644 index 36158d92..00000000 --- a/main/xiaozhi-mobile-admin/.husky/commit-msg +++ /dev/null @@ -1 +0,0 @@ -npx --no-install commitlint --edit "$1" \ No newline at end of file diff --git a/main/xiaozhi-mobile-admin/.husky/pre-commit b/main/xiaozhi-mobile-admin/.husky/pre-commit deleted file mode 100644 index c3ec64be..00000000 --- a/main/xiaozhi-mobile-admin/.husky/pre-commit +++ /dev/null @@ -1 +0,0 @@ -npx lint-staged --allow-empty \ No newline at end of file diff --git a/main/xiaozhi-mobile-admin/openapi-spec.yaml b/main/xiaozhi-mobile-admin/openapi-spec.yaml deleted file mode 100644 index 667e7cb4..00000000 --- a/main/xiaozhi-mobile-admin/openapi-spec.yaml +++ /dev/null @@ -1,1086 +0,0 @@ -openapi: 3.0.3 -info: - title: 小智ESP32后端服务API - description: | - 小智ESP32智能硬件后端管理服务API文档 - - ## 认证方式 - - JWT Bearer Token认证 - - 通过 `/user/login` 接口获取token - - ## 权限级别 - - `sys:role:normal`: 普通用户权限 - - `sys:role:superAdmin`: 超级管理员权限 - version: 1.0.0 - contact: - name: 小智ESP32项目组 - license: - name: MIT - -servers: - - url: http://localhost:8002 - description: 本地开发环境 - - url: https://api.xiaozhi.com - description: 生产环境 - -security: - - BearerAuth: [] - -paths: - # =================== 认证相关 =================== - /user/login: - post: - tags: - - 用户认证 - summary: 用户登录 - description: 用户登录获取JWT令牌 - operationId: userLogin - security: [] - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/LoginDTO' - responses: - '200': - description: 登录成功 - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Result' - - type: object - properties: - data: - $ref: '#/components/schemas/TokenDTO' - '400': - $ref: '#/components/responses/BadRequest' - - /user/register: - post: - tags: - - 用户认证 - summary: 用户注册 - operationId: userRegister - security: [] - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/LoginDTO' - responses: - '200': - $ref: '#/components/responses/Success' - '400': - $ref: '#/components/responses/BadRequest' - - /user/info: - get: - tags: - - 用户认证 - summary: 获取当前用户信息 - operationId: getUserInfo - responses: - '200': - description: 用户信息 - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Result' - - type: object - properties: - data: - $ref: '#/components/schemas/UserDetail' - - /user/captcha: - get: - tags: - - 用户认证 - summary: 获取图片验证码 - operationId: getCaptcha - security: [] - parameters: - - name: uuid - in: query - required: true - schema: - type: string - example: uuid-12345 - responses: - '200': - description: 验证码图片 - content: - image/jpeg: - schema: - type: string - format: binary - - # =================== 智能体管理 =================== - /agent/list: - get: - tags: - - 智能体管理 - summary: 获取用户智能体列表 - operationId: getUserAgentList - responses: - '200': - description: 智能体列表 - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Result' - - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/AgentDTO' - - /agent: - post: - tags: - - 智能体管理 - summary: 创建智能体 - operationId: createAgent - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/AgentCreateDTO' - responses: - '200': - description: 创建成功,返回智能体ID - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Result' - - type: object - properties: - data: - type: string - example: AGT_1234567890 - - /agent/{id}: - get: - tags: - - 智能体管理 - summary: 获取智能体详情 - operationId: getAgentDetails - parameters: - - $ref: '#/components/parameters/AgentId' - responses: - '200': - description: 智能体详情 - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Result' - - type: object - properties: - data: - $ref: '#/components/schemas/AgentInfoVO' - - put: - tags: - - 智能体管理 - summary: 更新智能体 - operationId: updateAgent - parameters: - - $ref: '#/components/parameters/AgentId' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/AgentUpdateDTO' - responses: - '200': - $ref: '#/components/responses/Success' - - delete: - tags: - - 智能体管理 - summary: 删除智能体 - operationId: deleteAgent - parameters: - - $ref: '#/components/parameters/AgentId' - responses: - '200': - $ref: '#/components/responses/Success' - - /agent/saveMemory/{macAddress}: - put: - tags: - - 智能体管理 - summary: 更新智能体记忆 - operationId: updateAgentMemory - parameters: - - name: macAddress - in: path - required: true - schema: - type: string - example: 'AA:BB:CC:DD:EE:FF' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/AgentMemoryDTO' - responses: - '200': - $ref: '#/components/responses/Success' - - /agent/template: - get: - tags: - - 智能体管理 - summary: 获取智能体模板列表 - operationId: getAgentTemplates - responses: - '200': - description: 模板列表 - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Result' - - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/AgentTemplateEntity' - - # =================== 设备管理 =================== - /device/register: - post: - tags: - - 设备管理 - summary: 设备注册 - operationId: registerDevice - security: [] - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/DeviceRegisterDTO' - responses: - '200': - description: 注册成功,返回验证码 - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Result' - - type: object - properties: - data: - type: string - example: '123456' - description: 6位数验证码 - - /device/bind/{agentId}/{deviceCode}: - post: - tags: - - 设备管理 - summary: 绑定设备到智能体 - operationId: bindDevice - parameters: - - $ref: '#/components/parameters/AgentId' - - name: deviceCode - in: path - required: true - schema: - type: string - example: '123456' - responses: - '200': - $ref: '#/components/responses/Success' - - /device/bind/{agentId}: - get: - tags: - - 设备管理 - summary: 获取智能体绑定的设备列表 - operationId: getBoundDevices - parameters: - - $ref: '#/components/parameters/AgentId' - responses: - '200': - description: 绑定设备列表 - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Result' - - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/DeviceEntity' - - /device/unbind: - post: - tags: - - 设备管理 - summary: 解绑设备 - operationId: unbindDevice - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/DeviceUnBindDTO' - responses: - '200': - $ref: '#/components/responses/Success' - - # =================== OTA管理 =================== - /ota/: - post: - tags: - - OTA管理 - summary: 设备OTA检查 - operationId: checkOTA - security: [] - parameters: - - name: Device-Id - in: header - required: true - schema: - type: string - example: device123 - - name: Client-Id - in: header - schema: - type: string - example: client456 - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/DeviceReportReqDTO' - responses: - '200': - description: OTA检查结果 - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Result' - - type: object - properties: - data: - $ref: '#/components/schemas/DeviceReportRespDTO' - - get: - tags: - - OTA管理 - summary: 获取OTA状态 - operationId: getOTAStatus - security: [] - responses: - '200': - $ref: '#/components/responses/Success' - - /ota/activate: - post: - tags: - - OTA管理 - summary: 设备快速激活检查 - operationId: quickActivateCheck - security: [] - parameters: - - name: Device-Id - in: header - required: true - schema: - type: string - - name: Client-Id - in: header - schema: - type: string - responses: - '200': - $ref: '#/components/responses/Success' - - # =================== 模型管理 =================== - /models/names: - get: - tags: - - 模型管理 - summary: 获取模型名称列表 - operationId: getModelNames - parameters: - - name: modelType - in: query - schema: - type: string - example: LLM - - name: modelName - in: query - schema: - type: string - example: ChatGLM - responses: - '200': - description: 模型名称列表 - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Result' - - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/ModelBasicInfoDTO' - - /models/{modelType}/provideTypes: - get: - tags: - - 模型管理 - summary: 获取模型提供商类型 - operationId: getModelProviderTypes - security: - - BearerAuth: ['sys:role:superAdmin'] - parameters: - - name: modelType - in: path - required: true - schema: - type: string - example: LLM - responses: - '200': - description: 提供商类型列表 - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Result' - - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/ModelProviderDTO' - - /models/list: - get: - tags: - - 模型管理 - summary: 获取模型配置列表 - operationId: getModelConfigList - security: - - BearerAuth: ['sys:role:superAdmin'] - parameters: - - name: modelType - in: query - schema: - type: string - - name: modelName - in: query - schema: - type: string - - $ref: '#/components/parameters/Page' - - $ref: '#/components/parameters/Limit' - responses: - '200': - description: 模型配置分页列表 - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Result' - - type: object - properties: - data: - $ref: '#/components/schemas/PageData' - - # =================== 服务端管理 =================== - /admin/server/server-list: - get: - tags: - - 服务端管理 - summary: 获取WebSocket服务器列表 - operationId: getWebSocketServerList - security: - - BearerAuth: ['sys:role:superAdmin'] - responses: - '200': - description: WebSocket服务器地址列表 - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Result' - - type: object - properties: - data: - type: array - items: - type: string - example: - - 'ws://192.168.1.100:8000/xiaozhi/v1/' - - 'ws://192.168.1.101:8000/xiaozhi/v1/' - - /admin/server/emit-action: - post: - tags: - - 服务端管理 - summary: 通知Python服务端更新配置 - description: 向指定WebSocket服务端发送操作指令,如重启服务或更新配置 - operationId: emitServerAction - security: - - BearerAuth: ['sys:role:superAdmin'] - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/EmitSeverActionDTO' - responses: - '200': - description: 操作执行成功 - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Result' - - type: object - properties: - data: - type: boolean - example: true - '400': - description: 请求参数错误或目标WebSocket地址无效 - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Result' - - type: object - properties: - code: - example: 400 - msg: - example: 目标WebSocket地址不存在 - '500': - description: WebSocket连接失败 - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Result' - - type: object - properties: - code: - example: 500 - msg: - example: WebSocket连接失败或连接超时 - -components: - securitySchemes: - BearerAuth: - type: http - scheme: bearer - bearerFormat: JWT - - parameters: - AgentId: - name: id - in: path - required: true - schema: - type: string - example: AGT_1234567890 - - Page: - name: page - in: query - schema: - type: integer - default: 1 - example: 1 - - Limit: - name: limit - in: query - schema: - type: integer - default: 10 - example: 10 - - responses: - Success: - description: 操作成功 - content: - application/json: - schema: - $ref: '#/components/schemas/Result' - example: - code: 200 - msg: success - data: null - - BadRequest: - description: 请求参数错误 - content: - application/json: - schema: - $ref: '#/components/schemas/Result' - example: - code: 400 - msg: 参数错误 - data: null - - Unauthorized: - description: 未授权 - content: - application/json: - schema: - $ref: '#/components/schemas/Result' - example: - code: 401 - msg: 未授权,请先登录 - data: null - - schemas: - # =================== 通用响应结构 =================== - Result: - type: object - properties: - code: - type: integer - description: 响应码 - example: 200 - msg: - type: string - description: 响应消息 - example: success - data: - description: 响应数据 - required: - - code - - msg - - PageData: - type: object - properties: - total: - type: integer - description: 总记录数 - example: 100 - list: - type: array - description: 数据列表 - items: - type: object - required: - - total - - list - - # =================== 认证相关 =================== - LoginDTO: - type: object - properties: - username: - type: string - description: 手机号码 - example: '13800138000' - password: - type: string - description: 密码 - example: password123 - captcha: - type: string - description: 图片验证码 - example: AB3C - mobileCaptcha: - type: string - description: 短信验证码 - example: '123456' - captchaId: - type: string - description: 验证码唯一标识 - example: uuid-captcha-id-12345 - required: - - username - - password - - captcha - - captchaId - - TokenDTO: - type: object - properties: - token: - type: string - description: JWT访问令牌 - example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... - expire: - type: integer - format: int64 - description: 过期时间戳(毫秒) - example: 1640995200000 - required: - - token - - expire - - UserDetail: - type: object - properties: - id: - type: string - example: USER_123 - username: - type: string - example: '13800138000' - mobile: - type: string - example: '13800138000' - email: - type: string - example: user@example.com - realName: - type: string - example: 张三 - avatar: - type: string - example: 'https://example.com/avatar.jpg' - status: - type: integer - example: 1 - createDate: - type: string - format: date-time - example: '2023-01-01T00:00:00Z' - - # =================== 智能体相关 =================== - AgentCreateDTO: - type: object - properties: - agentName: - type: string - description: 智能体名称 - example: 客服助手 - required: - - agentName - - AgentUpdateDTO: - type: object - properties: - agentCode: - type: string - description: 智能体编码 - example: AGT_1234567890 - agentName: - type: string - description: 智能体名称 - example: 客服助手Pro - asrModelId: - type: string - description: 语音识别模型ID - example: asr_model_02 - vadModelId: - type: string - description: 语音活动检测模型ID - example: vad_model_02 - llmModelId: - type: string - description: 大语言模型ID - example: llm_model_02 - vllmModelId: - type: string - description: 视觉语言模型ID - example: vllm_model_02 - ttsModelId: - type: string - description: 语音合成模型ID - example: tts_model_02 - ttsVoiceId: - type: string - description: 音色ID - example: voice_02 - memModelId: - type: string - description: 记忆模型ID - example: mem_model_02 - intentModelId: - type: string - description: 意图识别模型ID - example: intent_model_02 - functions: - type: array - description: 插件函数配置列表 - items: - $ref: '#/components/schemas/FunctionInfo' - systemPrompt: - type: string - description: 系统提示词/角色设定 - example: 你是一个专业的客服助手,负责回答用户问题并提供帮助。 - summaryMemory: - type: string - description: 记忆总结配置 - example: 根据对话记录,总结user的重要信息,以便在未来的对话中提供更个性化的服务。 - chatHistoryConf: - type: integer - description: 聊天记录配置 (0=不记录, 1=仅文本, 2=文本+语音) - example: 2 - langCode: - type: string - description: 语言编码 - example: zh_CN - language: - type: string - description: 交互语言名称 - example: 中文 - sort: - type: integer - description: 排序值 - example: 1 - - FunctionInfo: - type: object - properties: - pluginId: - type: string - description: 插件ID - example: weather_plugin - paramInfo: - type: object - description: 插件参数配置 - additionalProperties: true - example: - api_key: your_api_key - default_location: 北京 - - AgentMemoryDTO: - type: object - properties: - summaryMemory: - type: string - description: 记忆摘要内容 - example: 用户喜欢听音乐,经常询问天气信息。 - required: - - summaryMemory - - AgentDTO: - type: object - properties: - id: - type: string - example: AGT_1234567890 - agentCode: - type: string - example: AGT_1234567890 - agentName: - type: string - example: 客服助手 - systemPrompt: - type: string - example: 你是一个专业的客服助手 - createDate: - type: string - format: date-time - - AgentInfoVO: - allOf: - - $ref: '#/components/schemas/AgentDTO' - - type: object - properties: - asrModelName: - type: string - example: FunASR - llmModelName: - type: string - example: ChatGLM - ttsModelName: - type: string - example: EdgeTTS - - AgentTemplateEntity: - type: object - properties: - id: - type: string - example: TPL_001 - templateName: - type: string - example: 客服助手模板 - systemPrompt: - type: string - example: 你是一个专业的客服助手 - description: - type: string - example: 适用于客服场景的智能助手模板 - - # =================== 设备相关 =================== - DeviceRegisterDTO: - type: object - properties: - macAddress: - type: string - description: 设备MAC地址 - example: 'AA:BB:CC:DD:EE:FF' - required: - - macAddress - - DeviceUnBindDTO: - type: object - properties: - deviceId: - type: string - description: 设备ID - example: DEV_123456 - agentId: - type: string - description: 智能体ID - example: AGT_1234567890 - required: - - deviceId - - agentId - - DeviceEntity: - type: object - properties: - id: - type: string - example: DEV_123456 - deviceName: - type: string - example: 客厅音箱 - macAddress: - type: string - example: 'AA:BB:CC:DD:EE:FF' - deviceType: - type: string - example: ESP32 - status: - type: integer - example: 1 - createDate: - type: string - format: date-time - - DeviceReportReqDTO: - type: object - properties: - version: - type: string - example: 1.0.0 - deviceType: - type: string - example: ESP32 - macAddress: - type: string - example: 'AA:BB:CC:DD:EE:FF' - - DeviceReportRespDTO: - type: object - properties: - hasUpdate: - type: boolean - example: true - version: - type: string - example: 1.0.1 - downloadUrl: - type: string - example: 'https://example.com/firmware.bin' - updateMessage: - type: string - example: 修复了音频处理bug - - # =================== 模型相关 =================== - ModelBasicInfoDTO: - type: object - properties: - modelId: - type: string - example: llm_model_01 - modelName: - type: string - example: ChatGLM-4 - modelType: - type: string - example: LLM - providerName: - type: string - example: 智谱AI - isDefault: - type: boolean - example: true - status: - type: integer - example: 1 - - ModelProviderDTO: - type: object - properties: - id: - type: string - example: PROV_001 - providerCode: - type: string - example: chatglm - providerName: - type: string - example: 智谱AI - description: - type: string - example: 智谱AI大模型服务商 - apiEndpoint: - type: string - example: 'https://open.bigmodel.cn/api/paas/v4/' - - # =================== 服务端管理相关 =================== - EmitSeverActionDTO: - type: object - properties: - targetWs: - type: string - description: 目标WebSocket服务器地址 - example: 'ws://192.168.1.100:8000/xiaozhi/v1/' - action: - $ref: '#/components/schemas/ServerActionEnum' - required: - - targetWs - - action - - ServerActionEnum: - type: string - enum: - - restart - - update_config - description: | - 服务端操作类型: - - restart: 重启服务 - - update_config: 更新配置 - example: update_config - -tags: - - name: 用户认证 - description: 用户登录、注册、认证相关接口 - - name: 智能体管理 - description: 智能体的创建、配置、管理相关接口 - - name: 设备管理 - description: 设备注册、绑定、管理相关接口 - - name: OTA管理 - description: 固件更新、设备激活相关接口 - - name: 模型管理 - description: AI模型配置、管理相关接口 - - name: 服务端管理 - description: 服务端状态、配置管理相关接口 diff --git a/main/xiaozhi-mobile-admin/src/store/config.ts b/main/xiaozhi-mobile-admin/src/store/config.ts index 9609ec6e..cb20b5fe 100644 --- a/main/xiaozhi-mobile-admin/src/store/config.ts +++ b/main/xiaozhi-mobile-admin/src/store/config.ts @@ -12,7 +12,7 @@ const initialConfigState: PublicConfig = { mobileAreaList: [], beianIcpNum: '', beianGaNum: '', - name: '小智智能助手', + name: import.meta.env.VITE_APP_TITLE, } export const useConfigStore = defineStore(