前端埋点需求

基于当前 cash_centerwp_h5roovault 已实现埋点链路整理。本期为全新上线,不考虑旧版本兼容;目标是建立统一事件模型、统一字段、敏感信息治理和验收口径。

1. 目标

  1. 还原用户在借款、提现、还款、绑卡、KYC、登录、补件等核心路径中的行为漏斗。
  2. 支持按产品、渠道、用户、设备、页面、订单、支付方式、绑卡方式等维度分析转化和失败原因。
  3. 统一 H5 与 Android 原生埋点语义,避免同一行为多套命名。
  4. 禁止将卡号、CVV、手机号、BVN/NIN、姓名、地址、收入等敏感值拼进 event_name
  5. 埋点失败不能影响业务流程,但需要具备调试和抽样校验能力。

2. 当前实现约束

当前通道当前字段主要问题
cash_center/dc/buriedPointBatchchannel, uid, event_name, event_page, event_databvn/channel 时不上报;大量字段拼进 event_name;路由自动进出页被注释
wp_h5/dc/buriedPointBatch/v2uid, channel, event_page, event_name, event_data字段会被改成 <eventName>_<field>;与 cash_center 协议不完全一致
roovaultSensorsDataAPI / DataHubpage, eventName, SDK公共字段原生主要上报 page + eventName,自定义字段弱;业务值也存在拼接进事件名

3. 统一上报模型

所有埋点统一按以下模型定义。本期不并行上报旧事件,也不保留旧事件兼容字段。

{
  "event_name": "withdraw_page_view",
  "event_page": "withdraw_page",
  "event_type": "view",
  "event_time": 1719820800000,
  "event_data": {
    "scene": "withdraw",
    "content": "loan_amount",
    "result": "success",
    "error_code": "",
    "error_msg": ""
  }
}

3.1 事件类型

event_type含义触发时机
view页面或模块曝光页面进入、弹窗展示、模块进入视口
leave页面或模块离开路由离开、WebView 关闭、页面失活
click点击行为用户主动点击按钮、列表项、Tab、协议、关闭按钮
input输入行为聚焦、失焦、清空、选择,不上报输入原文
submit提交行为用户发起提现、还款、绑卡、KYC、补件等
result业务结果接口成功/失败、页面状态结果、第三方回调结果
popup_view弹窗曝光弹窗展示
popup_click弹窗点击弹窗主按钮、关闭、取消
error前端异常或接口异常异常捕获、接口失败
performance性能指标页面加载后、关键资源完成后

3.2 命名规则

事件名格式:

<scene>_<page_or_module>_<action>

示例:

推荐事件不推荐事件
bank_card_card_number_focusBankCard_CardNumber_5399****
bank_card_submit_clickBankCard_submit
withdraw_result_popup_clickservice_evaluation_pop_submit_click
kyc_bvn_confirm_clickBVNVerify_confirm_12345678901

规则:

  1. 全部小写,下划线分隔。
  2. event_name 只描述行为,不携带运行时值。
  3. 运行时值进入 event_data,且必须脱敏或枚举化。
  4. 同一行为在 H5 和 Android 使用同一个事件名。
  5. 本期为全新上线,不考虑旧事件名兼容;所有研发、测试和数据验收均以新事件名为准。

4. 公共字段需求

4.1 外层字段

字段类型必填来源说明
event_namestring调用方统一事件名
event_pagestring调用方页面或模块名
event_typestring调用方view/click/submit/result/...
event_timenumber前端毫秒时间戳
uidstring登录态/App bridge未登录可为空
cust_idstring登录态/App bridge有则传
channelstringproductSource/channel/bizCode产品或业务渠道
biz_codestringApp/H5配置与服务端业务线一致
countrystring配置当前主要为 NG
platformstring前端h5/android/ios
app_namestringApp bridge/构建配置/运行时配置实际运行的品牌或宿主 App 名称,如 rocketcash/cashnaija
app_version_codestringApp bridge:getCurrentAppVersion()App 内 H5、Android 原生必传;普通浏览器 H5 可为空
app_version_namestringApp bridge:getCurrentAppVersionName()App 内 H5、Android 原生必传;普通浏览器 H5 可为空
h5_versionstring构建变量:process.env.VUE_APP_VERSIONH5 发布版本;App 原生页面可为空
device_idstringApp bridge/SDK禁止自行生成不稳定 ID
session_idstring前端一次访问会话
trace_idstring链路上下文与业务接口串联

