/**
 * 百度统计分析工具
 * 使用前需在百度统计后台创建应用，获取 appKey
 */

// 百度统计小程序 key（需在百度统计后台申请）
const BAIDU_APP_KEY = ''; // TODO: 替换为实际key

// H5 环境使用传统百度统计
const H5_BAIDU_ID = ''; // TODO: 替换为实际id

/**
 * 初始化统计
 */
export function initAnalytics() {
  // #ifdef MP-WEIXIN
  if (BAIDU_APP_KEY) {
    // 微信小程序接入百度统计
    const mtj = require('@baidu/stat-mp');
    mtj.default.init(BAIDU_APP_KEY, {
      autoTrack: true, // 自动采集页面浏览
    });
  }
  // #endif

  // #ifdef H5
  if (H5_BAIDU_ID) {
    // H5 接入百度统计
    const script = document.createElement('script');
    script.src = `https://hm.baidu.com/hm.js?${H5_BAIDU_ID}`;
    document.head.appendChild(script);
  }
  // #endif
}

/**
 * 自定义事件上报
 * @param eventName 事件名称
 * @param params 事件参数
 */
export function trackEvent(eventName: string, params?: Record<string, any>) {
  // #ifdef MP-WEIXIN
  try {
    const mtj = require('@baidu/stat-mp');
    mtj.default.event(eventName, params || {});
  } catch (e) {
    // 静默失败
  }
  // #endif

  // #ifdef H5
  try {
    if ((window as any)._hmt) {
      (window as any)._hmt.push(['_trackEvent', eventName, 'click', JSON.stringify(params || {})]);
    }
  } catch (e) {
    // 静默失败
  }
  // #endif
}

/**
 * 预定义事件常量（业务事件）
 */
export const AnalyticsEvents = {
  // 用户行为
  USER_REGISTER: 'user_register',
  USER_LOGIN: 'user_login',

  // TTS 生成
  TTS_GENERATE_START: 'tts_generate_start',
  TTS_GENERATE_SUCCESS: 'tts_generate_success',
  TTS_GENERATE_FAIL: 'tts_generate_fail',

  // 播放器
  PLAYER_PLAY: 'player_play',
  PLAYER_COMPLETE: 'player_complete',
  PLAYER_FAVORITE: 'player_favorite',
  PLAYER_SHARE: 'player_share',

  // 付费转化
  MEMBER_PAGE_VIEW: 'member_page_view',
  MEMBER_CLICK_BUY: 'member_click_buy',
  MEMBER_PAY_START: 'member_pay_start',
  MEMBER_PAY_SUCCESS: 'member_pay_success',

  // 签到
  SIGN_IN: 'sign_in',

  // 分享裂变
  SHARE_CLICK: 'share_click',
  SHARE_COMPLETE: 'share_complete',
  INVITE_ACCEPT: 'invite_accept',
} as const;

export default { init: initAnalytics, trackEvent, AnalyticsEvents };
