You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

25 KiB

小程序埋点规划文档

一、项目概述

本项目是一个基于微信小程序的药品查询应用,包含三个主要角色端:

  • 患者端 (pages/): 患者用户访问

  • 地推端 (ground/): 邀约专员使用

  • 店员端 (doctor/): 药店工作人员使用


二、页面结构梳理

2.1 主包页面 (pages/)

页面路径 页面名称 说明
pages/start/index 启动页 应用入口,处理扫码参数和身份跳转
pages/tourists/index 游客页 未登录用户选择身份入口
pages/work/index 工作人员入口 选择地推/店员/患者身份
pages/index/index 患者首页 患者主页面,项目选择、适应症选择

2.2 地推端分包 (ground/)

页面路径 页面名称 说明
ground/pages/login/index 地推登录 地推人员登录/注册
ground/pages/home/index 地推首页 数据统计看板、图表展示
ground/pages/pharmacist/index 店员列表 邀约的店员列表及搜索筛选
ground/pages/my/index 地推我的 个人信息、设置
ground/pages/invite/index 地推邀约码 专属邀约二维码展示
ground/pages/stat/index 邀约明细 详细统计数据
ground/pages/changeNickname/index 修改姓名 修改地推人员姓名
ground/pages/changeTel/index 修改手机号 修改地推人员手机号

2.3 店员端分包 (doctor/)

页面路径 页面名称 说明
doctor/pages/login/index 店员登录 店员登录/注册第一步
doctor/pages/loginForm/index 店员注册 店员注册表单
doctor/pages/home/index 店员首页 数据统计看板、待处理事项
doctor/pages/patientList/index 患者列表 邀约的患者列表及状态管理
doctor/pages/articleList/index 教育列表 健康教育文章列表
doctor/pages/article/index 文章详情 教育文章详情
doctor/pages/my/index 店员我的 个人信息、设置
doctor/pages/invite/index 店员邀约码 专属邀约二维码展示
doctor/pages/stat/index 邀约明细 详细统计数据
doctor/pages/changeNickname/index 修改姓名 修改店员姓名
doctor/pages/changeTel/index 修改手机号 修改店员手机号

2.4 隐私协议分包 (privacy/)

页面路径 页面名称 说明
privacy/pages/policy/index 隐私政策 个人信息及隐私保护政策
privacy/pages/policy1/index 用户协议 用户与隐私保护协议

三、埋点事件规划

3.1 页面浏览埋点 (Page View)

所有页面都需要在 onLoadonShow 中上报页面浏览事件。

pageName 编码 页面路径 说明
患者端

patient_start_view pages/start/index 启动页
patient_tourists_view pages/tourists/index 游客页
patient_work_view pages/work/index 工作人员入口
patient_home_view pages/index/index 患者首页
地推端

ground_login_view ground/pages/login/index 地推登录
ground_home_view ground/pages/home/index 地推首页
ground_pharmacist_view ground/pages/pharmacist/index 店员列表
ground_my_view ground/pages/my/index 地推我的
ground_invite_view ground/pages/invite/index 地推邀约码
ground_stat_view ground/pages/stat/index 地推邀约明细
ground_change_name_view ground/pages/changeNickname/index 地推修改姓名
ground_change_tel_view ground/pages/changeTel/index 地推修改手机号
店员端

doctor_login_view doctor/pages/login/index 店员登录
doctor_register_view doctor/pages/loginForm/index 店员注册
doctor_home_view doctor/pages/home/index 店员首页
doctor_patient_view doctor/pages/patientList/index 患者列表
doctor_article_view doctor/pages/articleList/index 教育列表
doctor_article_detail_view doctor/pages/article/index 文章详情
doctor_my_view doctor/pages/my/index 店员我的
doctor_invite_view doctor/pages/invite/index 店员邀约码
doctor_stat_view doctor/pages/stat/index 店员邀约明细
doctor_change_name_view doctor/pages/changeNickname/index 店员修改姓名
doctor_change_tel_view doctor/pages/changeTel/index 店员修改手机号
隐私协议

