埋点现状
目前集团多条业务线,每条业务线下有不同的项目和前端团队,项目中定义的埋点规则和各个前端团队使用的埋点代码都是不用的方案。这导致了在需求开发过程中涉及到埋点这块的需求开发效率都非常低。因此期望能对埋点体系进行统一。
埋点目标
O:统一推啊埋点体系,并在百奇落地
KR1:埋点请求接口统一
KR2:埋点定义规范统一
KR3:埋点申请查询平台统一
KR4:产出通用埋点 SDK 适用于所有业务线
KR5:百奇埋点需求能使用通用埋点 SDK 完成
- 提供统一的埋点规范,能通过埋点字段直接定位到埋点所属的系统、页面、埋点位置(组件)
- 提供统一的api,能满足各个前端团队的使用需求
- 提供一定的拓展性,能满足不同系统/页面制定的特殊埋点字段拓展
现存问题
埋点设想
- 创建埋点的流程
以页面为纬度创建埋点,通过
系统 - 页面
的方式检索页面;
存在页面则直接新增/编辑该页面的埋点;
不存在则新增页面新增埋点;
因为不用系统页面标识定义不同,如百奇是 id+pid
,积木是页面id,因此新增页面时需要手动填写页面标识;- 埋点规范
参照dpm的方式,埋点定义为
A.B.C.D
,即 系统.页面.模块.位置
。
在自定义埋点时只需提供 位置 的编号即可完成整个埋点的定义。- SDK开发设想
SDK本身只做数据组装与请求发送的工作,发送的字段包括
baseLogData
与 extraLogData
,分别代表通用字段和自定义字段;不同系统在引入SDK时根据各自系统的规则初始化通用埋点字段。// 创建埋点实例 const logInstance = new SDKLog(); // 初始化baseLog logInstance.initBaseLog(baseLogData);
SDK对外提供
点击 曝光 自定义
三种埋点类型,// 发送点击埋点 logInstance.sendClickLog({ a: '', b: '', c: '', d: '' }, extraLogData); // 发送曝光埋点 logInstance.sendExposureLog({ a: '', b: '', c: '', d: '' }, extraLogData); // 发送自定义埋点 logInstance.sendCustomizeLog({ logUrl: '', useBaseLogData: false, logData: {} });