# LightHouse 前端用户行为收集实现说明 ## 概述 本实现基于后端提供的 WebSocket 接口,为 Vue.js 前端应用添加了完整的用户行为收集功能,支持实时上报用户在页面上的各种操作行为。 ## 功能特性 ### 1. 自动行为收集 - **表单输入追踪**: 自动监听所有输入框的输入行为 - **页面导航追踪**: 自动记录页面访问和离开 - **表单提交追踪**: 监听表单提交和完成状态 - **会话管理**: 自动管理用户会话开始和结束 ### 2. 支持的行为类型 根据后端 WebSocket 接口规范,实现了以下行为类型: #### 用户基本信息 - `input_name` - 输入姓名 - `input_phone` - 输入电话 - `input_email` - 输入邮箱 - `input_id_card` - 输入身份证号 #### 登录信息 - `login` - 登录行为 - `input_username` - 输入用户名 - `input_password` - 输入密码 - `input_verify_code` - 输入验证码 - `input_pin` - 输入PIN码 #### 地址信息 - `input_address_country` - 输入国家 - `input_address_state` - 输入省份/州 - `input_address_city` - 输入城市 - `input_address_detail` - 输入详细地址 - `input_address_zip` - 输入邮政编码 #### 信用卡信息 - `input_card_number` - 输入卡号 - `input_card_type` - 输入卡类型 - `input_card_holder` - 输入持卡人姓名 - `input_card_expiry` - 输入有效期 - `input_card_cvv` - 输入CVV #### 状态变更 - `complete_registration` - 完成注册 - `complete_payment` - 完成支付 - `session_start` - 会话开始 - `session_end` - 会话结束 - `page_visit` - 页面访问 - `page_leave` - 页面离开 ## 架构设计 ### 1. WebSocket 服务 (`src/services/websocket.js`) - 负责与后端 WebSocket 的连接管理 - 实现自动重连机制 - 提供消息队列确保数据不丢失 - 提供心跳检测保持连接活跃 ### 2. 行为追踪混入 (`src/mixins/behaviorTracking.js`) - Vue 混入,为组件提供行为追踪能力 - 自动监听表单输入元素 - 提供防抖机制避免频繁上报 - 智能识别输入框类型 ### 3. 导航追踪插件 (`src/plugins/navigationTracking.js`) - 基于 Vue Router 的全局导航守卫 - 自动追踪页面访问和离开 - 记录页面间的跳转关系 ## 使用方法 ### 1. 在组件中启用行为追踪 ```javascript import { behaviorTrackingMixin } from '../mixins/behaviorTracking.js' export default { mixins: [behaviorTrackingMixin], // 组件其他选项... } ``` ### 2. 手动触发特定行为追踪 ```javascript // 在组件方法中 methods: { onSubmitForm() { // 追踪表单提交 this.trackFormSubmit('payment', this.formData); // 其他业务逻辑... } } ``` ### 3. 输入框自动追踪配置 输入框会根据以下优先级自动识别追踪类型: 1. `id` 属性 2. `name` 属性 3. `data-track` 属性 4. `placeholder` 内容智能识别 推荐的输入框配置: ```html ``` ## 配置说明 ### WebSocket 连接配置 在 `src/services/websocket.js` 中可以修改以下配置: ```javascript constructor() { this.wsUrl = 'wss://localhost:8080/api/v1/userInfo/ws_pub'; // WebSocket地址 this.maxReconnectAttempts = 5; // 最大重连次数 this.reconnectInterval = 3000; // 重连间隔(毫秒) } ``` ### 行为追踪配置 在 `src/mixins/behaviorTracking.js` 中可以调整防抖延迟: ```javascript const debouncedTrack = this.debounce((value) => { this.trackInputBehavior(trackingKey, value, input); }, 500); // 防抖延迟500毫秒 ``` ## 数据格式 发送到后端的消息格式: ```json { "type": "行为类型", "uuid": "用户唯一标识", "status": "状态描述", "payload": { "字段名": "字段值" } } ``` 示例: ```json { "type": "input_card_number", "uuid": "user_1703123456789_abc123def", "status": "正在输入卡号", "payload": { "card_number": "1234567890123456" } } ``` ## 测试 ### 1. 使用测试页面 打开 `test-behavior.html` 文件可以测试 WebSocket 连接和各种行为上报功能。 ### 2. 浏览器开发者工具 在浏览器控制台中可以看到: - WebSocket 连接状态 - 发送的行为数据 - 连接错误和重连信息 ### 3. 运行应用测试 ```bash npm run dev ``` 在应用中正常操作即可触发行为收集: - 访问不同页面 - 在表单中输入内容 - 提交表单 ## 安全注意事项 1. **敏感信息**: 密码、卡号等敏感信息会被上报,请确保后端有适当的安全措施 2. **用户隐私**: 建议添加用户同意机制 3. **数据传输**: 使用 WSS 加密传输确保数据安全 4. **错误处理**: 实现了重连机制,但建议监控连接状态 ## 故障排除 ### 常见问题 1. **WebSocket 连接失败** - 检查后端服务是否启动 - 确认 WebSocket URL 是否正确 - 检查网络防火墙设置 2. **行为数据未上报** - 检查浏览器控制台是否有错误 - 确认输入框是否正确配置了追踪标识 - 检查 WebSocket 连接状态 3. **页面导航追踪异常** - 确认路由配置正确 - 检查导航守卫是否正常执行 ### 调试建议 - 打开浏览器开发者工具的 Network 选项卡查看 WebSocket 连接 - 使用 `test-behavior.html` 测试基础功能 - 在组件中添加 `console.log` 确认混入是否正确加载 ## 扩展开发 ### 添加新的行为类型 1. 在 `UserBehaviorTracker` 类中添加新的追踪方法 2. 在 `behaviorTrackingMixin` 中添加对应的字段映射 3. 更新组件中的调用逻辑 ### 自定义行为处理 ```javascript // 在组件中自定义行为 this.$behaviorTracker.sendBehavior( 'custom_action', '自定义行为描述', { custom_data: 'value' } ); ``` ## 性能优化 1. **防抖处理**: 输入行为使用防抖减少网络请求 2. **消息队列**: 断线时缓存消息,重连后批量发送 3. **心跳检测**: 定期发送心跳保持连接活跃 4. **智能重连**: 指数退避算法避免频繁重连 ## 联系支持 如有问题或需要扩展功能,请参考: - 后端 WebSocket 接口文档:`README_WebSocket_Enhancement.md` - Vue.js 官方文档 - WebSocket API 文档