import analytics from './index'
import { PERFORMANCE_EVENTS } from '../../constants/events'

/**
 * 性能追踪器
 */
class PerformanceTracker {
  constructor() {
    // 页面加载开始时间
    this.pageLoadStartTimes = new Map()
  }

  /**
   * 页面开始加载
   * @param {string} pagePath - 页面路径
   */
  startPageLoad(pagePath) {
    this.pageLoadStartTimes.set(pagePath, Date.now())
  }

  /**
   * 页面加载完成
   * @param {string} pagePath - 页面路径
   */
  endPageLoad(pagePath) {
    const startTime = this.pageLoadStartTimes.get(pagePath)
    if (!startTime) return

    const loadTime = Date.now() - startTime
    this.pageLoadStartTimes.delete(pagePath)

    analytics.track(PERFORMANCE_EVENTS.PAGE_LOAD_PERFORMANCE, {
      page_path: pagePath,
      load_time: loadTime,
      load_time_range: this._getLoadTimeRange(loadTime),
    })
  }

  /**
   * 追踪API响应时间
   * @param {object} params - 参数
   */
  trackApiPerformance(params) {
    const {
      path,
      method,
      duration,
      success,
    } = params

    analytics.track(PERFORMANCE_EVENTS.API_PERFORMANCE, {
      api_path: path,
      api_method: method,
      response_time: duration,
      response_time_range: this._getLoadTimeRange(duration),
      is_success: success,
    })
  }

  /**
   * 获取加载时间范围
   */
  _getLoadTimeRange(ms) {
    if (ms < 500) return '0-500ms'
    if (ms < 1000) return '500ms-1s'
    if (ms < 2000) return '1-2s'
    if (ms < 3000) return '2-3s'
    if (ms < 5000) return '3-5s'
    return '5s+'
  }
}

// 导出单例
export default new PerformanceTracker()