privacy_policy_view privacy/pages/policy/index 隐私政策
user_agreement_view privacy/pages/policy1/index 用户协议

3.2 点击事件埋点 (Click Event)

3.2.1 启动页 (pages/start/index)

pageName 编码 触发元素 说明
patient_start_scan_click 扫码进入 用户通过扫码进入小程序

3.2.2 游客页 (pages/tourists/index)

事件名 触发元素 说明
click_tourists_pharmacist "我是药店工作人员" 跳转店员登录
click_tourists_promoter "我是地推人员" 跳转地推登录
click_avatar_upload 头像选择 选择/上传头像
click_nickname_save 昵称输入框失焦 保存昵称

3.2.3 工作人员入口 (pages/work/index)

事件名 触发元素 说明
click_work_ground "我是邀约专员"卡片 进入地推登录
click_work_doctor "我是店员"卡片 进入店员登录
click_work_patient "我是患者"按钮 进入患者端

3.2.4 患者首页 (pages/index/index)

事件名 触发元素 说明
click_patient_project_switch 项目切换picker 切换当前项目
click_patient_avatar 头像选择按钮 选择/上传头像
click_patient_nickname_save 昵称输入框 保存昵称
click_patient_indication_select 适应症选项 选择适应症并登录
click_patient_agreement_toggle 协议同意checkbox 切换协议同意状态
click_patient_agreement_view 《用户与隐私保护协议》 查看用户协议
click_patient_work_entry "我是工作人员" 进入工作人员入口
click_patient_jump_miniprogram "去腾讯药箱看看" 跳转腾讯药箱小程序

3.2.5 地推登录页 (ground/pages/login/index)

事件名 触发元素 说明
click_ground_login_wx "手机号快捷登录"按钮 微信一键登录
click_ground_login_sms_switch "使用手机号验证码" 切换验证码登录
click_ground_login_sms_code "发送验证码" 发送短信验证码
click_ground_login_submit "立即加入"按钮 验证码登录提交
click_ground_login_agreement 协议勾选 切换协议同意状态
click_ground_login_privacy 《个人信息及隐私保护政策》 查看隐私政策
click_ground_login_patient "我是患者" 切换到患者端

3.2.6 地推首页 (ground/pages/home/index)

事件名 触发元素 说明
click_ground_home_project_switch 项目切换picker 切换项目
click_ground_home_invite_code 右上角邀约码图标 查看邀约码
click_ground_home_fold1 "累计邀约"折叠 展开/收起累计数据
click_ground_home_fold2 "邀约患者统计"折叠 展开/收起日度数据
click_ground_home_stat_type_day "日统计"切换 切换到日统计
click_ground_home_stat_type_month "月统计"切换 切换到月统计
click_ground_home_date_picker 日期选择器 选择统计日期
click_ground_home_date_prev 日期左箭头 上一天/上月
click_ground_home_date_next 日期右箭头 下一天/下月
click_ground_home_chart1_start 图表1开始日期 选择图表开始日期
click_ground_home_chart1_end 图表1结束日期 选择图表结束日期
click_ground_home_chart2_start 图表2开始日期 选择图表开始日期
click_ground_home_chart2_end 图表2结束日期 选择图表结束日期
click_ground_home_chart3_start 图表3开始日期 选择图表开始日期
click_ground_home_chart3_end 图表3结束日期 选择图表结束日期
click_ground_home_detail "查看明细"按钮 进入邀约明细

3.2.7 地推店员列表 (ground/pages/pharmacist/index)

事件名 触发元素 说明
click_ground_pharmacist_project_switch 项目切换picker 切换项目
click_ground_pharmacist_search 搜索框 搜索店员/药店
click_ground_pharmacist_start_date 开始时间picker 选择开始时间
click_ground_pharmacist_end_date 结束时间picker 选择结束时间
click_ground_pharmacist_card 店员卡片 查看店员详情

3.2.8 地推我的页 (ground/pages/my/index)

