# travel-management **Repository Path**: notimpossible/travel-management ## Basic Information - **Project Name**: travel-management - **Description**: UBML低代码软件构建系统,帮你结合UBML创建业务功能 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-06 - **Last Updated**: 2025-11-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智能软自购系统技术架构文档 ## 系统概述 本系统是一个基于浏览器插件和后端服务的多智能体软自购平台,通过MCP(浏览器控制协议)技术实现从用户输入到浏览器界面自动操作的完整流程。系统采用WebSocket实时通信为主、HTTP通信为辅的双重通信机制,确保操作的可靠性和实时性。 ## 技术架构 ### 整体架构图 ``` ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ │ │ │ │ 浏览器插件 │<────>│ 后端服务API │<────>│ 智能体系统 │ │ │ │ │ │ │ └─────────────────┘ └────────┬────────┘ └─────────────────┘ │ ▼ ┌─────────────────┐ │ │ │ MCP工具执行 │ │ │ └─────────────────┘ ``` ### 核心组件 #### 1. 浏览器插件 - **用户输入接口**:接收用户输入的指令和请求 - **操作执行引擎**:执行从后端发送的MCP操作指令 - **消息通信模块**:通过WebSocket和HTTP与后端服务通信 - **扩展注册机制**:向后端服务注册扩展信息 #### 2. 后端服务 ##### WebSocket配置与处理器 (`WebSocketConfig`) **** - **连接管理**:维护WebSocket会话,支持多个浏览器扩展同时连接 - **消息处理**:处理不同类型的消息(操作结果、扩展注册、页面信息等) - **操作分发**:将MCP操作指令精确发送到指定的浏览器扩展 - **状态追踪**:跟踪活动标签页和扩展连接状态 ##### MCP服务接口与实现 - **服务接口** (`McpService`) **** - 定义MCP操作执行的核心接口 - **NodeJS实现** (`NodeMcpServiceImpl`) **** - **双模式执行**:支持在新浏览器和当前标签页中执行操作 - **WebSocket优先**:优先通过WebSocket发送操作到浏览器扩展 - **HTTP回退**:WebSocket失败时自动切换到HTTP通信 - **命令行执行**:支持通过NodeJS脚本在独立浏览器中执行操作 ##### REST API控制器 (`McpRest`) **** - **操作执行接口**:接收MCP操作请求并转发给服务层 - **扩展注册接口**:处理浏览器扩展的注册请求 - **操作列表接口**:提供当前支持的操作类型和目标类型 - **参数验证**:对请求参数进行严格验证,确保安全性 #### 3. 智能体系统 - **意图识别**:分析用户输入的自然语言指令,识别操作意图 - **任务规划**:规划操作流程,生成MCP操作序列 - **调用接口**:通过REST API调用后端服务执行操作 - **结果分析**:处理操作执行结果,向用户提供反馈 ## 工作流程详解 ### 1. 浏览器插件注册流程 1. 浏览器插件加载时,通过REST API向后端服务注册 2. 后端记录扩展ID和版本信息 3. 浏览器插件与后端建立WebSocket连接 4. 后端将WebSocket会话与扩展ID关联 ### 2. 用户输入处理流程 ``` 用户输入 → 浏览器插件 → 智能体分析 → 后端API → MCP服务 → 浏览器执行 → 返回结果 ``` ### 3. MCP操作执行流程 1. **请求接收**:后端REST API接收MCP操作请求 2. **目标判断**:根据`targetType`确定操作执行目标(新浏览器或当前标签页) 3. **操作分发**: - 对于`currentTab`目标:优先通过WebSocket发送到浏览器扩展 - 对于`newBrowser`目标:通过NodeJS脚本在新浏览器中执行 4. **失败处理**: - WebSocket发送失败时,自动切换到HTTP回退方案 - HTTP回退也失败时,返回详细错误信息 5. **结果返回**:操作执行结果通过相应渠道返回给调用方 ### 4. 消息类型与处理 系统支持的主要消息类型: - `RESULT_ACK`:操作结果确认消息 - `REGISTRATION_SUCCESS`:扩展注册成功响应 - `PAGE_INFO_ACK`:页面信息确认响应 - `MCP_OPERATION`:MCP操作指令 ## 支持的操作类型 - **login**:执行登录操作 - **elementSelect**:选择页面元素 - **fillForm**:填写表单 - **click**:点击操作 - **getElementInfo**:获取元素信息 ## 目标类型 - **newBrowser**:在新浏览器窗口中执行操作 - **currentTab**:在当前浏览器标签页中执行操作 ## 开发指南 ### 环境要求 - JDK 1.8+(项目已配置为Java 8兼容) - Node.js 14+ - Spring Boot 2.x - Maven 3.6+ ### 项目结构 ``` back/ ├── src/main/java/com/gz/iom/iomqwen/ │ ├── mcp/ # MCP服务相关 │ │ ├── impl/ # 实现类 │ │ ├── McpRequest.java │ │ ├── McpResponse.java │ │ └── McpService.java │ ├── rest/ # REST API │ │ └── McpRest.java │ └── webconfig/ # WebSocket配置 │ └── WebSocketConfig.java └── pom.xml ``` ### 启动步骤 1. **构建后端服务** ```bash cd back mvn clean package ``` 2. **运行后端服务** ```bash java -jar target/your-application.jar ``` 3. **安装浏览器插件** - 加载浏览器扩展到Chrome/Firefox等浏览器 - 确保扩展已正确注册到后端服务 ### 浏览器扩展开发 1. **扩展结构**: - 主页面:提供用户输入界面 - 内容脚本:注入到网页中执行操作 - 后台脚本:处理与后端的通信 2. **通信方式**: - WebSocket:用于实时通信 - HTTP API:用于注册和备用通信 3. **关键接口**: - 扩展注册:`POST /api/mcp/register-extension` - 操作执行:`POST /api/mcp/execute-in-tab` - 操作列表:`GET /api/mcp/supported-operations` ## 故障排除 ### 常见问题与解决方案 1. **WebSocket连接失败** - 检查网络连接和防火墙设置 - 确认WebSocket服务器地址正确 - 查看浏览器扩展是否有权限建立WebSocket连接 2. **MCP操作执行失败** - 检查操作参数是否正确 - 确认目标页面是否已加载完成 - 验证选择器是否能正确匹配页面元素 3. **HTTP回退方案激活** - 检查WebSocket连接状态 - 查看后端日志中的错误信息 - 确认浏览器扩展是否正常运行 ## 安全注意事项 1. **敏感信息处理**:密码等敏感信息在日志中使用星号替代 2. **参数验证**:所有API请求都进行严格的参数验证 3. **连接管理**:定期清理无效连接,避免资源泄露 4. **错误处理**:不向客户端暴露详细的服务器错误信息 ## 扩展开发指南 ### 添加新的MCP操作 1. 在`McpRest.getSupportedOperations()`方法中添加新操作类型 2. 在`NodeMcpServiceImpl`中实现相应的操作逻辑 3. 更新浏览器扩展以支持新操作 4. 编写测试用例验证新操作 ### 自定义消息类型 1. 在`WebSocketConfig`中定义新的消息类型常量 2. 添加相应的消息处理逻辑 3. 更新浏览器扩展以支持新消息类型 ## 总结 本系统通过结合浏览器插件、WebSocket通信、MCP工具和智能体分析,实现了从用户输入到浏览器界面自动操作的完整闭环。系统采用了WebSocket优先、HTTP回退的双重通信机制,确保操作执行的可靠性和实时性,同时提供了灵活的扩展机制,方便开发者进行功能扩展和定制开发。