# 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 文档