事件名 触发元素 说明
click_ground_my_avatar 头像区域 修改头像
click_ground_my_nickname "修改姓名" 进入修改姓名页
click_ground_my_tel "修改手机号" 进入修改手机号页
click_ground_my_invite "我的邀约码" 查看邀约码
click_ground_my_exit "退出登录" 退出登录

3.2.9 地推邀约码 (ground/pages/invite/index)

事件名 触发元素 说明
click_ground_invite_save 二维码区域 保存二维码到相册

3.2.10 地推邀约明细 (ground/pages/stat/index)

事件名 触发元素 说明
click_ground_stat_start_date 开始日期picker 选择开始日期
click_ground_stat_end_date 结束日期picker 选择结束日期

3.2.11 店员登录页 (doctor/pages/login/index)

事件名 触发元素 说明
click_doctor_login_wx "手机号快捷登录"按钮 微信一键登录
click_doctor_login_sms_switch "使用手机号验证码" 切换验证码登录
click_doctor_login_sms_code "发送验证码" 发送短信验证码
click_doctor_login_submit "立即加入"按钮 验证码登录提交
click_doctor_login_agreement 协议勾选 切换协议同意状态
click_doctor_login_privacy 《个人信息及隐私保护政策》 查看隐私政策
click_doctor_login_patient "我是患者" 切换到患者端

3.2.12 店员注册页 (doctor/pages/loginForm/index)

事件名 触发元素 说明
click_doctor_register_name_input 姓名输入框 输入姓名
click_doctor_register_pharmacy 所属药店选择 打开药店选择弹窗
click_doctor_register_project 项目选择picker 选择项目
click_doctor_register_submit "立即加入店员端" 提交注册
click_doctor_register_pharmacy_search 药店搜索框 搜索药店
click_doctor_register_area_picker 省市区选择 选择省市区
click_doctor_register_pharmacy_select 药店列表项 选择药店

3.2.13 店员首页 (doctor/pages/home/index)

事件名 触发元素 说明
click_doctor_home_project_switch 项目切换picker 切换项目
click_doctor_home_invite_code 右上角邀约码图标 查看邀约码
click_doctor_home_fold1 "累计邀约"折叠 展开/收起累计数据
click_doctor_home_fold2 "邀约患者统计"折叠 展开/收起日度数据
click_doctor_home_stat_type_day "日统计"切换 切换到日统计
click_doctor_home_stat_type_month "月统计"切换 切换到月统计
click_doctor_home_date_picker 日期选择器 选择统计日期
click_doctor_home_date_prev 日期左箭头 上一天/上月
click_doctor_home_date_next 日期右箭头 下一天/下月
click_doctor_home_chart_start 图表开始日期 选择图表开始日期
click_doctor_home_chart_end 图表结束日期 选择图表结束日期
click_doctor_home_detail "查看明细"按钮 进入邀约明细

3.2.14 店员患者列表 (doctor/pages/patientList/index)

事件名 触发元素 说明
click_doctor_patient_project_switch 项目切换picker 切换项目
click_doctor_patient_search 搜索框 搜索患者
click_doctor_patient_jump_status 跳转状态picker 筛选跳转状态
click_doctor_patient_enroll_status 入组状态picker 筛选入组状态
click_doctor_patient_jump_start 跳转开始时间 选择跳转开始时间
click_doctor_patient_jump_end 跳转结束时间 选择跳转结束时间
click_doctor_patient_enroll_start 入组开始时间 选择入组开始时间
click_doctor_patient_enroll_end 入组结束时间 选择入组结束时间
click_doctor_patient_preview "查看提交材料" 预览材料图片
click_doctor_patient_upload_jump "提交"跳转材料 上传跳转材料
click_doctor_patient_upload_enroll "提交"入组材料 上传入组材料
click_doctor_patient_reupload_jump "重新提交"跳转 重新上传跳转材料
click_doctor_patient_reupload_enroll "重新提交"入组 重新上传入组材料

3.2.15 教育列表 (doctor/pages/articleList/index)

