285 lines
6.2 KiB
Markdown
285 lines
6.2 KiB
Markdown
|
|
# 数据埋点 API 调用示例
|
|||
|
|
|
|||
|
|
## 基础信息
|
|||
|
|
|
|||
|
|
- **接口路径**: `/doc_ai/v1/analytics/track`
|
|||
|
|
- **请求方法**: `POST`
|
|||
|
|
- **Content-Type**: `application/json`
|
|||
|
|
- **认证**: 可选(Bearer Token)
|
|||
|
|
|
|||
|
|
## 1. 基础埋点事件(最小参数)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://localhost:8080/doc_ai/v1/analytics/track \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{
|
|||
|
|
"user_id": 12345,
|
|||
|
|
"event_name": "button_click"
|
|||
|
|
}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 2. 完整埋点事件(包含所有字段)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://localhost:8080/doc_ai/v1/analytics/track \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
|
|||
|
|
-d '{
|
|||
|
|
"user_id": 12345,
|
|||
|
|
"event_name": "formula_recognition_start",
|
|||
|
|
"properties": {
|
|||
|
|
"file_name": "math_formula.png",
|
|||
|
|
"file_size": 102400,
|
|||
|
|
"file_type": "image/png",
|
|||
|
|
"upload_method": "drag_drop"
|
|||
|
|
},
|
|||
|
|
"device_info": {
|
|||
|
|
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)",
|
|||
|
|
"screen_width": 1920,
|
|||
|
|
"screen_height": 1080,
|
|||
|
|
"language": "zh-CN",
|
|||
|
|
"timezone": "Asia/Shanghai",
|
|||
|
|
"platform": "MacIntel"
|
|||
|
|
},
|
|||
|
|
"meta_data": {
|
|||
|
|
"task_id": "task_123456",
|
|||
|
|
"timestamp": 1706342400000
|
|||
|
|
}
|
|||
|
|
}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 3. 页面浏览事件
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://localhost:8080/doc_ai/v1/analytics/track \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{
|
|||
|
|
"user_id": 12345,
|
|||
|
|
"event_name": "page_view",
|
|||
|
|
"properties": {
|
|||
|
|
"page_url": "https://example.com/home",
|
|||
|
|
"page_title": "首页",
|
|||
|
|
"page_name": "home",
|
|||
|
|
"referrer": "https://example.com/login"
|
|||
|
|
},
|
|||
|
|
"device_info": {
|
|||
|
|
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)",
|
|||
|
|
"screen_width": 1920,
|
|||
|
|
"screen_height": 1080
|
|||
|
|
}
|
|||
|
|
}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 4. 任务相关事件
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://localhost:8080/doc_ai/v1/analytics/track \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
|
|||
|
|
-d '{
|
|||
|
|
"user_id": 12345,
|
|||
|
|
"event_name": "task_create",
|
|||
|
|
"properties": {
|
|||
|
|
"task_type": "formula_recognition",
|
|||
|
|
"file_name": "equation.png",
|
|||
|
|
"file_size": 204800
|
|||
|
|
},
|
|||
|
|
"meta_data": {
|
|||
|
|
"task_id": "task_789012"
|
|||
|
|
}
|
|||
|
|
}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 5. 任务完成事件
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://localhost:8080/doc_ai/v1/analytics/track \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{
|
|||
|
|
"user_id": 12345,
|
|||
|
|
"event_name": "task_complete",
|
|||
|
|
"properties": {
|
|||
|
|
"duration_seconds": 5.2,
|
|||
|
|
"success": true,
|
|||
|
|
"result_type": "latex"
|
|||
|
|
},
|
|||
|
|
"meta_data": {
|
|||
|
|
"task_id": "task_789012"
|
|||
|
|
}
|
|||
|
|
}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 6. 表单提交事件
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://localhost:8080/doc_ai/v1/analytics/track \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{
|
|||
|
|
"user_id": 12345,
|
|||
|
|
"event_name": "form_submit",
|
|||
|
|
"properties": {
|
|||
|
|
"form_name": "user_registration",
|
|||
|
|
"form_fields": ["email", "password", "phone"],
|
|||
|
|
"success": true,
|
|||
|
|
"validation_errors": 0
|
|||
|
|
}
|
|||
|
|
}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 7. 文件上传事件
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://localhost:8080/doc_ai/v1/analytics/track \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{
|
|||
|
|
"user_id": 12345,
|
|||
|
|
"event_name": "file_upload",
|
|||
|
|
"properties": {
|
|||
|
|
"file_name": "document.pdf",
|
|||
|
|
"file_size": 5242880,
|
|||
|
|
"file_type": "application/pdf",
|
|||
|
|
"upload_source": "drag_drop",
|
|||
|
|
"upload_duration_ms": 1200
|
|||
|
|
}
|
|||
|
|
}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 8. 错误追踪事件
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://localhost:8080/doc_ai/v1/analytics/track \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{
|
|||
|
|
"user_id": 12345,
|
|||
|
|
"event_name": "error_occurred",
|
|||
|
|
"properties": {
|
|||
|
|
"error_type": "network_error",
|
|||
|
|
"error_message": "Failed to fetch data",
|
|||
|
|
"error_code": "NET_001",
|
|||
|
|
"page_url": "https://example.com/tasks",
|
|||
|
|
"user_action": "click_submit_button"
|
|||
|
|
}
|
|||
|
|
}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 9. 使用环境变量(推荐)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 设置环境变量
|
|||
|
|
export API_BASE_URL="http://localhost:8080"
|
|||
|
|
export JWT_TOKEN="YOUR_JWT_TOKEN"
|
|||
|
|
export USER_ID=12345
|
|||
|
|
|
|||
|
|
# 调用接口
|
|||
|
|
curl -X POST ${API_BASE_URL}/doc_ai/v1/analytics/track \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-H "Authorization: Bearer ${JWT_TOKEN}" \
|
|||
|
|
-d "{
|
|||
|
|
\"user_id\": ${USER_ID},
|
|||
|
|
\"event_name\": \"button_click\",
|
|||
|
|
\"properties\": {
|
|||
|
|
\"button_name\": \"submit\",
|
|||
|
|
\"button_position\": \"bottom\"
|
|||
|
|
}
|
|||
|
|
}"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 10. 使用 JSON 文件
|
|||
|
|
|
|||
|
|
创建 `event.json` 文件:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"user_id": 12345,
|
|||
|
|
"event_name": "custom_event",
|
|||
|
|
"properties": {
|
|||
|
|
"action": "click",
|
|||
|
|
"element": "button",
|
|||
|
|
"value": "submit"
|
|||
|
|
},
|
|||
|
|
"device_info": {
|
|||
|
|
"user_agent": "Mozilla/5.0",
|
|||
|
|
"screen_width": 1920,
|
|||
|
|
"screen_height": 1080
|
|||
|
|
},
|
|||
|
|
"meta_data": {
|
|||
|
|
"task_id": "task_123"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
然后执行:
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://localhost:8080/doc_ai/v1/analytics/track \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d @event.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 11. 批量埋点接口
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://localhost:8080/doc_ai/v1/analytics/track/batch \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
|
|||
|
|
-d '{
|
|||
|
|
"events": [
|
|||
|
|
{
|
|||
|
|
"user_id": 12345,
|
|||
|
|
"event_name": "page_view",
|
|||
|
|
"properties": {
|
|||
|
|
"page_name": "home"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"user_id": 12345,
|
|||
|
|
"event_name": "button_click",
|
|||
|
|
"properties": {
|
|||
|
|
"button_name": "start"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 响应示例
|
|||
|
|
|
|||
|
|
### 成功响应
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "success",
|
|||
|
|
"data": null
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 错误响应
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 400,
|
|||
|
|
"message": "invalid request",
|
|||
|
|
"data": null
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **user_id** 和 **event_name** 是必填字段
|
|||
|
|
2. **properties**、**device_info**、**meta_data** 都是可选字段,类型为 JSON 对象
|
|||
|
|
3. 如果提供了 Authorization header,token 中的 user_id 会被设置到上下文中,但请求体中的 user_id 仍然需要提供
|
|||
|
|
4. 建议在生产环境中始终使用 HTTPS
|
|||
|
|
5. 批量接口最多支持 100 个事件
|
|||
|
|
|
|||
|
|
## 测试命令(本地开发)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 最简单的测试
|
|||
|
|
curl -X POST http://localhost:8080/doc_ai/v1/analytics/track \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{"user_id": 1, "event_name": "test_event"}'
|
|||
|
|
|
|||
|
|
# 查看响应详情
|
|||
|
|
curl -X POST http://localhost:8080/doc_ai/v1/analytics/track \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{"user_id": 1, "event_name": "test_event"}' \
|
|||
|
|
-v
|
|||
|
|
```
|