埋点SDK

gemercheung be4256f4e8 add changeset 3 年 前
.changeset be4256f4e8 add changeset 3 年 前
.github d36f70523a basic init 3 年 前
packages ec92e07f42 test 3 年 前
.eslintignore d36f70523a basic init 3 年 前
.eslintrc.js 3c92e9e40d update 3 年 前
.gitignore d36f70523a basic init 3 年 前
.prettierrc 3c92e9e40d update 3 年 前
LICENSE d36f70523a basic init 3 年 前
README.md 3c92e9e40d update 3 年 前
package.json d334a9a4fa test 3 年 前
pnpm-lock.yaml d334a9a4fa test 3 年 前
pnpm-workspace.yaml d36f70523a basic init 3 年 前
renovate.json d36f70523a basic init 3 年 前
tsconfig.build.json 3c92e9e40d update 3 年 前
tsconfig.json d36f70523a basic init 3 年 前

README.md

埋点 SDK (代号:medici)

medici,美地奇,指Lorenzo Medici,洛伦佐·美第奇,美地奇家族 文艺复兴时伟大收藏家,亦是现代最大收集/收藏的家族之一。

browser (浏览器行为)

内置,取 XHR header, userAgent,os, deviceInfo, navigator,location, navigator.connection 等封装。

Event(全局事件行为类型)

  1. click
  2. delete
  3. upload

PV/UV 内置功能

SDK 初始化 (monorepo)

1.普通 es 引包

import * as medici from "@medici/web";
medici.init({
  url: "xxxxxx/tracking/log/save",
  config: {
    user: "xxxxxx",
    version: "xxxxxxxx", //client version
  },
});

2.小程序 es

import * as medici from "@medici/miniApp";
medici.init({
  url: "xxxxxx/tracking/log/save",
  config: {
    user: "xxxxxx",
    version: "xxxxxxxx", //client version
  },
});

3.其他 amd 或源引入

<script src="xxx/xxxx/medici-amd.js"></script>;
medici.init({
  url: "xxxxxx/tracking/log/save",
  config: {
    user: "xxxxxx",
    version: "xxxxxxxx", //client version
  },
});

隐藏带上 SDK version

页面(采集)

实现两种方法()

  1. 全局注册页面
medici.setPages([
  {
    scene: "/scene",
    setting: "/setting",
  },
]);

简单的 key:value, 影射页面采集

  1. 接入各 mmvm 的 router(vue-router,react-router) 或原生 history 监控。 以 routerName:url, 影射页面采集,

点位(采集)

主业务事件:eventType

一次消费埋点

medici.track("BuyProduct", {
  eventType:"click",
  ProductName: "MacBook Pro",
  ProductPrice: 123.45,
  IsAddedToFav: false,
  ... // 其他自定业务字段
});

二次消费埋点(闭环)

开始,主要对接,init startTime,大部分参数等, maxWaitTime 是默认 30s,如果超过这个时间没有冲正 endTrack 的提示 warning.

medici.startTrack("BuyProduct", {
  eventType:"click",
  maxWaitTime: 30000, //可自定义,主要是下载等行为耗时。
  ProductName: "MacBook Pro",
  ProductPrice: 123.45,
  IsAddedToFav: false,
  ... // 其他自定业务字段
});

结束 ,init endTime, 后补参数

medici.endTrack("BuyProduct", {
  ... // 后补参数
});


API (初定字段)

名称 类型 是否必须 默认值 备注
traceId string 必须 业务串联码
requestType string 必须 业务:BUSINESS(默认);心跳:HEARTBEAT
channel string 必须 渠道,例如四维看看,指房宝
userId string 非必须
time string 非必须 请求时间戳
requestUrl string 非必须
requestData string 非必须 请求数据 ,xhr request data
TrackingType string 非必须 埋点类型,前端:FRONT(默认),后端:BACKEND
srcPageUrl string 必须 发起请求页面 (location)
actionType string 必须
actionName string 必须
userIP string 非必须
userIpAdress string 非必须
userAgent string 必须 UA
networkType string 必须
requestId string 非必须
duration string 非必须
result string 非必须
endTime string 非必须 请求结束时间

其他问题.

  1. 脱敏处理,()crytojs,看加密级别。 2.