事件名 触发元素 说明
click_doctor_article_tab 分类tab 切换文章分类
click_doctor_article_banner Banner轮播 点击Banner
click_doctor_article_card 文章卡片 查看文章详情
click_doctor_article_like 点赞按钮 点赞文章

3.2.16 文章详情 (doctor/pages/article/index)

事件名 触发元素 说明
click_doctor_article_detail_like 点赞按钮 点赞文章

3.2.17 店员我的页 (doctor/pages/my/index)

事件名 触发元素 说明
click_doctor_my_avatar 头像区域 修改头像
click_doctor_my_nickname "修改姓名" 进入修改姓名页
click_doctor_my_tel "修改手机号" 进入修改手机号页
click_doctor_my_invite "我的邀约码" 查看邀约码
click_doctor_my_exit "退出登录" 退出登录

3.2.18 店员邀约码 (doctor/pages/invite/index)

事件名 触发元素 说明
click_doctor_invite_save 二维码区域 保存二维码到相册

3.2.19 店员邀约明细 (doctor/pages/stat/index)

事件名 触发元素 说明
click_doctor_stat_type_day "日统计"切换 切换到日统计
click_doctor_stat_type_month "月统计"切换 切换到月统计
click_doctor_stat_start_date 开始日期picker 选择开始日期
click_doctor_stat_end_date 结束日期picker 选择结束日期

四、埋点事件汇总

4.1 事件类型统计

事件类型 事件数量 说明
页面浏览 (view) 25 所有页面
点击事件 (click) 115+ 所有可点击元素
总计 140+ -

4.2 用户类型定义

enum UserType {
  PATIENT = 2,    // 患者
  PROMOTER = 3,   // 地推/邀约专员
  PHARMACIST = 4, // 店员
}

4.3 页面名称映射

const PageNameMap = {
  // 患者端
  'pages/start/index': '启动页',
  'pages/tourists/index': '游客页',
  'pages/work/index': '工作人员入口',
  'pages/index/index': '患者首页',
  
  // 地推端
  'ground/pages/login/index': '地推登录',
  'ground/pages/home/index': '地推首页',
  'ground/pages/pharmacist/index': '店员列表',
  'ground/pages/my/index': '地推我的',
  'ground/pages/invite/index': '地推邀约码',
  'ground/pages/stat/index': '地推邀约明细',
  'ground/pages/changeNickname/index': '地推修改姓名',
  'ground/pages/changeTel/index': '地推修改手机号',
  
  // 店员端
  'doctor/pages/login/index': '店员登录',
  'doctor/pages/loginForm/index': '店员注册',
  'doctor/pages/home/index': '店员首页',
  'doctor/pages/patientList/index': '患者列表',
  'doctor/pages/articleList/index': '教育列表',
  'doctor/pages/article/index': '文章详情',
  'doctor/pages/my/index': '店员我的',
  'doctor/pages/invite/index': '店员邀约码',
  'doctor/pages/stat/index': '店员邀约明细',
  'doctor/pages/changeNickname/index': '店员修改姓名',
  'doctor/pages/changeTel/index': '店员修改手机号',
  
  // 隐私协议
  'privacy/pages/policy/index': '隐私政策',
  'privacy/pages/policy1/index': '用户协议',
}

五、埋点接口规范

5.1 接口信息

请求地址: POST /app/common/common/report-behavior

请求参数:

参数名 类型 必填 说明
pageName string 页面名称编码(埋点事件标识)

5.2 技术实现方案

  1. 创建埋点工具类 (utils/tracking.ts)

    • 封装埋点上报方法,调用 report-behavior 接口

    • 管理通用参数

    • 处理埋点队列和批量上报

  2. 页面混入 (Mixin)

    • 在页面生命周期中自动上报页面浏览事件

    • 统一处理页面参数

  3. 点击事件拦截

    • 使用自定义属性标记可埋点元素

    • 统一监听并上报点击事件

5.3 代码示例

// utils/tracking.ts

/**
 * 上报用户行为埋点
 * @param pageName 埋点事件标识,格式:page_action_element
 */