4.1.1 版本字段当前实现与取值要求

当前代码实现:

wp_h5 当前实现cash_center 当前实现Android 当前实现
app_version_code已有 bridge 方法 getCurrentAppVersion(),在 App.vue 中用于 rocketcash 请求头 X-APP-VERSION;但当前埋点没有统一带上当前 native.js/report.js 未取 App 版本H5JsInterface.getCurrentAppVersion() 返回 AppUtils.getAppVersionCode()
app_version_name已有 bridge 方法 getCurrentAppVersionName();当前埋点没有统一带上当前未取H5JsInterface.getCurrentAppVersionName() 返回 AppUtils.getAppVersionName()
h5_versionvue.config.js 已将 `process.env.VUE_APP_VERSIONpackage.json.version

需求取值:

  1. wp_h5h5_version 直接取 process.env.VUE_APP_VERSION
  2. cash_center 需要补齐构建注入,建议在 vue.config.js 中读取 package.json.version 并写入 process.env.VUE_APP_VERSION,然后埋点取 process.env.VUE_APP_VERSION
  3. App 内 H5 初始化埋点上下文时调用:
    • getCurrentAppVersion() -> app_version_code
    • getCurrentAppVersionName() -> app_version_name
  4. 普通浏览器 H5 没有 App bridge 时:
    • app_version_code/app_version_name 传空字符串或不传
    • h5_version 仍必须传
  5. Android 原生埋点直接从原生能力取:
    • AppUtils.getAppVersionCode() -> app_version_code
    • AppUtils.getAppVersionName() -> app_version_name

4.1.2 设备信息字段要求

原生和 App 内 H5 上报时可以补充更多设备信息,但必须遵守最小必要原则;不得上传通讯录、WiFi 列表、GPS 明细、安装应用列表等高敏原始数据作为普通行为埋点字段。

当前代码实现:

能力当前实现
device_idwp_h5getDeviceId()cash_centergetDeviceId();Android 原生可用 DeviceIdRuntime.getDeviceId()
phone_modelAndroid H5JsInterface.getDeviceInfo() 当前只返回 deviceIdphoneModel
os_namewp_h5getOsName();Android 返回固定 Android
os_versionwp_h5getOsVersion();Android 返回 Build.VERSION.RELEASE
os_version_codewp_h5getOsVersionCode();Android 返回 Build.VERSION.SDK_INT
network_typewp_h5getNetwork();Android 返回 PhoneUtils.getNetworkState(...)
timezonewp_h5getDefaultTimezone();Android 返回 TimeZone.getDefault().getID()

建议新增/统一上报字段:

字段类型来源是否必传说明
device_idstringApp bridge/SDKApp 内 H5、Android 原生尽量传;普通浏览器不自行生成
device_modelstringgetDeviceInfo().phoneModel / 原生 Build.MODEL机型,如 SM-A125F
device_brandstring建议原生补充 Build.BRAND当前 bridge 未返回,建议补
device_manufacturerstring建议原生补充 Build.MANUFACTURER当前 bridge 未返回,建议补
os_namestringgetOsName()Android/iOS/Web
os_versionstringgetOsVersion()系统版本
os_version_codestringgetOsVersionCode()Android SDK_INT
network_typestringgetNetwork()wifi/4g/5g/none/unknown 等枚举
timezonestringgetDefaultTimezone()Asia/Shanghai
user_agent_hashstringWeb UA hash普通 H5 可传 hash,不传完整 UA
screen_widthnumberH5 window.screen.width / 原生屏幕宽
screen_heightnumberH5 window.screen.height / 原生屏幕高

4.2 event_data 公共字段

字段类型是否必传说明
scenestring业务场景,如 repayment/withdraw/bind_card/kyc
contentstring条件必传用户点击或曝光的具体内容标识;点击、弹窗点击、列表项点击类事件必传
source_pagestring条件必传用户进入当前页面或触发当前跳转前所在的页面;页面进入、跨页跳转、Native 打开 H5 时必传
target_pagestring条件必传当前点击或跳转行为将要到达的目标页面;点击会产生跳转、打开外链或跳 Native 页面时必传
duration_msnumber条件必传停留时长;页面离开、模块离开类事件必传
order_idstring条件必传借款/还款/支付订单 ID;事件已经产生或明确关联某一笔业务订单时必传
loan_idstring条件必传贷款 ID;事件已经明确关联某一笔贷款时必传
payment_methodstring条件必传支付方式枚举;选择支付方式、提交还款、支付结果类事件必传
bind_methodstring条件必传绑卡/绑账户方式枚举;绑卡、绑账户流程事件必传
statusstring条件必传页面或业务状态;状态页、处理中页、审核页、列表状态曝光类事件必传
resultstring条件必传success/fail/pending/cancel/timeout;接口结果、业务结果、结果页事件必传
error_codestring条件必传错误码;失败、异常、接口错误事件必传
error_msgstring条件必传错误摘要,禁止包含敏感明文;失败、异常、接口错误事件必传
network_typestring网络状态;如外层公共字段已上报,可不在 event_data 重复上报
is_app_webviewboolean是否 App 内 WebView;如外层公共字段已上报,可不在 event_data 重复上报

order_idloan_id 的取值规则:

  1. 两者需要保留为公共字段,但不是全局必传字段。
  2. order_id 用于标识一次借款、提现、还款、支付、绑卡验证等可形成订单或交易单的业务动作。页面还没创建订单时不传,例如提现页刚进入、金额输入、期限选择。
  3. loan_id 用于标识一笔贷款生命周期。只有当前事件能明确归属到某笔贷款时上报,例如还款方式页、还款提交、还款结果、还款历史详情、贷后详情。
  4. 如果同一个事件同时有关联贷款和交易订单,需要同时上报 loan_idorder_id,例如某笔贷款下发起还款并生成支付订单。
  5. 不允许为了凑字段传空字符串、unknown 或前端临时随机 ID;拿不到稳定业务 ID 时不传该字段。

4.3 点击内容 content 的实现方式

如果要记录“用户点击了什么内容”,统一通过 event_data.content 实现,不允许把点击内容拼到 event_name

示例:

{
  "event_name": "withdraw_result_page_click",
  "event_page": "withdraw_result_page",
  "event_type": "click",
  "event_data": {
    "scene": "withdraw",
    "content": "go_home",
    "target_page": "home_page"
  }
}

取值规则:

点击对象content 取值说明
主按钮submit_button, confirm_button, continue_button不使用按钮文案,避免多语言或 UI 文案变更影响数据
关闭按钮close_button弹窗右上角关闭、页面关闭
返回按钮back_button导航返回
协议agreement, privacy_policy, contract可额外传 agreement_typecontract_type
列表项list_item具体项用 item_type/item_id/item_index
Tabtab具体 tab 用 tab_name
支付方式payment_method具体方式用 payment_method 字段
银行/账户项bank_item, account_item银行用 bank_code,账户只传类型或脱敏标识
弹窗按钮popup_primary_button, popup_secondary_button, popup_close_button配合 popup_typeaction_type
帮助入口help, customer_service帮助中心、客服入口

研发实现要求:

  1. 每个可点击控件在代码中显式传入稳定枚举值,例如 trackClick('withdraw_result_page_click', { content: 'go_home' })
  2. content 使用英文枚举,不使用 UI 文案,不使用接口返回文案。
  3. 同一控件在不同页面点击,content 可以相同,通过 event_page 区分。
  4. 同一页面多个同类控件,补充 content_index 或业务字段,如 item_index/banner_position/payment_method
  5. 禁止把手机号、卡号、账号、用户姓名、错误详情等动态内容放入 content

4.4 source_pagetarget_page 取值规则

source_pagetarget_page 用于分析页面流转、入口来源和跳转去向。两者只在能明确来源或去向时上报;不能确定时传空字符串或不传,不允许随意填 unknown

字段取值来源取值示例需要上报的情况
source_page路由 from.name、打开 H5 的 query 参数、App Native 传参、当前业务上下文home_page, withdraw_page, repayment_result_page, push_notification, sms_link页面进入、弹窗曝光、跨页面跳转、从 App 原生进入 H5、从短信/Push/运营位进入
target_page路由 to.name、点击动作配置、Native 跳转方法参数、H5 跳转 URL 映射home_page, bank_card_page, contract_page, customer_service_page, google_play点击会产生跳转、关闭后返回指定页面、打开外部链接、跳到 Native 页面

页面进入事件示例:

{
  "event_name": "bank_card_page_view",
  "event_page": "bank_card_page",
  "event_type": "view",
  "event_data": {
    "source_page": "withdraw_page"
  }
}

跳转点击事件示例:

{
  "event_name": "withdraw_result_page_click",
  "event_page": "withdraw_result_page",
  "event_type": "click",
  "event_data": {
    "content": "link_card",
    "source_page": "withdraw_result_page",
    "target_page": "bank_card_page"
  }
}

取值优先级:

  1. SPA 路由跳转:source_page = from.nametarget_page = to.name
  2. 当前页按钮跳转:source_page = 当前 event_pagetarget_page = 按钮配置的目标页面
  3. Native 打开 H5:source_page = Native 传入的 sourcePage;没有传参时按入口类型取 native_home/native_account/push_notification/sms_link
  4. H5 关闭或返回 Native:首页用 target_page = home_page,账户页用 target_page = account_page,外部跳转用 target_page = external_url 或具体渠道名。
  5. 弹窗:弹窗曝光时 source_page = 弹窗所属页面;弹窗按钮点击如会跳转,则补 target_page,仅关闭则不传或传当前页。

5. 敏感信息规则

5.1 禁止上报

以下字段禁止出现在 event_name、日志、URL query、event_data 明文中:

类型示例
银行卡号cardNum, CardNumber
CVVcvv, CVV
卡有效期expiry
银行账号accountNo, AccountNumber
手机号phone, PhoneNumber
BVN/NINbvn, nin 原文
姓名/地址name, address 原文
收入monthlyIncome 原文

5.2 允许的替代字段

原始含义替代字段
是否输入卡号card_number_filled: true/false
卡号长度card_number_length
卡类型card_brand
CVV 是否输入cvv_filled: true/false
手机号是否输入phone_filled: true/false
BVN/NIN 校验方式identity_type: bvn/nin/bvn_nin
地址是否完整address_completed: true/false
收入区间income_bucket

6. 场景埋点需求

6.1 还款/支付

覆盖端:

  • cash_center: payMethod, payResult, virtualAccount
  • wp_h5: repayment, earlyRepay, repaymentHistory, afterRepayment
页面/模块事件名类型触发时机必传字段
还款方式页repayment_method_page_viewview页面进入scene, order_id, loan_id, repay_amount, available_methods
还款方式页repayment_method_page_leaveleave页面离开duration_ms, selected_method
还款方式列表repayment_method_clickclick选择支付方式payment_method, content
确认还款repayment_confirm_clickclick点击确认payment_method, repay_amount, order_id
还款接口repayment_submit_resultresult还款提交接口返回result, error_code, error_msg, payment_method, order_id
支付结果页repayment_result_page_viewview结果页展示result, payment_method, order_id, repay_amount
支付结果页repayment_result_action_clickclick点击完成/重试/查看详情content, result
虚拟账户页virtual_account_page_viewview页面进入bank_code, account_created, expire_time
还款历史repayment_history_page_viewview页面进入loan_count, has_overdue
还款历史详情repayment_history_detail_viewview详情展示loan_id, repay_status

6.2 绑银行卡

覆盖端:

  • cash_center: bindCard, addCard, checkCode, checkPhone, checkBirth, checkPin, bindCardWaiting, bindCardResult
  • wp_h5: cardStatus, checkCardStatus
  • roovault: 原生绑卡、绑卡弹窗、银行卡状态页
页面/模块事件名类型触发时机必传字段
绑卡页bank_card_page_viewview页面进入scene, source_page, bind_method
卡号输入框bank_card_number_focusinput聚焦content
卡号输入框bank_card_number_blurinput失焦card_number_filled, card_number_length, card_brand
有效期输入框bank_card_expiry_focusinput聚焦content
有效期输入框bank_card_expiry_blurinput失焦expiry_filled
CVV 输入框bank_card_cvv_focusinput聚焦content
CVV 输入框bank_card_cvv_blurinput失焦cvv_filled
协议勾选bank_card_agreement_clickclick勾选/取消checked
提交绑卡bank_card_submit_clickclick点击提交card_number_filled, expiry_filled, cvv_filled
前端校验失败bank_card_validate_failresult表单校验失败field_name, error_code, error_msg
绑卡接口结果bank_card_submit_resultresult接口返回result, error_code, error_msg, provider
OTP 页bank_card_otp_page_viewviewOTP页展示provider, send_type
OTP 重发bank_card_otp_resend_clickclick点击重发provider, resend_count
OTP 提交bank_card_otp_submit_clickclick点击提交code_filled
处理中页bank_card_processing_viewview处理中展示provider, order_id
结果页bank_card_result_page_viewview成功/失败页展示result, provider, error_code
结果页操作bank_card_result_action_clickclick确认/重试/返回首页content, result

6.3 绑银行账户

覆盖端:

  • cash_center: addBankAccount, addBankAccountResultSteps, addBankAccountQueryResult, addBankAccountResult
  • roovault: BankAccount
页面/模块事件名类型触发时机必传字段
绑账户页bank_account_page_viewview页面进入source_page, verify_bvn_enabled
银行选择bank_account_bank_select_clickclick选择银行bank_code, bank_name
账号输入框bank_account_number_focusinput聚焦content
账号输入框bank_account_number_blurinput失焦account_number_filled, account_number_length
BVN 校验勾选bank_account_verify_bvn_clickclick勾选/取消checked
提交账户bank_account_submit_clickclick点击提交bank_code, account_number_filled
前端校验失败bank_account_validate_failresult表单校验失败field_name, error_code, error_msg
绑账户接口结果bank_account_submit_resultresult接口返回result, provider, error_code, error_msg
阶段处理中bank_account_step_viewviewProcessing/Verify/Success/Fail 阶段展示step_name, step_index, status
阶段离开bank_account_step_leaveleave阶段切换或页面离开step_name, duration_ms, status
结果操作bank_account_result_action_clickclick确认/重试/返回content, result

6.4 提现/提现结果

覆盖端:

  • wp_h5: withdraw, withdraw-refactor, withdrawStatus
页面/模块事件名类型触发时机必传字段
提现页withdraw_page_viewview页面进入并拿到初始化数据loan_id, product_id, style_version, ab_group
提现页withdraw_page_leaveleave页面离开/失活duration_ms, loan_amount, selected_tenor
借款金额withdraw_amount_focusinput金额框聚焦min_amount, max_amount
借款金额withdraw_amount_blurinput金额框失焦loan_amount, amount_valid, error_code
借款期限withdraw_loan_terms_clickclick选择期限term_index, term_days, product_id
优惠券withdraw_coupon_clickclick点击优惠券入口coupon_available, coupon_selected
借款用途withdraw_loan_purpose_clickclick点击/选择用途purpose_code
保险/保护服务withdraw_credit_protection_service_clickclick勾选/取消checked, fee_amount
放款账户withdraw_disbursement_account_clickclick点击/切换账户account_type, has_bound_account
合同withdraw_contract_clickclick点击合同contract_type
提交提现withdraw_submit_clicksubmit点击提交loan_amount, term_days, account_type, coupon_selected
提现接口结果withdraw_submit_resultresult接口返回result, error_code, error_msg, order_id
PIN 弹窗withdraw_pin_popup_viewpopup_viewPIN 弹窗展示source_page
PIN 提交withdraw_pin_submit_clickpopup_clickPIN 确认pin_filled
提现结果页withdraw_result_page_viewview结果页展示result, order_id, disbursement_status
结果页操作withdraw_result_page_clickclick返回首页/查看合同/帮助/绑卡content, result
结果页弹窗曝光withdraw_result_popup_viewpopup_view评价/提额/邀请/活动弹窗展示popup_type
结果页弹窗点击withdraw_result_popup_clickpopup_click弹窗按钮/关闭popup_type, action_type

6.5 KYC/BVN/NIN/人脸

覆盖端:

  • roovault: BVNVerify, NINVerify, BVNandNINVerify, face_guide, face_reg
  • wp_h5: faceVerification
  • cash_center: verifyOtp, thirdBankAuth 中的第三方身份/OTP 授权
页面/模块事件名类型触发时机必传字段
BVN 页kyc_bvn_page_viewview页面展示identity_type=bvn
BVN 输入kyc_bvn_input_focusinput聚焦content
BVN 输入失焦kyc_bvn_input_blurinput失焦identity_filled, identity_length
BVN 清空kyc_bvn_input_clear_clickclick点击清空content
使用 NINkyc_bvn_use_nin_clickclick切换到 NINsource_identity_type
拨号说明kyc_identity_dial_clickclick点击拨号说明identity_type, dial_code
BVN 提交kyc_bvn_confirm_clicksubmit点击确认identity_filled
NIN 页kyc_nin_page_viewview页面展示identity_type=nin
NIN 提交kyc_nin_confirm_clicksubmit点击确认identity_filled
BVN+NIN 页kyc_bvn_nin_page_viewview页面展示identity_type=bvn_nin
类型切换kyc_identity_type_clickclickBVN/NIN 类型切换identity_type
KYC 接口结果kyc_identity_submit_resultresult接口返回identity_type, result, error_code, error_msg
人脸引导页face_guide_page_viewview引导页展示source_page
人脸采集页face_capture_page_viewview采集页展示liveness_provider
人脸上传耗时face_upload_resultresult上传完成result, duration_ms, error_code
人脸识别结果face_verify_resultresult识别返回result, error_code, error_msg

6.6 授信申请资料

覆盖端:

  • roovault: Work_info, Person_Info, Emergency_Contact, BankAccount
页面/模块事件名类型触发时机必传字段
工作信息页apply_work_info_page_viewview页面展示source_page
工作信息项apply_work_info_field_clickclick/input选择或输入字段field_name, filled
工作信息提交apply_work_info_submit_clicksubmit点击下一步completed_field_count, missing_field_count
个人信息页apply_person_info_page_viewview页面展示source_page
个人信息项apply_person_info_field_clickclick/input选择或输入字段field_name, filled
个人信息提交apply_person_info_submit_clicksubmit点击下一步completed_field_count, missing_field_count
紧急联系人页apply_emergency_contact_page_viewview页面展示source_page
联系人字段apply_emergency_contact_field_blurinput字段失焦field_name, filled, relation_type
联系人提交apply_emergency_contact_submit_clicksubmit点击完成completed_field_count, missing_field_count
申请资料结果apply_profile_submit_resultresult接口返回step_name, result, error_code, error_msg

注意:当前存在把收入、地址、联系人手机号、姓名拼到事件名的实现,必须改为 field_name + filled + bucket/length

6.7 启动/登录/权限

覆盖端:

  • roovault: startup, register, VerifyCode, PrivacyPolicy, PermissionsAuth
页面/模块事件名类型触发时机必传字段
启动页startup_page_viewviewApp 启动页展示app_version, channel
启动页离开startup_page_leaveleave跳转下一页duration_ms, next_page
注册登录页login_page_viewview页面展示source_page
手机号输入login_phone_blurinput失焦phone_filled, phone_length
获取验证码login_get_otp_clickclick点击获取验证码otp_type
语音验证码login_voice_otp_clickclick点击语音验证码otp_type=voice
OTP 页login_otp_page_viewviewOTP 页展示otp_type
OTP 提交结果login_otp_submit_resultresult登录接口返回result, error_code, error_msg
隐私协议页privacy_policy_page_viewview协议展示version
同意隐私协议privacy_policy_agree_clickclick点击同意version
权限页permissions_auth_page_viewview权限页展示permission_list
权限同意/拒绝permissions_auth_action_clickclick点击同意/拒绝action, permission_name

6.8 首页/账户/运营位

覆盖端:

  • roovault: MainActivity, MineFragment, banner/operator/message
页面/模块事件名类型触发时机必传字段
首页home_page_viewview首页展示user_status, loan_status
底部 Tabhome_tab_clickclick点击 tabtab_name
账户页account_page_viewview账户页展示loan_status
贷款历史account_loan_history_clickclick点击贷款历史content
还款历史account_repayment_history_clickclick点击还款历史content
运营 banner 曝光operation_banner_viewviewbanner 曝光banner_id, banner_position, action_type
运营 banner 点击operation_banner_clickclickbanner 点击banner_id, banner_position, action_type, target_page
消息页message_page_viewview消息页展示message_type
消息点击message_item_clickclick点击消息message_type, message_id

6.9 补件/客诉/增信

覆盖端:

  • wp_h5: uploadDocuments, complaint, increaseLimit, recredit
页面/模块事件名类型触发时机必传字段
补件页upload_documents_page_viewview页面展示document_type, required_count
选择文件upload_documents_choose_file_clickclick点击选择文件document_type, file_type
上传结果upload_documents_file_resultresult上传成功/失败document_type, result, error_code, error_msg
提交补件upload_documents_submit_clicksubmit点击提交uploaded_count, required_count
客诉页complaint_page_viewview页面展示source_page
客诉提交complaint_submit_clicksubmit点击提交complaint_type, has_attachment
客诉结果complaint_submit_resultresult接口返回result, error_code, error_msg
增信页increase_limit_page_viewview页面展示source_page, material_required
增信提交increase_limit_submit_clicksubmit点击提交material_count
增信结果increase_limit_submit_resultresult接口返回result, error_code, error_msg

6.10 浏览器/性能监控

覆盖端:

  • wp_h5: browser_info, web_performance_metrics
页面/模块事件名类型触发时机必传字段
浏览器信息browser_inforesult页面初始化后browser_name, browser_version, os, user_agent_hash
页面性能web_performance_metricsperformance页面加载完成dns_ms, tcp_ms, request_ms, response_ms, dom_ready_ms, load_ms, resource_count
接口性能api_response_timeperformance关键接口完成api_name, duration_ms, result, error_code

7. 全新上线要求

本期为全新上线,不考虑旧版本兼容,不要求新旧事件并行上报。

  1. 全部埋点按本需求的新事件名、新字段、新触发规则实现。
  2. 不新增 legacy_event_nameold_event_name 等兼容字段。
  3. 当前代码里已有的旧事件可作为实现参考,但不能作为验收口径。
  4. 数据验收只校验新事件是否到达、字段是否完整、值是否符合枚举。
  5. 上线前需要冻结一版埋点字典,研发、测试、数据看板均以该字典为准。

8. 技术改造要求

8.1 H5

  1. cash_center 新增统一 track(event) 方法,替代散落的旧 reportApi 调用。
  2. wp_h5 保留 reportTracking,但不再强制把业务字段改名成 <eventName>_<field>,新增标准字段透传能力。
  3. 路由层统一处理 page_view/page_leave,页面只补充业务字段。
  4. sendBeacon 或 App bridge 可用时,页面离开事件优先用可靠上报。
  5. 开发环境允许控制台打印,同时提供 mock 上报面板。

8.2 Android

  1. SensorsApiHelper 增加支持 Map<String, Object> eventData 的重载。
  2. H5 Bridge 的 logClickEvent/logViewEvent/startPage/endPage 支持透传 event_data
  3. 原生自动采集保留,但关键业务节点必须手动埋点。
  4. SDK 网络开关状态需要有可观测日志,避免事件缓存不上报。

8.3 后端/大数据

  1. /dc/buriedPointBatch/v2 作为统一 H5 上报接口。
  2. 服务端对敏感字段做拦截校验:命中卡号、CVV、手机号、BVN/NIN 明文则拒收或脱敏。
  3. 提供埋点验收查询能力:按 uid/session_id/event_name 查询最近事件。
  4. 数据字典维护事件名、页面名、字段名、枚举值、负责人、上线版本。

9. 验收标准

9.1 功能验收

标准
页面进入核心页面 100% 有 *_page_view
页面离开核心页面 100% 有 *_page_leave 或可靠替代
点击行为核心 CTA 100% 有 click/submit
结果行为所有提交类接口 100% 有 result
字段完整性公共字段完整率不低于 99%
敏感信息event_nameevent_data 不出现明文敏感信息
失败隔离埋点接口失败不影响业务
去重同一页面进入不重复上报,KeepAlive 场景需明确规则

9.2 数据验收

场景核对方式
还款漏斗repayment_method_page_view -> repayment_confirm_click -> repayment_submit_result -> repayment_result_page_view
绑卡漏斗bank_card_page_view -> bank_card_submit_click -> bank_card_submit_result -> bank_card_result_page_view
提现漏斗withdraw_page_view -> withdraw_submit_click -> withdraw_submit_result -> withdraw_result_page_view
KYC 漏斗kyc_*_page_view -> kyc_*_confirm_click -> kyc_identity_submit_result
登录漏斗login_page_view -> login_get_otp_click -> login_otp_submit_result

9.3 抽样验收

  1. 每个端至少抽 5 个真实用户会话。
  2. 每个核心场景至少覆盖成功、失败、取消/返回 3 类路径。
  3. 对比前端调试日志、大数据接收日志和分析报表,事件数差异不得超过 2%。

10. 优先级

P0

  1. 去除所有拼进 event_name 的敏感明文。
  2. 统一新增事件的公共字段。
  3. 为还款、绑卡、提现、KYC、登录补齐 page_view/click/result。
  4. 建立验收查询和开发调试能力。

P1

  1. cash_center 升级到 /dc/buriedPointBatch/v2
  2. H5 路由级 page_view/page_leave 统一。
  3. Android SensorsApiHelper 支持结构化字段。
  4. 补齐补件、客诉、增信、运营位字段。

P2

  1. 建立埋点字典和版本管理。
  2. 建立新事件的数据看板和口径说明。
  3. 性能和接口耗时统一埋点。

11. 交付物

  1. 埋点字典:事件名、页面、场景、字段、枚举、触发时机。
  2. 技术改造:H5 统一 SDK、Android 结构化事件、后端敏感字段校验。
  3. 验收用例:按场景覆盖成功/失败/取消路径。
  4. 数据看板:核心漏斗、失败原因、页面停留、渠道维度、版本维度。