miya-bury
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.0 • Public • Published

    小程序埋点&前端错误信息收集汇总表

    适用的埋点应用:支付宝小程序、微信小程序、H5页面
    

    小程序通用二维码规则

    https://hh-oss-html.miyapay.com/saas/<APPID>/?qrcode=[二维码ID]&channel=<渠道>&channel_sign=[渠道标识]&type=[打开方式]&page=[encodeURIComponent(路径)]
    
    注:<> 为必须参数  []为非必须参数
    
    

    小程序分享链接拼装规则

    /pages/home/index?channel=share&channel_sign=[渠道标识]&page=[encodeURIComponent(路径)]&type=[打开方式]
    
    注:<> 为必须参数  []为非必须参数
    

    参数说明

    qrcode: 物料二维码ID
    channel: 打开渠道,eg: 分享、公众号、朋友圈、线下物料二维码
    channel_sign: 渠道标识, eg: 菜单、推文
    type: 打开方式, 1:到首页过渡, 2: 不通过首页过渡(专属活动使用较多)
    page: 需要直接打开的目标页面(需通过:encodeURIComponent)
    
    注:channel、channel_sign 的具体值请查阅下文
    

    埋点全量字段介绍

    {
    	app_id?: string //小程序APPID
    	merchant?: string //saas平台商户号
    	app_version?: string //小程序版本号
    	bury_type?: BuryType //埋点类型
    	bury_desc?: string //埋点描述
    	page_name?: string //页面名称
    	page_path?: string //页面路径
    	page_desc?: string //页面描述
    	
    	click_btn?: string //点击的按钮
    	click_desc?: string //点击的按钮描述
    	click_x?: string //点击的x坐标;需做跨平台支持
    	click_y?: string //点击的y坐标;需做跨平台支持
    	
    	scan_type?: string //扫码的类型
    	scan_code?: string //扫码的内容
    	
    	share_url?: string //分享的链接
    	share_desc?: string //分享的描述
    	
    	session_id?: string //session_id对每次打开独立
    	user_sign?: string //用户ID(user_id/open_id)
    	pay_user_sign?: string //支付公众号Openid
    	city_code?: string //城市码
    	city_name?: string //城市名称
    	province?: string //省份信息
    	latitude?: string //纬度
    	longitude?: string //经度
    	model?: string //手机型号
    	version?: string //支付宝/微信 版本号
    	system?: string //系统版本
    	platform?: string //系统名: Android; Ios
    	brand?: string //手机品牌
    	bury_from?: BuryFrom //weixin | alipay | baidu
    	qrcode?: string //二维码标识
    	channel?: Channel | null //来源渠道
    	channel_sign?: string //渠道标识
    	client_timestamp?: string //客户端时间
    	stay_time?: string //驻留时长
    	
    	//以下为数据来源功能新增字段
    	from_key?: string //来源key(用户服务端数据匹配)
    	from_store?: string //来源门店
    	from_user?: string //来源用户
    }
    
    注:BuryType | BuryFrom | Channel  请查看使用说明介绍
    
    

    页面路径&页面名称

    {
    	'欢迎页': "pages/home/index",
    }
    

    一、埋点类型

    当前区分的埋点类型如下:访问来源、页面进入、按钮点击、页面分享、扫码、页面驻留、退出页面,不同的埋点类型所对应的全量埋点字段有所不同,请注意区分!!!

    埋点类型枚举值如下:

    {
    	FROM: '访问来源',
        ENTER: '页面进入',
        CLICK: '按钮点击',
        SHARE: '页面分享',
        SCAN: '扫码',
        STAY: '页面驻留',
        OUT: '退出页面',
        INTERFACE: '接口'
    }
    
    1、访问来源【bury_type: FROM】

    埋点来源各个渠道如下:扫码二维码、服务通知、分享链接、自然流量等。当bury_type=FROM时,channel、channel_sigin两个非必须字段有记录值,其它情况这两个字段没记录值

    channel渠道枚举值如下【后续持续添加】:

    {
    	tmplMsg: '服务通知|模板消息|订阅消息',
    	share: '分享链接',
    	qrcode: '扫码进入',
    	gzh: '公众号',
    	pyq: '朋友圈',[废弃]
    	advert: '广告',
    	other: '第三方应用或者小程序',
    	auto: '自然流量'
    }
    

    channel_sigin参数的数据格式为:<渠道标记类型值>:<业务参数>,渠道标记类型值枚举如下【后续持续添加】:

    {
    	mendian: '门店',
    	dianyuan: '店员',
    	duanxin: '短信',
    	wuliao: '物料',
    	caidan: '菜单',
    	pyq: '朋友圈',
    	message: '消息',
    	xcx: '小程序',
    	gzh: '公众号',
    	qywx: '企业微信',
    	qita: '其它'
    }
    

    注:业务参数根据实际情况在渠道标记后自行添加

    eg:

    类型 channel channel_sign
    扫门店码 qrcode store:<门店号或门店id>
    扫店员码 qrocode dianyuan:<店员id>
    微信公众号菜单栏 gzh caidan
    公众号模板消息 gzh message:<消息标识>
    朋友圈广告 advert pyq:<广告栏位>

    其它自行组装。。。

    2、页面进入、驻留、离开【bury_type: ENTER | STAY | OUT】

    所有被打开的小程序页面都有页面进入埋点数据,通过bury_type=ENTER以及归类统计page_path,可查看小程序各个页面的访问数量。

    部分页面分区商户以及门店的有记录商户号、门店号 eg:

    {
    	bury_type: 'ENTER|STAY|OUT', //enter:进入页面;stay:'页面停留';out:'离开页面'
    	page_path: 'Shopping/merchantHome/index',
    	page_name: '商户首页/门店首页',
    	merchant_code: 'miya',
    	store_code: '0821',
    	...其它字段
    }
    

    注:当bury_type=STAY时,自动计算了当前从打开到离开的驻留时间(stay_time),stay_time也只有在bury_type=STAY时有效

    3、页面分享【bury_type:SHARE】

    当小程序页面被分享时,会新增一次页面分享记录 埋点数据记录 eg:

    {
    	bury_type: 'SHARE',
    	share_url: <分享的全路径>,
    	share_desc: <分享的扩展字段>
    	...其它字段
    }
    

    注:只有当bury_type=SHARE是,全量字段中的share_url和share_desc才会记录值,其它情况无效。另外share_desc记录当前分享页面的扩展信息,例如券详情页面分享

    {
    	bury_type: 'SHARE',
    	share_url: '/pages/ticketdetail/index?pubid=1211&type=1',
    	share_desc: '{name: '哇哈哈单品券', pubid: 1211}'
    	...其它字段
    }
    
    4、扫码 【bury_type: SCAN】

    在小程序中调起手机扫一扫,且扫码成功后会记录一条信息。目前只针对扫描商品有效 埋点数据记录 eg:

    {
    	bury_type: 'SCAN',
    	scan_type: '条形码',
    	scan_code: '商品69码',
    	...其它字段
    } 
    
    5、按钮点击 【bury_type: CLICK】

    在小程序中点击页面按钮,会记录一条点击信息,且埋点扩展信息会在click_desc中记录 埋点数据记录 eg:

    {
    	bury_type: 'CLICK',
    	click_btn: '点击的按钮key',
    	click_desc: '点击按钮的扩展信息',
    	click_x: '点击的X坐标',
    	click_y: '点击的Y坐标'
    }
    
    6、埋点描述【bury_dec】

    bury_desc为json格式字符串

    {
    	url: '',接口访问地址
    	order_no: '', 订单号
    	live_room_id: '', 直播房间ID
    	params: '',  接口参数json字符串【一般情况使用不到】
    }
    
    7、按钮描述【click_btn】

    按钮的格式:<操作类型>:<业务类型>:<业务标识>,枚举值如下(更多值持续补充):

    操作类型:

    {
    	add: 添加
    	del: 删除
    	update: 更新
    	query: 查询
    	confirm: 确认
    	cancel: 取消
    }
    

    业务类型:

    {
    	coupon: 券
    	order: 订单
    	mall: 商城
    	goods: 商品
    	member: 会员
    	card: 礼品卡
    	goodsTrolley: 商品购物车
    	cardTrolley: 礼品卡购物车
    }
    

    注:业务标识根据实际情况,按照按钮格式自行添加

    类型 click_btn
    下单未支付 add:order:订单号
    确认支付 confirm:order:订单号
    商品点击量 query:goods:商品ID
    商品加购物车 add:goodsTrolley:商品ID
    礼品卡加购物车 add:cardTrolley:礼品卡ID
    券点击 query:coupon:券批次号

    更多其它自行组装...

    前端错误信息收集

    错误信息收集全量字段介绍
    {
    	platform: <平台:h5/wx_applet/ali_applet>
    	message: <异常基础信息>
    	source: <发生异常的javascript文件url>
    	lineno: <发生错误的行号>
    	colno: <发生错误的列号>
    	stack: <异常的堆栈信息>
    	page_url: <页面路径,h5页面该字段有值>
    	created_at: <当前时间>
    }
    

    附录

    来源key(from_key)的枚举值

    注册:register-account
    领券:receive-coupon
    下单:place-order
    

    使用说明

    安装依赖

    npm 安装
    npm install miya-bury --save
    
    yarn 安装
    yarn add miya-bury
    

    初始化

    import bury, {btn, channel, BtnBusType, ChannelSignType, mixin, enter, out, click, from, stay} from 'miya-bury'
    
    bury.setConfig(config: Config).setDefault(option: BuryOption).start()
    

    API

    只列一下API,其它不想写了、看源码吧

    bury
      setConfig(config: Config): Bury{}
      setDefault(option: BuryOption): Bury{}
      start(): Bury{}
      add(): Bury{}
      flush: Promise<boolean>{}
    
    btn
      add(busType: BtnBusType, ...busSign: string[]): string{}
      del(busType: BtnBusType, ...busSign: string[]): string{}
      update(busType: BtnBusType, ...busSign: string[]): string{}
      confirm(busType: BtnBusType, ...busSign: string[]): string{}
      cancel(busType: BtnBusType, ...busSign: string[]): string{}
      
    channel
      tmplMsg(signType: ChannelSignType, ...busType: string[]){}
      share(signType: ChannelSignType, ...busType: string[]){}
      qrcode(signType: ChannelSignType, ...busType: string[]){}
      gzh(signType: ChannelSignType, ...busType: string[]){}
      pyq(signType: ChannelSignType, ...busType: string[]){}
      advert(signType: ChannelSignType, ...busType: string[]){}
      other(signType: ChannelSignType, ...busType: string[]){}
      auto(signType: ChannelSignType, ...busType: string[]){}
      
    BtnBusType: BtnBusType
    ChannelSignType: ChannelSignType
    mixin(vue: Vue){}
    enter(fn?: Function | object | null, immediate: boolean = false) {}
    out(fn?: Function | object | null, immediate: boolean = false) {}
    click(fn?: Function | object | null, immediate: boolean = false) {}
    from(fn?: Function | object | null, immediate: boolean = false) {}
    stay(fn?: Function | object | null, immediate: boolean = false) {}
    

    vue | uniapp项目集成

    import {mixin} from 'miya-bury'
    // 扩展vue的onLoad onShow onHide onUnload 生命周期函数
    mixin(Vue)
    
    

    页面按钮埋点

    <template>
    	...
    	<button @click='couponBtnHander(couponId)'>领券</button>
    	...
    </template>
    
    <script lang='ts'>
    	import {click, btn, BtnBusType} from 'miya-bury'
    
    	export default {
    		methods: {
    			@click(couponId=>{
    				return {
    					click_btn: btn.add(BtnBusType.coupon, couponId),
    					click_desc: '领券'
    				}
    			})
    			couponBtnHander(couponId){
    				...
    			}
    		}
    	}
    </script>
    

    参数说明

    Config

    字段 类型 说明 默认值
    duration number 自动上报的时间间隔:秒(非必填) 5000s
    url string 自动上报的服务器地址(非必填) https://saas-api.miyapay.com
    env production | development 正式环境或开发环境(必填) production
    auto boolean 是否自动上报 true
    submit function(url: string, data: BuryOption[]): Promise 发送上报请求的方法 -

    BuryOption

    注:BuryOption的属性与埋点全量字段一致

    BuryType | BuryFrom | ChannelSignType | BtnBusType

    BuryType | BuryFrom | ChannelSignType | BtnBusType 各项枚举值定义如下:

    enum BuryType {
      FROM = 'FROM',
      ENTER = 'ENTER',
      CLICK = 'CLICK',
      SHARE = 'SHARE',
      SCAN = 'SCAN',
      STAY = 'STAY',
      OUT = 'OUT',
      INTERFACE = 'INTERFACE'
    }
    
    enum BuryFrom {
      WEIXIN = 'weixin',
      ALIPAY = 'alipay',
      BAIDU = 'baidu',
      H5 = 'h5'
    }
    
    enum ChannelSignType {
      mendian = 'mendian',
      dianyuan = 'dianyuan',
      duanxin = 'duanxin',
      wuliao = 'wuliao',
      caidan = 'caidan',
      pyq = 'pyq',
      message = 'message',
      xcx = 'xcx',
      gzh = 'gzh',
      qywx = 'qywx',
      qita = 'qita'
    }
    
    enum BtnBusType {
      coupon = 'coupon',
      order = 'order',
      mall = 'mall',
      goods = 'goods',
      member = 'member',
      card = 'card',
      goodsTrolley = 'goodsTrolley',
      cardTrolley = 'cardTrolley'
    }
    

    Install

    npm i miya-bury

    DownloadsWeekly Downloads

    1

    Version

    1.0.0

    License

    ISC

    Unpacked Size

    35.8 kB

    Total Files

    15

    Last publish

    Collaborators

    • yangxun