export function reportBehavior(pageName: string) {
  const app = getApp<IAppOption>()
  
  wx.ajax({
    method: 'POST',
    url: '/app/common/common/report-behavior',
    data: {
      pageName,
    },
  }).catch(() => {
    // 埋点上报失败不阻塞业务流程
  })
}

/**
 * 页面浏览埋点
 * @param pagePath 页面路径
 */
export function trackPageView(pagePath: string) {
  const pageNameMap: Record<string, string> = {
    // 患者端
    'pages/start/index': 'patient_start_view',
    'pages/tourists/index': 'patient_tourists_view',
    'pages/work/index': 'patient_work_view',
    'pages/index/index': 'patient_home_view',
    
    // 地推端
    'ground/pages/login/index': 'ground_login_view',
    'ground/pages/home/index': 'ground_home_view',
    'ground/pages/pharmacist/index': 'ground_pharmacist_view',
    'ground/pages/my/index': 'ground_my_view',
    'ground/pages/invite/index': 'ground_invite_view',
    'ground/pages/stat/index': 'ground_stat_view',
    'ground/pages/changeNickname/index': 'ground_change_name_view',
    'ground/pages/changeTel/index': 'ground_change_tel_view',
    
    // 店员端
    'doctor/pages/login/index': 'doctor_login_view',
    'doctor/pages/loginForm/index': 'doctor_register_view',
    'doctor/pages/home/index': 'doctor_home_view',
    'doctor/pages/patientList/index': 'doctor_patient_view',
    'doctor/pages/articleList/index': 'doctor_article_view',
    'doctor/pages/article/index': 'doctor_article_detail_view',
    'doctor/pages/my/index': 'doctor_my_view',
    'doctor/pages/invite/index': 'doctor_invite_view',
    'doctor/pages/stat/index': 'doctor_stat_view',
    'doctor/pages/changeNickname/index': 'doctor_change_name_view',
    'doctor/pages/changeTel/index': 'doctor_change_tel_view',
    
    // 隐私协议
    'privacy/pages/policy/index': 'privacy_policy_view',
    'privacy/pages/policy1/index': 'user_agreement_view',
  }
  
  const pageName = pageNameMap[pagePath]
  if (pageName) {
    reportBehavior(pageName)
  }
}

/**
 * 点击事件埋点
 * @param eventName 事件标识
 */
export function trackClick(eventName: string) {
  reportBehavior(eventName)
}
// 页面中使用示例
import { trackPageView, trackClick } from '@/utils/tracking'

const app = getApp<IAppOption>()

Page({
  onLoad() {
    // 页面浏览埋点需要在登录后上报
    app.waitLogin().then(() => {
      trackPageView('pages/index/index')
    })
  },
  
  handleWork() {
    // 上报点击事件
    trackClick('patient_home_work_click')
    
    wx.navigateTo({
      url: '/pages/work/index',
    })
  },
})

5.3 埋点验证清单

实施完成后,需要验证以下埋点是否正常上报:

  • 所有页面的 view 事件

  • 所有可点击元素的 click 事件


六、数据统计维度

6.1 用户行为分析

  • 日活跃用户 (DAU):按用户类型统计

  • 页面访问热度:各页面PV/UV排名

  • 用户留存率:次日/7日/30日留存

  • 使用时长:平均使用时长、页面停留时长

6.2 功能使用分析

  • 登录转化率:各端登录成功率

  • 项目切换频次:用户切换项目的频率

  • 功能使用分布:各功能按钮点击率

  • 搜索使用情况:搜索功能使用频次

6.3 业务数据分析

  • 邀约转化漏斗:扫码 -> 注册 -> 绑定 -> 跳转 -> 入组

  • 材料上传完成率:各状态转化情况

  • 内容互动数据:文章阅读、点赞数据

  • 邀约码使用:邀约码查看、保存次数


七、附录

7.1 埋点事件汇总表

事件类型 事件数量 说明
页面浏览 (view) 25 所有页面
点击事件 (click) 115+ 所有可点击元素
总计 140+ -

7.2 版本记录

版本 日期 说明
v1.0 2026-03-10