@rk911/tracker-sdk 1.6.4 → 1.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +204 -0
  2. package/package.json +7 -2
package/README.md ADDED
@@ -0,0 +1,204 @@
1
+ # @rk911/tracker-sdk
2
+
3
+ 人康多端埋点 SDK — 自动化采集 + 手动埋点兼容。
4
+
5
+ 支持 H5、微信小程序、APP(uni-app Vue 2)三端统一的前端数据采集方案,提供自动采集(页面浏览、点击、页面停留、元素曝光、JS 错误、API 监控、滚动深度、应用生命周期、性能指标)和手动埋点(`$dadian` / `$track`)能力。
6
+
7
+ ## 安装
8
+
9
+ ```bash
10
+ npm install @rk911/tracker-sdk
11
+ ```
12
+
13
+ 或直接将 `tracker-sdk/` 文件夹复制到项目根目录。
14
+
15
+ ## 快速开始
16
+
17
+ ### Vue 插件方式(推荐)
18
+
19
+ ```javascript
20
+ import TrackerSDK from '@rk911/tracker-sdk'
21
+
22
+ Vue.use(TrackerSDK, {
23
+ appId: '1',
24
+ dadianUrl: 'https://state.renruikeji.cn',
25
+ platform: 'web', // 'web' | 'weapp' | 'app'
26
+ pflag: 0,
27
+ tokenKey: 'token',
28
+ plugins: ['page-view', 'click', 'page-stay', 'exposure', 'js-error', 'api-watch', 'app-lifecycle', 'performance', 'scroll-depth'],
29
+ getAuthHeaders: () => ({ Authorization: token, token: token }),
30
+ useUnifiedReport: true,
31
+ debug: false,
32
+ })
33
+ ```
34
+
35
+ ### 非 Vue 上下文
36
+
37
+ ```javascript
38
+ import { getTracker } from '@rk911/tracker-sdk'
39
+
40
+ const tracker = getTracker()
41
+ if (tracker) {
42
+ tracker.track('custom', { eventName: 'someEvent', data: 'value' })
43
+ }
44
+ ```
45
+
46
+ ## 配置项
47
+
48
+ | 参数 | 类型 | 默认值 | 说明 |
49
+ |------|------|--------|------|
50
+ | `appId` | string | — | **必填**,应用 ID |
51
+ | `dadianUrl` | string | — | **必填**,上报地址 |
52
+ | `platform` | string | `'web'` | 平台:`web` / `weapp` / `app` |
53
+ | `pflag` | number | `0` | 业务平台标识(0-5) |
54
+ | `tokenKey` | string | `'token'` | 登录 token 的 storage key(小程序用 `'tokenV2'`) |
55
+ | `plugins` | array | `[]` | 启用的插件列表 |
56
+ | `getAuthHeaders` | function | — | 返回请求头的函数 |
57
+ | `useUnifiedReport` | boolean | `true` | `true`=仅 SDK 上报,`false`=双通道上报 |
58
+ | `allowAnonymousTrack` | boolean | `false` | 是否允许未登录上报 |
59
+ | `sampling` | number | `1` | 采样率(0-1),会话级生效 |
60
+ | `debug` | boolean | `false` | 开启调试日志 |
61
+ | `queue.maxBatchSize` | number | `10` | 批量上报大小 |
62
+ | `queue.flushInterval` | number | `60000` | 定时上报间隔(ms) |
63
+ | `queue.clickFlushDelay` | number | `3000` | 点击事件延迟上报(ms) |
64
+ | `session.timeout` | number | `1800000` | 会话超时时间(ms) |
65
+ | `pageStay.minStayDuration` | number | `2000` | 最小停留时长(ms) |
66
+ | `pageStay.maxStayDuration` | number | `1800000` | 最大停留时长(ms) |
67
+ | `exposure.validExposureTime` | number | `1000` | 曝光有效时间(ms) |
68
+ | `exposure.threshold` | number | `0.5` | 曝光面积阈值 |
69
+ | `scrollDepth.throttle` | number | `1000` | 滚动节流间隔(ms) |
70
+
71
+ ## API
72
+
73
+ ### Vue 实例方法
74
+
75
+ | 方法 | 说明 |
76
+ |------|------|
77
+ | `this.$track(frontUrl, postParam)` | 手动埋点(推荐) |
78
+ | `this.$dadian(frontUrl, postParam)` | 手动埋点(向后兼容) |
79
+ | `this.$tracker` | 获取 Tracker 实例 |
80
+ | `this.$trackerResetSession()` | 重置会话(登出时调用) |
81
+ | `this.$registerParam(name, fn)` | 注册动态参数解析器 |
82
+
83
+ ### Vue 指令
84
+
85
+ | 指令 | 说明 |
86
+ |------|------|
87
+ | `v-track-exposure` | 元素曝光指令(推荐) |
88
+ | `v-impression` | 曝光兼容指令(旧项目) |
89
+
90
+ ### Tracker 实例方法
91
+
92
+ | 方法 | 说明 |
93
+ |------|------|
94
+ | `tracker.track(eventType, data)` | 核心事件上报 |
95
+ | `tracker.setUser(userId)` | 设置用户 ID |
96
+ | `tracker.setDeviceId(deviceId)` | 设置设备 ID |
97
+ | `tracker.setUserProperties(props)` | 设置用户属性 |
98
+ | `tracker.registerParam(name, fn)` | 注册动态参数解析器 |
99
+ | `tracker.unregisterParam(name)` | 注销动态参数解析器 |
100
+ | `tracker.updatePageRoute(newPage)` | 手动更新页面路由 |
101
+ | `tracker.getReferrer()` | 获取当前 referrer |
102
+ | `tracker.onReport(fn)` | 监听事件入队 |
103
+ | `tracker.destroy()` | 销毁实例,释放资源 |
104
+
105
+ ## 数据属性
106
+
107
+ 在 HTML 元素上添加以下 `data-track-*` 属性来丰富点击事件数据:
108
+
109
+ ```html
110
+ <button
111
+ data-track-id="order_submit"
112
+ data-track-name="提交订单"
113
+ data-track-ext-key="orderId"
114
+ data-track-ext-value="123456"
115
+ data-track-param="orderDetail"
116
+ >
117
+ 提交
118
+ </button>
119
+ ```
120
+
121
+ | 属性 | 说明 |
122
+ |------|------|
123
+ | `data-track-id` | 埋点标识(会将事件类型提升为 `custom`) |
124
+ | `data-track-name` | 人类可读名称 |
125
+ | `data-track-ext-key` | 扩展字段 key |
126
+ | `data-track-ext-value` | 扩展字段 value |
127
+ | `data-track-ext-int` | 扩展整数字段 |
128
+ | `data-track-param` | 动态参数解析器名称 |
129
+ | `data-track-post-*` | 自动收集到 postParam 对象 |
130
+
131
+ ## 动态参数解析器
132
+
133
+ ```javascript
134
+ this.$registerParam('goodsDetail', (el) => ({
135
+ extKey: 'goodsId',
136
+ extValue: String(store.state.goods.id),
137
+ extIntValue: store.state.goods.price,
138
+ postParam: { goodsId: store.state.goods.id, skuId: store.state.goods.skuId }
139
+ }))
140
+ ```
141
+
142
+ ## 插件列表
143
+
144
+ | 插件 | 说明 |
145
+ |------|------|
146
+ | `page-view` | 自动追踪页面浏览,路由变化检测 |
147
+ | `click` | 自动追踪点击,丰富元素识别策略 |
148
+ | `page-stay` | 页面停留时长追踪 |
149
+ | `exposure` | 元素曝光(IntersectionObserver + MutationObserver) |
150
+ | `js-error` | JS 错误捕获(运行时、Promise、资源加载、Vue 组件错误) |
151
+ | `api-watch` | API 请求监控(uni.addInterceptor) |
152
+ | `app-lifecycle` | 前后台切换事件 |
153
+ | `performance` | Web Vitals(DNS、TTFB、FCP、LCP、DOM Ready、Load) |
154
+ | `scroll-depth` | 滚动深度追踪 |
155
+
156
+ ## 平台支持
157
+
158
+ | 平台 | 适配器 | 说明 |
159
+ |------|--------|------|
160
+ | H5 | `WebAdapter` | 完整 DOM 访问,支持 hash/history 路由 |
161
+ | 微信小程序 | `WeappAdapter` | 无 DOM,内存 sessionStorage,生命周期 mixin |
162
+ | APP | `AppAdapter` | 继承 WebAdapter,集成 NativeBridge |
163
+
164
+ 平台自动检测:有 `wx` 且无 `document` → 小程序;有 `window` + `document` → web;默认 web。
165
+
166
+ ## 项目结构
167
+
168
+ ```
169
+ tracker-sdk/
170
+ ├── index.js # 入口:Vue 插件、createTracker、平台检测
171
+ ├── core/
172
+ │ ├── tracker.js # Tracker 类:插件管理、事件上报、采样
173
+ │ ├── config.js # 默认配置、深度合并、校验
174
+ │ ├── session.js # 会话管理:ID、设备、过期、序列号
175
+ │ ├── queue.js # 上报队列:批量、定时、离线缓存、sendBeacon
176
+ │ └── compat.js # 兼容层:$dadian、v-impression、page-stay mixin
177
+ ├── platforms/
178
+ │ ├── web.js # H5 适配器
179
+ │ ├── weapp.js # 微信小程序适配器
180
+ │ └── app.js # APP 适配器(NativeBridge)
181
+ ├── plugins/
182
+ │ ├── page-view.js # 页面浏览
183
+ │ ├── click.js # 点击
184
+ │ ├── page-stay.js # 页面停留
185
+ │ ├── exposure.js # 元素曝光
186
+ │ ├── js-error.js # JS 错误
187
+ │ ├── api-watch.js # API 监控
188
+ │ ├── app-lifecycle.js # 应用生命周期
189
+ │ ├── performance.js # 性能指标
190
+ │ └── scroll-depth.js # 滚动深度
191
+ ├── customize/
192
+ │ ├── index.js # 项目规则分发
193
+ │ └── modules/
194
+ │ ├── common.js # 公共 uni-app 规则
195
+ │ └── store-manager.js # 店掌项目规则
196
+ └── docs/
197
+ ├── SDK_DESIGN.md # 设计文档
198
+ ├── BACKEND_DESIGN.md # 后端接口设计
199
+ └── ROADMAP.md # 路线图
200
+ ```
201
+
202
+ ## License
203
+
204
+ MIT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rk911/tracker-sdk",
3
- "version": "1.6.4",
3
+ "version": "1.6.5",
4
4
  "description": "人康多端埋点 SDK — 自动化采集 + 手动埋点兼容",
5
5
  "main": "index.js",
6
6
  "module": "index.js",
@@ -11,7 +11,12 @@
11
11
  "plugins/",
12
12
  "customize/"
13
13
  ],
14
- "keywords": ["tracker", "analytics", "uni-app", "埋点"],
14
+ "keywords": [
15
+ "tracker",
16
+ "analytics",
17
+ "uni-app",
18
+ "埋点"
19
+ ],
15
20
  "author": "rk-team",
16
21
  "license": "MIT",
17
22
  "publishConfig": {