@quantabit/funnel-sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +68 -0
- package/dist/index.cjs +1325 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.esm.js +1293 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/styles.css +1 -0
- package/package.json +83 -0
- package/types/index.d.ts +41 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/services/funnelApi.js","../src/types/index.js","../src/i18n/index.js","../src/hooks/useFunnel.js","../src/components/FunnelChart.jsx","../src/index.js"],"sourcesContent":["/**\n * Funnel SDK - API 客户端 (隐私合规增强版)\n * 漏斗分析系统后端接口封装\n *\n * 隐私保护:\n * - 漏斗步骤追踪需要 analytics 同意\n * - 用户掉漏数据自动脱敏\n * - 分析报告导出支持匿名化\n *\n * 使用 BaseApiClient 基类简化代码\n */\n\nimport { BaseApiClient } from \"@quantabit/sdk-config\";\n\n// 可选依赖:隐私合规工具\nlet consentManager = null;\nimport(\"@quantabit/sdk-config\")\n .then((sdkConfig) => {\n consentManager = sdkConfig.consentManager;\n })\n .catch(() => {\n /* 静默降级 */\n });\n\n/**\n * 漏斗 API 客户端\n */\nexport class FunnelApiClient extends BaseApiClient {\n constructor(config = {}) {\n super(\"/funnel\", config);\n }\n\n // ============ 漏斗管理 ============\n\n /**\n * 获取漏斗列表\n * @param {Object} params - 查询参数\n */\n async getFunnels(params = {}) {\n return this.get(\"/list\", params);\n }\n\n /**\n * 获取漏斗详情\n * @param {string} funnelId - 漏斗 ID\n */\n async getFunnel(funnelId) {\n return this.get(`/${funnelId}`);\n }\n\n /**\n * 创建漏斗\n * @param {Object} data - 漏斗数据\n */\n async createFunnel(data) {\n return this.post(\"/\", data);\n }\n\n /**\n * 更新漏斗\n * @param {string} funnelId - 漏斗 ID\n * @param {Object} updates - 更新数据\n */\n async updateFunnel(funnelId, updates) {\n return this.put(`/${funnelId}`, updates);\n }\n\n /**\n * 删除漏斗\n * @param {string} funnelId - 漏斗 ID\n */\n async deleteFunnel(funnelId) {\n return this.delete(`/${funnelId}`);\n }\n\n /**\n * 复制漏斗\n * @param {string} funnelId - 漏斗 ID\n * @param {string} name - 新名称\n */\n async duplicateFunnel(funnelId, name) {\n return this.post(`/${funnelId}/duplicate`, { name });\n }\n\n // ============ 漏斗分析 ============\n\n /**\n * 获取漏斗分析\n * @param {string} funnelId - 漏斗 ID\n * @param {Object} params - 分析参数\n */\n async analyze(funnelId, params = {}) {\n // 分析功能需要 analytics 同意\n if (consentManager && !consentManager.hasConsent(\"analytics\")) {\n console.debug(\"[Funnel] 漏斗分析被跳过(需要 analytics 同意)\");\n return { code: -1, message: \"consent_required\" };\n }\n return this.post(`/${funnelId}/analyze`, params);\n }\n\n /**\n * 获取步骤转化率\n * @param {string} funnelId - 漏斗 ID\n * @param {Object} params - 查询参数\n */\n async getConversionRate(funnelId, params = {}) {\n return this.get(`/${funnelId}/conversion`, params);\n }\n\n /**\n * 获取趋势数据\n * @param {string} funnelId - 漏斗 ID\n * @param {Object} params - 查询参数\n */\n async getTrend(funnelId, params = {}) {\n return this.get(`/${funnelId}/trend`, params);\n }\n\n /**\n * 获取对比分析\n * @param {string} funnelId - 漏斗 ID\n * @param {Object} params - 对比参数\n */\n async compare(funnelId, params = {}) {\n return this.post(`/${funnelId}/compare`, params);\n }\n\n // ============ 掉漏分析 ============\n\n /**\n * 获取掉漏用户\n * @param {string} funnelId - 漏斗 ID\n * @param {number} stepIndex - 步骤索引\n * @param {Object} params - 查询参数\n */\n async getDropoffUsers(funnelId, stepIndex, params = {}) {\n return this.get(`/${funnelId}/dropoff/${stepIndex}/users`, params);\n }\n\n /**\n * 获取掉漏原因分析\n * @param {string} funnelId - 漏斗 ID\n * @param {number} stepIndex - 步骤索引\n */\n async getDropoffReasons(funnelId, stepIndex) {\n return this.get(`/${funnelId}/dropoff/${stepIndex}/reasons`);\n }\n\n /**\n * 获取掉漏用户画像\n * @param {string} funnelId - 漏斗 ID\n * @param {number} stepIndex - 步骤索引\n */\n async getDropoffProfile(funnelId, stepIndex) {\n return this.get(`/${funnelId}/dropoff/${stepIndex}/profile`);\n }\n\n // ============ 路径分析 ============\n\n /**\n * 获取转化路径\n * @param {string} funnelId - 漏斗 ID\n * @param {Object} params - 查询参数\n */\n async getConversionPaths(funnelId, params = {}) {\n return this.get(`/${funnelId}/paths`, params);\n }\n\n /**\n * 获取异常路径\n * @param {string} funnelId - 漏斗 ID\n */\n async getAbnormalPaths(funnelId) {\n return this.get(`/${funnelId}/paths/abnormal`);\n }\n\n // ============ 分组分析 ============\n\n /**\n * 按属性分组分析\n * @param {string} funnelId - 漏斗 ID\n * @param {string} property - 分组属性\n * @param {Object} params - 分析参数\n */\n async analyzeByProperty(funnelId, property, params = {}) {\n return this.post(`/${funnelId}/analyze/group`, { property, ...params });\n }\n\n /**\n * 按人群分组分析\n * @param {string} funnelId - 漏斗 ID\n * @param {string[]} segmentIds - 分群 ID 列表\n * @param {Object} params - 分析参数\n */\n async analyzeBySegments(funnelId, segmentIds, params = {}) {\n return this.post(`/${funnelId}/analyze/segments`, {\n segment_ids: segmentIds,\n ...params,\n });\n }\n\n // ============ 导出 ============\n\n /**\n * 导出分析报告\n * @param {string} funnelId - 漏斗 ID\n * @param {Object} options - 导出选项\n */\n async exportReport(funnelId, options = {}) {\n return this.post(`/${funnelId}/export`, options);\n }\n\n // ============ 隐私合规扩展 ============\n\n /**\n * 漏斗步骤追踪 — 需要 analytics 同意\n * 识别用户进入了漏斗的哪个步骤\n * @param {string} funnelId - 漏斗 ID\n * @param {number} stepIndex - 步骤索引\n * @param {object} metadata - 额外元数据\n */\n async trackStep(funnelId, stepIndex, metadata = {}) {\n if (consentManager && !consentManager.hasConsent(\"analytics\")) {\n return { code: -1, message: \"consent_required\" };\n }\n return this.post(`/${funnelId}/steps/${stepIndex}/track`, metadata);\n }\n\n /**\n * 获取掉漏用户(匿名化) — 降低 PII 暴露风险\n * @param {string} funnelId\n * @param {number} stepIndex\n * @param {object} params\n */\n async getDropoffUsersAnonymized(funnelId, stepIndex, params = {}) {\n const result = await this.getDropoffUsers(funnelId, stepIndex, params);\n if (result?.data?.users) {\n result.data.users = result.data.users.map((u) => ({\n ...u,\n user_id: u.user_id ? `user_${u.user_id.toString().slice(-4)}` : \"anon\",\n email: u.email ? \"***@***\" : undefined,\n did: u.did ? `${u.did.slice(0, 8)}...` : undefined,\n }));\n }\n return result;\n }\n\n /**\n * 获取隐私数据声明\n */\n getDataDisclosure() {\n return {\n sdk: \"@quantabit/funnel-sdk\",\n privacyLevel: \"analytics\",\n consentRequired: true,\n collected: [\n {\n type: \"funnel_steps\",\n description: \"Which funnel steps users reach\",\n retention: \"90 days\",\n },\n {\n type: \"conversion_rate\",\n description: \"Aggregated conversion metrics\",\n retention: \"1 year\",\n },\n {\n type: \"dropoff_reasons\",\n description: \"Why users abandon funnels\",\n retention: \"90 days\",\n },\n ],\n gdprCapabilities: [\"delete\", \"anonymize\"],\n anonymization:\n \"User identifiers are hashed in reports; getDropoffUsersAnonymized() strips PII\",\n };\n }\n\n /**\n * 清除用户漏斗追踪数据 — GDPR Art.17\n */\n async clearData() {\n try {\n return await this.post(\"/privacy/clear-my-data\");\n } catch (e) {\n return {\n success: true,\n note: \"Funnel data is aggregated; individual records anonymized\",\n };\n }\n }\n}\n\n// 创建默认实例\nexport const funnelApi = new FunnelApiClient();\n\nexport default funnelApi;\n","/**\n * Funnel SDK - 类型定义\n */\n\n// 漏斗类型\nexport const FunnelType = {\n REGISTRATION: 'registration',\n PURCHASE: 'purchase',\n ONBOARDING: 'onboarding',\n ACTIVATION: 'activation',\n CUSTOM: 'custom',\n};\n\n// 步骤状态\nexport const StepStatus = {\n NOT_STARTED: 'not_started',\n IN_PROGRESS: 'in_progress',\n COMPLETED: 'completed',\n DROPPED: 'dropped',\n};\n\n// 时间窗口\nexport const TimeWindow = {\n SESSION: 'session',\n DAY: 'day',\n WEEK: 'week',\n MONTH: 'month',\n UNLIMITED: 'unlimited',\n};\n\nexport default { FunnelType, StepStatus, TimeWindow };\n","/**\n * Funnel SDK - 国际化\n * 转化漏斗分析多语言支持\n */\n\nexport const SUPPORTED_LANGUAGES = ['en', 'zh', 'ja', 'ko'];\n\nexport const messages = {\n zh: {\n // 漏斗基础\n funnel: '转化漏斗',\n funnels: '漏斗列表',\n createFunnel: '创建漏斗',\n editFunnel: '编辑漏斗',\n deleteFunnel: '删除漏斗',\n funnelName: '漏斗名称',\n funnelDesc: '漏斗描述',\n \n // 步骤\n step: '步骤',\n steps: '步骤',\n addStep: '添加步骤',\n removeStep: '移除步骤',\n stepName: '步骤名称',\n stepEvent: '步骤事件',\n firstStep: '第一步',\n lastStep: '最后一步',\n \n // 转化指标\n conversion: '转化',\n conversionRate: '转化率',\n dropOff: '流失',\n dropOffRate: '流失率',\n completed: '完成',\n abandoned: '放弃',\n \n // 时间\n timeWindow: '时间窗口',\n hour: '小时',\n day: '天',\n week: '周',\n month: '月',\n averageTime: '平均耗时',\n medianTime: '中位耗时',\n \n // 分析\n analyze: '分析',\n analysis: '漏斗分析',\n comparison: '对比分析',\n trends: '趋势分析',\n breakdown: '细分分析',\n \n // 维度\n dimension: '维度',\n byChannel: '按渠道',\n byDevice: '按设备',\n byRegion: '按地区',\n bySegment: '按分群',\n \n // 统计\n totalUsers: '总用户数',\n completedUsers: '完成用户',\n lostUsers: '流失用户',\n overall: '总体转化',\n stepByStep: '逐步转化',\n \n // 建议\n insights: '洞察',\n recommendations: '优化建议',\n bottleneck: '瓶颈点',\n improvement: '提升空间',\n \n // 操作\n save: '保存',\n cancel: '取消',\n export: '导出',\n refresh: '刷新',\n \n // 状态\n loading: '加载中...',\n noData: '暂无数据',\n error: '加载失败',\n \n // 图表\n chart: '图表',\n bar: '柱状图',\n line: '折线图',\n table: '表格',\n },\n en: {\n funnel: 'Funnel',\n funnels: 'Funnels',\n createFunnel: 'Create Funnel',\n editFunnel: 'Edit Funnel',\n deleteFunnel: 'Delete Funnel',\n funnelName: 'Funnel Name',\n funnelDesc: 'Description',\n \n step: 'Step',\n steps: 'Steps',\n addStep: 'Add Step',\n removeStep: 'Remove Step',\n stepName: 'Step Name',\n stepEvent: 'Event',\n firstStep: 'First Step',\n lastStep: 'Last Step',\n \n conversion: 'Conversion',\n conversionRate: 'Conversion Rate',\n dropOff: 'Drop-off',\n dropOffRate: 'Drop-off Rate',\n completed: 'Completed',\n abandoned: 'Abandoned',\n \n timeWindow: 'Time Window',\n hour: 'Hour',\n day: 'Day',\n week: 'Week',\n month: 'Month',\n averageTime: 'Avg. Time',\n medianTime: 'Median Time',\n \n analyze: 'Analyze',\n analysis: 'Funnel Analysis',\n comparison: 'Comparison',\n trends: 'Trends',\n breakdown: 'Breakdown',\n \n dimension: 'Dimension',\n byChannel: 'By Channel',\n byDevice: 'By Device',\n byRegion: 'By Region',\n bySegment: 'By Segment',\n \n totalUsers: 'Total Users',\n completedUsers: 'Completed',\n lostUsers: 'Lost',\n overall: 'Overall',\n stepByStep: 'Step by Step',\n \n insights: 'Insights',\n recommendations: 'Recommendations',\n bottleneck: 'Bottleneck',\n improvement: 'Improvement',\n \n save: 'Save',\n cancel: 'Cancel',\n export: 'Export',\n refresh: 'Refresh',\n \n loading: 'Loading...',\n noData: 'No Data',\n error: 'Error',\n \n chart: 'Chart',\n bar: 'Bar',\n line: 'Line',\n table: 'Table',\n },\n ja: {\n funnel: 'ファネル',\n funnels: 'ファネル一覧',\n createFunnel: 'ファネル作成',\n editFunnel: 'ファネル編集',\n deleteFunnel: 'ファネル削除',\n funnelName: 'ファネル名',\n funnelDesc: '説明',\n \n step: 'ステップ',\n steps: 'ステップ',\n addStep: 'ステップ追加',\n removeStep: 'ステップ削除',\n stepName: 'ステップ名',\n stepEvent: 'イベント',\n firstStep: '最初のステップ',\n lastStep: '最後のステップ',\n \n conversion: 'コンバージョン',\n conversionRate: 'コンバージョン率',\n dropOff: '離脱',\n dropOffRate: '離脱率',\n completed: '完了',\n abandoned: '離脱',\n \n timeWindow: '時間範囲',\n hour: '時間',\n day: '日',\n week: '週',\n month: '月',\n averageTime: '平均時間',\n medianTime: '中央値',\n \n analyze: '分析',\n analysis: 'ファネル分析',\n comparison: '比較分析',\n trends: 'トレンド',\n breakdown: '内訳',\n \n dimension: 'ディメンション',\n byChannel: 'チャネル別',\n byDevice: 'デバイス別',\n byRegion: '地域別',\n bySegment: 'セグメント別',\n \n totalUsers: '総ユーザー数',\n completedUsers: '完了ユーザー',\n lostUsers: '離脱ユーザー',\n overall: '全体',\n stepByStep: 'ステップ別',\n \n insights: 'インサイト',\n recommendations: '改善提案',\n bottleneck: 'ボトルネック',\n improvement: '改善余地',\n \n save: '保存',\n cancel: 'キャンセル',\n export: 'エクスポート',\n refresh: '更新',\n \n loading: '読み込み中...',\n noData: 'データなし',\n error: 'エラー',\n \n chart: 'チャート',\n bar: '棒グラフ',\n line: '折れ線グラフ',\n table: 'テーブル',\n },\n ko: {\n funnel: '퍼널',\n funnels: '퍼널 목록',\n createFunnel: '퍼널 생성',\n editFunnel: '퍼널 편집',\n deleteFunnel: '퍼널 삭제',\n funnelName: '퍼널 이름',\n funnelDesc: '설명',\n \n step: '단계',\n steps: '단계',\n addStep: '단계 추가',\n removeStep: '단계 제거',\n stepName: '단계 이름',\n stepEvent: '이벤트',\n firstStep: '첫 번째 단계',\n lastStep: '마지막 단계',\n \n conversion: '전환',\n conversionRate: '전환율',\n dropOff: '이탈',\n dropOffRate: '이탈률',\n completed: '완료',\n abandoned: '이탈',\n \n timeWindow: '시간 범위',\n hour: '시간',\n day: '일',\n week: '주',\n month: '월',\n averageTime: '평균 시간',\n medianTime: '중앙값',\n \n analyze: '분석',\n analysis: '퍼널 분석',\n comparison: '비교 분석',\n trends: '트렌드',\n breakdown: '세부 분석',\n \n dimension: '차원',\n byChannel: '채널별',\n byDevice: '기기별',\n byRegion: '지역별',\n bySegment: '세그먼트별',\n \n totalUsers: '총 사용자',\n completedUsers: '완료 사용자',\n lostUsers: '이탈 사용자',\n overall: '전체',\n stepByStep: '단계별',\n \n insights: '인사이트',\n recommendations: '권장 사항',\n bottleneck: '병목 지점',\n improvement: '개선 여지',\n \n save: '저장',\n cancel: '취소',\n export: '내보내기',\n refresh: '새로고침',\n \n loading: '로딩 중...',\n noData: '데이터 없음',\n error: '오류',\n \n chart: '차트',\n bar: '막대 차트',\n line: '선 차트',\n table: '테이블',\n },\n};\n\nlet currentLanguage = 'zh';\n\nexport function setLanguage(lang) {\n if (SUPPORTED_LANGUAGES.includes(lang)) currentLanguage = lang;\n}\n\nexport function getLanguage() {\n return currentLanguage;\n}\n\nexport function t(key) {\n return (messages[currentLanguage] || messages.en)[key] || key;\n}\n\nexport default { messages, SUPPORTED_LANGUAGES, setLanguage, getLanguage, t };\n","/**\n * Funnel SDK - React Hooks\n * 转化漏斗分析相关的状态管理\n */\n\nimport { useState, useEffect, useCallback, useMemo } from 'react';\nimport { funnelApi } from '../services/funnelApi';\n\n/**\n * 获取漏斗列表\n */\nexport function useFunnels(params = {}) {\n const [funnels, setFunnels] = useState([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n const fetchFunnels = useCallback(async () => {\n try {\n setLoading(true);\n const response = await funnelApi.getFunnels(params);\n setFunnels(response.data || []);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [params]);\n\n useEffect(() => {\n fetchFunnels();\n }, []);\n\n return { funnels, loading, error, refresh: fetchFunnels };\n}\n\n/**\n * 获取单个漏斗详情\n */\nexport function useFunnel(funnelId) {\n const [funnel, setFunnel] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n const fetchFunnel = useCallback(async () => {\n if (!funnelId) return;\n try {\n setLoading(true);\n const response = await funnelApi.getFunnel(funnelId);\n setFunnel(response);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [funnelId]);\n\n useEffect(() => {\n fetchFunnel();\n }, [fetchFunnel]);\n\n return { funnel, loading, error, refresh: fetchFunnel };\n}\n\n/**\n * 漏斗分析\n */\nexport function useFunnelAnalysis(funnelId, options = {}) {\n const [analysis, setAnalysis] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n \n const { timeWindow = '7d', dimension = null, segment = null } = options;\n\n const analyze = useCallback(async () => {\n if (!funnelId) return;\n try {\n setLoading(true);\n const response = await funnelApi.analyze(funnelId, {\n timeWindow,\n dimension,\n segment,\n });\n setAnalysis(response);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [funnelId, timeWindow, dimension, segment]);\n\n useEffect(() => {\n analyze();\n }, [analyze]);\n\n // 计算派生数据\n const derivedData = useMemo(() => {\n if (!analysis || !analysis.steps) return null;\n\n const steps = analysis.steps;\n const totalUsers = steps[0]?.users || 0;\n const completedUsers = steps[steps.length - 1]?.users || 0;\n const overallConversion = totalUsers > 0 ? completedUsers / totalUsers : 0;\n\n // 找出最大流失步骤\n let maxDropOffStep = null;\n let maxDropOffRate = 0;\n \n steps.forEach((step, index) => {\n if (index > 0) {\n const prevUsers = steps[index - 1].users;\n const dropOffRate = prevUsers > 0 ? (prevUsers - step.users) / prevUsers : 0;\n if (dropOffRate > maxDropOffRate) {\n maxDropOffRate = dropOffRate;\n maxDropOffStep = { ...step, dropOffRate, fromStep: steps[index - 1].name };\n }\n }\n });\n\n return {\n totalUsers,\n completedUsers,\n overallConversion,\n bottleneck: maxDropOffStep,\n stepConversions: steps.map((step, index) => ({\n ...step,\n conversionFromPrev: index > 0 && steps[index - 1].users > 0\n ? step.users / steps[index - 1].users\n : 1,\n conversionFromFirst: totalUsers > 0 ? step.users / totalUsers : 0,\n })),\n };\n }, [analysis]);\n\n return {\n analysis,\n derivedData,\n loading,\n error,\n refresh: analyze,\n };\n}\n\n/**\n * 步骤追踪\n */\nexport function useStepTracking(funnelId) {\n const [currentStep, setCurrentStep] = useState(0);\n const [trackedSteps, setTrackedSteps] = useState([]);\n\n // 追踪步骤\n const trackStep = useCallback(async (stepName, metadata = {}) => {\n try {\n await funnelApi.trackStep(funnelId, stepName, {\n ...metadata,\n timestamp: Date.now(),\n });\n setTrackedSteps(prev => [...prev, { name: stepName, timestamp: Date.now() }]);\n setCurrentStep(prev => prev + 1);\n } catch (err) {\n console.error('Track step error:', err);\n }\n }, [funnelId]);\n\n // 重置追踪\n const resetTracking = useCallback(() => {\n setCurrentStep(0);\n setTrackedSteps([]);\n }, []);\n\n return {\n currentStep,\n trackedSteps,\n trackStep,\n resetTracking,\n };\n}\n\n/**\n * 流失分析\n */\nexport function useDropOffAnalysis(funnelId, stepIndex, options = {}) {\n const [dropOffData, setDropOffData] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n const analyze = useCallback(async () => {\n if (!funnelId || stepIndex === undefined) return;\n try {\n setLoading(true);\n const response = await funnelApi.getDropOff(funnelId, stepIndex, options);\n setDropOffData(response);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [funnelId, stepIndex, options]);\n\n useEffect(() => {\n analyze();\n }, [analyze]);\n\n return { dropOffData, loading, error, refresh: analyze };\n}\n\n/**\n * 漏斗对比分析\n */\nexport function useFunnelComparison(funnelId, compareOptions = {}) {\n const [comparison, setComparison] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n const { segments = [], timeRanges = [] } = compareOptions;\n\n const compare = useCallback(async () => {\n if (!funnelId) return;\n try {\n setLoading(true);\n const response = await funnelApi.compare(funnelId, { segments, timeRanges });\n setComparison(response);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [funnelId, segments, timeRanges]);\n\n useEffect(() => {\n compare();\n }, [compare]);\n\n return { comparison, loading, error, refresh: compare };\n}\n\n/**\n * 漏斗操作(创建、更新、删除)\n */\nexport function useFunnelActions() {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n\n const createFunnel = useCallback(async (data) => {\n try {\n setLoading(true);\n setError(null);\n const result = await funnelApi.createFunnel(data);\n return result;\n } catch (err) {\n setError(err.message);\n throw err;\n } finally {\n setLoading(false);\n }\n }, []);\n\n const updateFunnel = useCallback(async (funnelId, data) => {\n try {\n setLoading(true);\n setError(null);\n const result = await funnelApi.updateFunnel(funnelId, data);\n return result;\n } catch (err) {\n setError(err.message);\n throw err;\n } finally {\n setLoading(false);\n }\n }, []);\n\n const deleteFunnel = useCallback(async (funnelId) => {\n try {\n setLoading(true);\n setError(null);\n await funnelApi.deleteFunnel(funnelId);\n } catch (err) {\n setError(err.message);\n throw err;\n } finally {\n setLoading(false);\n }\n }, []);\n\n return {\n loading,\n error,\n createFunnel,\n updateFunnel,\n deleteFunnel,\n };\n}\n\n","/**\n * Funnel SDK - React 组件\n * 转化漏斗可视化组件\n */\n\nimport React, { useState, useMemo } from 'react';\nimport { useFunnelAnalysis, useFunnelActions } from '../hooks/useFunnel';\nimport { t } from '../i18n';\nimport './FunnelChart.css';\n\n/**\n * 漏斗图组件\n */\nexport function FunnelChart({ funnelId, steps, showLabels = true, animated = true }) {\n const { derivedData, loading, error } = useFunnelAnalysis(funnelId);\n \n const stepsData = steps || (derivedData?.stepConversions || []);\n const maxUsers = stepsData[0]?.users || 1;\n\n if (loading) {\n return (\n <div className=\"eco-funnel-loading\">\n <div className=\"eco-funnel-spinner\" />\n <span>{t('loading')}</span>\n </div>\n );\n }\n\n if (error) {\n return <div className=\"eco-funnel-error\">{error}</div>;\n }\n\n return (\n <div className=\"eco-funnel-chart\">\n <div className=\"eco-funnel-visual\">\n {stepsData.map((step, index) => {\n const widthPercent = (step.users / maxUsers) * 100;\n const conversionRate = step.conversionFromFirst * 100;\n \n return (\n <div \n key={step.id || index} \n className={`eco-funnel-step ${animated ? 'animated' : ''}`}\n style={{ \n '--step-width': `${widthPercent}%`,\n '--step-delay': `${index * 0.1}s`\n }}\n >\n <div className=\"eco-funnel-step-bar\">\n <div className=\"eco-funnel-step-fill\" />\n </div>\n {showLabels && (\n <div className=\"eco-funnel-step-info\">\n <span className=\"eco-funnel-step-name\">{step.name}</span>\n <span className=\"eco-funnel-step-users\">\n {step.users.toLocaleString()}\n </span>\n <span className=\"eco-funnel-step-rate\">\n {conversionRate.toFixed(1)}%\n </span>\n </div>\n )}\n {index > 0 && (\n <div className=\"eco-funnel-dropoff\">\n <span className=\"eco-funnel-dropoff-icon\">↓</span>\n <span className=\"eco-funnel-dropoff-rate\">\n -{((1 - step.conversionFromPrev) * 100).toFixed(1)}%\n </span>\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\n/**\n * 漏斗步骤卡片\n */\nexport function FunnelStepCard({ step, index, isBottleneck = false, onClick }) {\n return (\n <div \n className={`eco-funnel-step-card ${isBottleneck ? 'bottleneck' : ''}`}\n onClick={() => onClick?.(step, index)}\n >\n <div className=\"eco-funnel-step-header\">\n <span className=\"eco-funnel-step-index\">{index + 1}</span>\n <h4 className=\"eco-funnel-step-title\">{step.name}</h4>\n {isBottleneck && (\n <span className=\"eco-funnel-bottleneck-badge\">🔴 {t('bottleneck')}</span>\n )}\n </div>\n \n <div className=\"eco-funnel-step-metrics\">\n <div className=\"eco-funnel-metric\">\n <span className=\"eco-funnel-metric-value\">{step.users.toLocaleString()}</span>\n <span className=\"eco-funnel-metric-label\">{t('totalUsers')}</span>\n </div>\n <div className=\"eco-funnel-metric\">\n <span className=\"eco-funnel-metric-value\">\n {(step.conversionRate * 100).toFixed(1)}%\n </span>\n <span className=\"eco-funnel-metric-label\">{t('conversionRate')}</span>\n </div>\n {step.dropOffRate !== undefined && (\n <div className=\"eco-funnel-metric negative\">\n <span className=\"eco-funnel-metric-value\">\n -{(step.dropOffRate * 100).toFixed(1)}%\n </span>\n <span className=\"eco-funnel-metric-label\">{t('dropOffRate')}</span>\n </div>\n )}\n </div>\n \n {step.averageTime && (\n <div className=\"eco-funnel-step-time\">\n <span>{t('averageTime')}: {formatDuration(step.averageTime)}</span>\n </div>\n )}\n </div>\n );\n}\n\n/**\n * 漏斗概览卡片\n */\nexport function FunnelOverview({ funnelId, title }) {\n const { analysis, derivedData, loading, error } = useFunnelAnalysis(funnelId);\n\n if (loading) {\n return (\n <div className=\"eco-funnel-overview eco-funnel-loading\">\n <div className=\"eco-funnel-spinner\" />\n </div>\n );\n }\n\n if (error) {\n return <div className=\"eco-funnel-overview eco-funnel-error\">{error}</div>;\n }\n\n if (!derivedData) {\n return <div className=\"eco-funnel-overview eco-funnel-empty\">{t('noData')}</div>;\n }\n\n const { totalUsers, completedUsers, overallConversion, bottleneck } = derivedData;\n\n return (\n <div className=\"eco-funnel-overview\">\n <h3 className=\"eco-funnel-overview-title\">{title || t('analysis')}</h3>\n \n <div className=\"eco-funnel-overview-stats\">\n <div className=\"eco-funnel-stat\">\n <span className=\"eco-funnel-stat-value\">{totalUsers.toLocaleString()}</span>\n <span className=\"eco-funnel-stat-label\">{t('totalUsers')}</span>\n </div>\n <div className=\"eco-funnel-stat\">\n <span className=\"eco-funnel-stat-value\">{completedUsers.toLocaleString()}</span>\n <span className=\"eco-funnel-stat-label\">{t('completedUsers')}</span>\n </div>\n <div className=\"eco-funnel-stat highlight\">\n <span className=\"eco-funnel-stat-value\">\n {(overallConversion * 100).toFixed(1)}%\n </span>\n <span className=\"eco-funnel-stat-label\">{t('overall')} {t('conversionRate')}</span>\n </div>\n </div>\n\n {bottleneck && (\n <div className=\"eco-funnel-bottleneck-info\">\n <h4>🔴 {t('bottleneck')}</h4>\n <p>\n {bottleneck.fromStep} → {bottleneck.name}: \n <strong> -{(bottleneck.dropOffRate * 100).toFixed(1)}%</strong> {t('dropOff')}\n </p>\n </div>\n )}\n </div>\n );\n}\n\n/**\n * 漏斗对比图\n */\nexport function FunnelComparison({ data, labels }) {\n if (!data || data.length === 0) {\n return <div className=\"eco-funnel-empty\">{t('noData')}</div>;\n }\n\n const colors = ['#6366f1', '#10b981', '#f59e0b', '#ef4444'];\n\n return (\n <div className=\"eco-funnel-comparison\">\n <div className=\"eco-funnel-comparison-legend\">\n {labels.map((label, i) => (\n <div key={i} className=\"eco-funnel-legend-item\">\n <span \n className=\"eco-funnel-legend-color\"\n style={{ backgroundColor: colors[i % colors.length] }}\n />\n <span>{label}</span>\n </div>\n ))}\n </div>\n \n <div className=\"eco-funnel-comparison-chart\">\n {data[0]?.steps?.map((_, stepIndex) => (\n <div key={stepIndex} className=\"eco-funnel-comparison-row\">\n <div className=\"eco-funnel-comparison-label\">\n {data[0].steps[stepIndex].name}\n </div>\n <div className=\"eco-funnel-comparison-bars\">\n {data.map((funnel, funnelIndex) => {\n const step = funnel.steps[stepIndex];\n const rate = step.conversionRate * 100;\n return (\n <div\n key={funnelIndex}\n className=\"eco-funnel-comparison-bar\"\n style={{\n width: `${rate}%`,\n backgroundColor: colors[funnelIndex % colors.length],\n }}\n >\n <span className=\"eco-funnel-comparison-value\">\n {rate.toFixed(1)}%\n </span>\n </div>\n );\n })}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n\n/**\n * 漏斗构建器\n */\nexport function FunnelBuilder({ initialSteps = [], onSave, onCancel }) {\n const [steps, setSteps] = useState(initialSteps.length > 0 ? initialSteps : [\n { name: '', event: '' },\n { name: '', event: '' },\n ]);\n const [funnelName, setFunnelName] = useState('');\n const { loading, createFunnel } = useFunnelActions();\n\n const addStep = () => {\n setSteps([...steps, { name: '', event: '' }]);\n };\n\n const removeStep = (index) => {\n if (steps.length > 2) {\n setSteps(steps.filter((_, i) => i !== index));\n }\n };\n\n const updateStep = (index, field, value) => {\n const newSteps = [...steps];\n newSteps[index] = { ...newSteps[index], [field]: value };\n setSteps(newSteps);\n };\n\n const handleSave = async () => {\n try {\n const result = await createFunnel({\n name: funnelName,\n steps: steps.filter(s => s.name && s.event),\n });\n onSave?.(result);\n } catch (err) {\n console.error('Save funnel error:', err);\n }\n };\n\n return (\n <div className=\"eco-funnel-builder\">\n <div className=\"eco-funnel-builder-header\">\n <input\n type=\"text\"\n className=\"eco-funnel-name-input\"\n placeholder={t('funnelName')}\n value={funnelName}\n onChange={(e) => setFunnelName(e.target.value)}\n />\n </div>\n\n <div className=\"eco-funnel-builder-steps\">\n {steps.map((step, index) => (\n <div key={index} className=\"eco-funnel-builder-step\">\n <div className=\"eco-funnel-step-number\">{index + 1}</div>\n <div className=\"eco-funnel-step-inputs\">\n <input\n type=\"text\"\n placeholder={t('stepName')}\n value={step.name}\n onChange={(e) => updateStep(index, 'name', e.target.value)}\n />\n <input\n type=\"text\"\n placeholder={t('stepEvent')}\n value={step.event}\n onChange={(e) => updateStep(index, 'event', e.target.value)}\n />\n </div>\n {steps.length > 2 && (\n <button\n className=\"eco-funnel-remove-btn\"\n onClick={() => removeStep(index)}\n >\n ✕\n </button>\n )}\n </div>\n ))}\n </div>\n\n <button className=\"eco-funnel-add-step-btn\" onClick={addStep}>\n + {t('addStep')}\n </button>\n\n <div className=\"eco-funnel-builder-actions\">\n <button className=\"eco-funnel-btn\" onClick={onCancel}>\n {t('cancel')}\n </button>\n <button \n className=\"eco-funnel-btn eco-funnel-btn-primary\"\n onClick={handleSave}\n disabled={loading || !funnelName || steps.some(s => !s.name || !s.event)}\n >\n {loading ? t('loading') : t('save')}\n </button>\n </div>\n </div>\n );\n}\n\n/**\n * 流失详情面板\n */\nexport function DropOffPanel({ funnelId, stepIndex, stepName }) {\n const [activeTab, setActiveTab] = useState('reasons');\n\n return (\n <div className=\"eco-funnel-dropoff-panel\">\n <div className=\"eco-funnel-dropoff-header\">\n <h4>{t('dropOff')} - {stepName}</h4>\n </div>\n\n <div className=\"eco-funnel-dropoff-tabs\">\n <button\n className={activeTab === 'reasons' ? 'active' : ''}\n onClick={() => setActiveTab('reasons')}\n >\n {t('insights')}\n </button>\n <button\n className={activeTab === 'users' ? 'active' : ''}\n onClick={() => setActiveTab('users')}\n >\n {t('lostUsers')}\n </button>\n <button\n className={activeTab === 'recommendations' ? 'active' : ''}\n onClick={() => setActiveTab('recommendations')}\n >\n {t('recommendations')}\n </button>\n </div>\n\n <div className=\"eco-funnel-dropoff-content\">\n {activeTab === 'reasons' && (\n <div className=\"eco-funnel-insights\">\n <p>分析流失用户的行为模式...</p>\n </div>\n )}\n {activeTab === 'users' && (\n <div className=\"eco-funnel-lost-users\">\n <p>展示流失用户列表...</p>\n </div>\n )}\n {activeTab === 'recommendations' && (\n <div className=\"eco-funnel-recommendations\">\n <p>优化建议...</p>\n </div>\n )}\n </div>\n </div>\n );\n}\n\n// 工具函数\nfunction formatDuration(ms) {\n if (ms < 1000) return `${ms}ms`;\n if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`;\n if (ms < 3600000) return `${(ms / 60000).toFixed(1)}m`;\n return `${(ms / 3600000).toFixed(1)}h`;\n}\n\n","/**\n * @quantabit/funnel-sdk\n * Funnel Analysis SDK - Full Version\n */\n\n// API Client\nexport { funnelApi, FunnelApiClient } from './services/funnelApi';\n\n// Types\nexport { FunnelType, StepStatus, TimeWindow } from './types';\n\n// i18n\nexport { messages, SUPPORTED_LANGUAGES, setLanguage, getLanguage, t } from './i18n';\n\n// React Hooks\nexport {\n useFunnels,\n useFunnel,\n useFunnelAnalysis,\n useStepTracking,\n useDropOffAnalysis,\n useFunnelComparison,\n useFunnelActions,\n} from './hooks/useFunnel';\n\n// React Components\nexport {\n FunnelChart,\n FunnelStepCard,\n FunnelOverview,\n FunnelComparison,\n FunnelBuilder,\n DropOffPanel,\n} from './components/FunnelChart';\n\n// Shortcut Methods\nimport { funnelApi } from './services/funnelApi';\n\nexport const analyze = (...args) => funnelApi.analyze(...args);\nexport const getDropOff = (...args) => funnelApi.getDropOff(...args);\nexport const trackStep = (...args) => funnelApi.trackStep(...args);\nexport const getFunnels = (...args) => funnelApi.getFunnels(...args);\nexport const getFunnel = (...args) => funnelApi.getFunnel(...args);\nexport const createFunnel = (...args) => funnelApi.createFunnel(...args);\nexport const updateFunnel = (...args) => funnelApi.updateFunnel(...args);\nexport const deleteFunnel = (...args) => funnelApi.deleteFunnel(...args);\n\nimport \"./styles/funnel.css\";\n"],"names":["consentManager","then","sdkConfig","catch","FunnelApiClient","BaseApiClient","constructor","config","getFunnels","params","get","getFunnel","funnelId","createFunnel","data","post","updateFunnel","updates","put","deleteFunnel","delete","duplicateFunnel","name","analyze","hasConsent","console","debug","code","message","getConversionRate","getTrend","compare","getDropoffUsers","stepIndex","getDropoffReasons","getDropoffProfile","getConversionPaths","getAbnormalPaths","analyzeByProperty","property","analyzeBySegments","segmentIds","segment_ids","exportReport","options","trackStep","metadata","getDropoffUsersAnonymized","result","users","map","u","user_id","toString","slice","email","undefined","did","getDataDisclosure","sdk","privacyLevel","consentRequired","collected","type","description","retention","gdprCapabilities","anonymization","clearData","e","success","note","funnelApi","FunnelType","REGISTRATION","PURCHASE","ONBOARDING","ACTIVATION","CUSTOM","StepStatus","NOT_STARTED","IN_PROGRESS","COMPLETED","DROPPED","TimeWindow","SESSION","DAY","WEEK","MONTH","UNLIMITED","SUPPORTED_LANGUAGES","messages","zh","funnel","funnels","editFunnel","funnelName","funnelDesc","step","steps","addStep","removeStep","stepName","stepEvent","firstStep","lastStep","conversion","conversionRate","dropOff","dropOffRate","completed","abandoned","timeWindow","hour","day","week","month","averageTime","medianTime","analysis","comparison","trends","breakdown","dimension","byChannel","byDevice","byRegion","bySegment","totalUsers","completedUsers","lostUsers","overall","stepByStep","insights","recommendations","bottleneck","improvement","save","cancel","export","refresh","loading","noData","error","chart","bar","line","table","en","ja","ko","currentLanguage","setLanguage","lang","includes","getLanguage","t","key","useFunnels","setFunnels","useState","setLoading","setError","fetchFunnels","useCallback","response","err","useEffect","useFunnel","setFunnel","fetchFunnel","useFunnelAnalysis","setAnalysis","segment","derivedData","useMemo","length","overallConversion","maxDropOffStep","maxDropOffRate","forEach","index","prevUsers","fromStep","stepConversions","conversionFromPrev","conversionFromFirst","useStepTracking","currentStep","setCurrentStep","trackedSteps","setTrackedSteps","timestamp","Date","now","prev","resetTracking","useDropOffAnalysis","dropOffData","setDropOffData","getDropOff","useFunnelComparison","compareOptions","setComparison","segments","timeRanges","useFunnelActions","FunnelChart","showLabels","animated","stepsData","maxUsers","React","createElement","className","widthPercent","id","style","toLocaleString","toFixed","FunnelStepCard","isBottleneck","onClick","formatDuration","FunnelOverview","title","FunnelComparison","labels","colors","label","i","backgroundColor","_","funnelIndex","rate","width","FunnelBuilder","initialSteps","onSave","onCancel","setSteps","event","setFunnelName","filter","updateStep","field","value","newSteps","handleSave","s","placeholder","onChange","target","disabled","some","DropOffPanel","activeTab","setActiveTab","ms","args"],"mappings":"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"}
|