@quantabit/retention-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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/services/retentionApi.js","../src/types/index.js","../src/i18n/index.js","../src/hooks/useRetention.js","../src/components/RetentionChart.jsx","../src/index.js"],"sourcesContent":["/**\n * Retention SDK - API 客户端\n * 用户留存分析系统后端接口封装\n * \n * 使用 BaseApiClient 基类简化代码\n */\n\nimport { BaseApiClient } from '@quantabit/sdk-config';\n\n/**\n * 留存 API 客户端\n */\nexport class RetentionApiClient extends BaseApiClient {\n constructor(config = {}) {\n super('/retention', config);\n }\n\n // ============ 留存分析 ============\n\n /**\n * 获取留存概览\n * @param {Object} params - 查询参数\n */\n async getOverview(params = {}) {\n return this.get('/overview', params);\n }\n\n /**\n * 获取留存率\n * @param {Object} params - 分析参数\n */\n async getRetentionRate(params = {}) {\n return this.post('/rate', params);\n }\n\n /**\n * 获取留存趋势\n * @param {Object} params - 查询参数\n */\n async getRetentionTrend(params = {}) {\n return this.get('/trend', params);\n }\n\n /**\n * 获取日留存\n * @param {Object} params - 查询参数\n */\n async getDailyRetention(params = {}) {\n return this.get('/daily', params);\n }\n\n /**\n * 获取周留存\n * @param {Object} params - 查询参数\n */\n async getWeeklyRetention(params = {}) {\n return this.get('/weekly', params);\n }\n\n /**\n * 获取月留存\n * @param {Object} params - 查询参数\n */\n async getMonthlyRetention(params = {}) {\n return this.get('/monthly', params);\n }\n\n // ============ Cohort 分析 ============\n\n /**\n * 获取 Cohort 分析\n * @param {Object} params - 分析参数\n */\n async getCohortAnalysis(params = {}) {\n return this.post('/cohort', params);\n }\n\n /**\n * 获取 Cohort 列表\n * @param {Object} params - 查询参数\n */\n async getCohorts(params = {}) {\n return this.get('/cohorts', params);\n }\n\n /**\n * 创建 Cohort\n * @param {Object} cohort - Cohort 定义\n */\n async createCohort(cohort) {\n return this.post('/cohorts', cohort);\n }\n\n /**\n * 对比 Cohort\n * @param {string[]} cohortIds - Cohort ID 列表\n * @param {Object} params - 对比参数\n */\n async compareCohorts(cohortIds, params = {}) {\n return this.post('/cohorts/compare', { cohort_ids: cohortIds, ...params });\n }\n\n // ============ 流失分析 ============\n\n /**\n * 获取流失用户\n * @param {Object} params - 查询参数\n */\n async getChurnedUsers(params = {}) {\n return this.get('/churned', params);\n }\n\n /**\n * 获取流失原因分析\n * @param {Object} params - 分析参数\n */\n async getChurnReasons(params = {}) {\n return this.get('/churned/reasons', params);\n }\n\n /**\n * 获取流失预警\n * @param {Object} params - 查询参数\n */\n async getChurnRiskUsers(params = {}) {\n return this.get('/churn-risk', params);\n }\n\n /**\n * 获取流失趋势\n * @param {Object} params - 查询参数\n */\n async getChurnTrend(params = {}) {\n return this.get('/churned/trend', params);\n }\n\n // ============ LTV 分析 ============\n\n /**\n * 获取 LTV 概览\n * @param {Object} params - 查询参数\n */\n async getLTVOverview(params = {}) {\n return this.get('/ltv/overview', params);\n }\n\n /**\n * 获取用户 LTV\n * @param {string} userId - 用户 ID\n */\n async getUserLTV(userId) {\n return this.get(`/ltv/users/${userId}`);\n }\n\n /**\n * 获取 LTV 分布\n * @param {Object} params - 查询参数\n */\n async getLTVDistribution(params = {}) {\n return this.get('/ltv/distribution', params);\n }\n\n /**\n * 预测 LTV\n * @param {Object} params - 预测参数\n */\n async predictLTV(params = {}) {\n return this.post('/ltv/predict', params);\n }\n\n // ============ 分组分析 ============\n\n /**\n * 按属性分组分析\n * @param {string} property - 分组属性\n * @param {Object} params - 分析参数\n */\n async analyzeByProperty(property, params = {}) {\n return this.post('/analyze/group', { property, ...params });\n }\n\n /**\n * 按人群分析\n * @param {string} segmentId - 人群 ID\n * @param {Object} params - 分析参数\n */\n async analyzeBySegment(segmentId, params = {}) {\n return this.post('/analyze/segment', { segment_id: segmentId, ...params });\n }\n\n // ============ 报表导出 ============\n\n /**\n * 导出留存报告\n * @param {Object} options - 导出选项\n */\n async exportReport(options) {\n return this.post('/export', options);\n }\n}\n\n// 创建默认实例\nexport const retentionApi = new RetentionApiClient();\n\n\n\nexport default retentionApi;\n","/**\n * Retention SDK - 类型定义\n */\n\n// 留存周期类型\nexport const RetentionPeriod = {\n DAY_1: 'day_1',\n DAY_3: 'day_3',\n DAY_7: 'day_7',\n DAY_14: 'day_14',\n DAY_30: 'day_30',\n DAY_60: 'day_60',\n DAY_90: 'day_90',\n};\n\n// Cohort 分组维度\nexport const CohortDimension = {\n REGISTER_DATE: 'register_date',\n FIRST_PURCHASE: 'first_purchase',\n CHANNEL: 'channel',\n DEVICE: 'device',\n REGION: 'region',\n CUSTOM: 'custom',\n};\n\n// 留存事件类型\nexport const RetentionEvent = {\n LOGIN: 'login',\n ACTIVE: 'active',\n PURCHASE: 'purchase',\n ENGAGEMENT: 'engagement',\n CUSTOM: 'custom',\n};\n\nexport default { RetentionPeriod, CohortDimension, RetentionEvent };\n\nexport const CohortType = {};\n\nexport const ChurnRisk = {};\n","/**\n * Retention SDK - 国际化\n * Cohort留存分析多语言支持\n */\n\nexport const SUPPORTED_LANGUAGES = ['en', 'zh', 'ja', 'ko'];\n\nexport const messages = {\n zh: {\n // 留存\n retention: '留存',\n retentionRate: '留存率',\n retentionAnalysis: '留存分析',\n cohortAnalysis: 'Cohort分析',\n \n // 时间\n day1: '次日',\n day3: '3日',\n day7: '7日',\n day14: '14日',\n day30: '30日',\n day60: '60日',\n day90: '90日',\n \n // 用户群\n cohort: 'Cohort',\n cohorts: '用户群',\n newUsers: '新用户',\n activeUsers: '活跃用户',\n paidUsers: '付费用户',\n \n // 指标\n users: '用户数',\n retention: '留存',\n churn: '流失',\n churnRate: '流失率',\n lifetime: '生命周期',\n ltv: 'LTV',\n averageLtv: '平均LTV',\n \n // 分析维度\n byDate: '按日期',\n byChannel: '按渠道',\n byPlatform: '按平台',\n byRegion: '按地区',\n byVersion: '按版本',\n \n // 图表\n heatmap: '热力图',\n curve: '曲线图',\n table: '表格',\n \n // 时间范围\n timeRange: '时间范围',\n last7Days: '近7天',\n last14Days: '近14天',\n last30Days: '近30天',\n last90Days: '近90天',\n lastYear: '近一年',\n custom: '自定义',\n \n // 对比\n comparison: '对比分析',\n benchmark: '基准',\n vsLastPeriod: '环比',\n vsLastYear: '同比',\n \n // 洞察\n insights: '洞察',\n trend: '趋势',\n improving: '改善中',\n declining: '下降中',\n stable: '稳定',\n \n // 状态\n loading: '加载中...',\n noData: '暂无数据',\n error: '加载失败',\n \n // 操作\n export: '导出',\n refresh: '刷新',\n filter: '筛选',\n \n // 预测\n forecast: '预测',\n predictedRetention: '预测留存',\n confidence: '置信度',\n },\n en: {\n retention: 'Retention',\n retentionRate: 'Retention Rate',\n retentionAnalysis: 'Retention Analysis',\n cohortAnalysis: 'Cohort Analysis',\n \n day1: 'Day 1',\n day3: 'Day 3',\n day7: 'Day 7',\n day14: 'Day 14',\n day30: 'Day 30',\n day60: 'Day 60',\n day90: 'Day 90',\n \n cohort: 'Cohort',\n cohorts: 'Cohorts',\n newUsers: 'New Users',\n activeUsers: 'Active Users',\n paidUsers: 'Paid Users',\n \n users: 'Users',\n churn: 'Churn',\n churnRate: 'Churn Rate',\n lifetime: 'Lifetime',\n ltv: 'LTV',\n averageLtv: 'Average LTV',\n \n byDate: 'By Date',\n byChannel: 'By Channel',\n byPlatform: 'By Platform',\n byRegion: 'By Region',\n byVersion: 'By Version',\n \n heatmap: 'Heatmap',\n curve: 'Curve',\n table: 'Table',\n \n timeRange: 'Time Range',\n last7Days: 'Last 7 Days',\n last14Days: 'Last 14 Days',\n last30Days: 'Last 30 Days',\n last90Days: 'Last 90 Days',\n lastYear: 'Last Year',\n custom: 'Custom',\n \n comparison: 'Comparison',\n benchmark: 'Benchmark',\n vsLastPeriod: 'vs Last Period',\n vsLastYear: 'vs Last Year',\n \n insights: 'Insights',\n trend: 'Trend',\n improving: 'Improving',\n declining: 'Declining',\n stable: 'Stable',\n \n loading: 'Loading...',\n noData: 'No Data',\n error: 'Error',\n \n export: 'Export',\n refresh: 'Refresh',\n filter: 'Filter',\n \n forecast: 'Forecast',\n predictedRetention: 'Predicted Retention',\n confidence: 'Confidence',\n },\n ja: {\n retention: 'リテンション',\n retentionRate: 'リテンション率',\n retentionAnalysis: 'リテンション分析',\n cohortAnalysis: 'コホート分析',\n \n day1: '翌日',\n day3: '3日後',\n day7: '7日後',\n day14: '14日後',\n day30: '30日後',\n day60: '60日後',\n day90: '90日後',\n \n cohort: 'コホート',\n cohorts: 'コホート',\n newUsers: '新規ユーザー',\n activeUsers: 'アクティブユーザー',\n paidUsers: '課金ユーザー',\n \n users: 'ユーザー数',\n churn: '離脱',\n churnRate: '離脱率',\n lifetime: 'ライフタイム',\n ltv: 'LTV',\n averageLtv: '平均LTV',\n \n byDate: '日付別',\n byChannel: 'チャネル別',\n byPlatform: 'プラットフォーム別',\n byRegion: '地域別',\n byVersion: 'バージョン別',\n \n heatmap: 'ヒートマップ',\n curve: '曲線',\n table: 'テーブル',\n \n timeRange: '期間',\n last7Days: '過去7日間',\n last14Days: '過去14日間',\n last30Days: '過去30日間',\n last90Days: '過去90日間',\n lastYear: '過去1年間',\n custom: 'カスタム',\n \n comparison: '比較',\n benchmark: 'ベンチマーク',\n vsLastPeriod: '前期比',\n vsLastYear: '前年比',\n \n insights: 'インサイト',\n trend: 'トレンド',\n improving: '改善中',\n declining: '低下中',\n stable: '安定',\n \n loading: '読み込み中...',\n noData: 'データなし',\n error: 'エラー',\n \n export: 'エクスポート',\n refresh: '更新',\n filter: 'フィルター',\n \n forecast: '予測',\n predictedRetention: '予測リテンション',\n confidence: '信頼度',\n },\n ko: {\n retention: '리텐션',\n retentionRate: '리텐션율',\n retentionAnalysis: '리텐션 분석',\n cohortAnalysis: '코호트 분석',\n \n day1: 'D+1',\n day3: 'D+3',\n day7: 'D+7',\n day14: 'D+14',\n day30: 'D+30',\n day60: 'D+60',\n day90: 'D+90',\n \n cohort: '코호트',\n cohorts: '코호트',\n newUsers: '신규 사용자',\n activeUsers: '활성 사용자',\n paidUsers: '결제 사용자',\n \n users: '사용자 수',\n churn: '이탈',\n churnRate: '이탈률',\n lifetime: '생애 주기',\n ltv: 'LTV',\n averageLtv: '평균 LTV',\n \n byDate: '날짜별',\n byChannel: '채널별',\n byPlatform: '플랫폼별',\n byRegion: '지역별',\n byVersion: '버전별',\n \n heatmap: '히트맵',\n curve: '곡선',\n table: '테이블',\n \n timeRange: '기간',\n last7Days: '최근 7일',\n last14Days: '최근 14일',\n last30Days: '최근 30일',\n last90Days: '최근 90일',\n lastYear: '최근 1년',\n custom: '사용자 지정',\n \n comparison: '비교',\n benchmark: '벤치마크',\n vsLastPeriod: '전기 대비',\n vsLastYear: '전년 대비',\n \n insights: '인사이트',\n trend: '트렌드',\n improving: '개선 중',\n declining: '하락 중',\n stable: '안정',\n \n loading: '로딩 중...',\n noData: '데이터 없음',\n error: '오류',\n \n export: '내보내기',\n refresh: '새로고침',\n filter: '필터',\n \n forecast: '예측',\n predictedRetention: '예측 리텐션',\n confidence: '신뢰도',\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 * Retention SDK - React Hooks\n * 留存分析相关的状态管理\n */\n\nimport { useState, useEffect, useCallback, useMemo } from 'react';\nimport { retentionApi } from '../services/retentionApi';\n\n/**\n * 获取留存数据\n */\nexport function useRetention(options = {}) {\n const [data, setData] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n \n const { timeRange = '30d', cohortType = 'new', dimension = null } = options;\n\n const fetchRetention = useCallback(async () => {\n try {\n setLoading(true);\n const response = await retentionApi.getRetention({ timeRange, cohortType, dimension });\n setData(response);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [timeRange, cohortType, dimension]);\n\n useEffect(() => {\n fetchRetention();\n }, [fetchRetention]);\n\n // 计算关键指标\n const metrics = useMemo(() => {\n if (!data || !data.cohorts) return null;\n\n const cohorts = data.cohorts;\n const avgDay1 = cohorts.reduce((sum, c) => sum + (c.day1 || 0), 0) / cohorts.length;\n const avgDay7 = cohorts.reduce((sum, c) => sum + (c.day7 || 0), 0) / cohorts.length;\n const avgDay30 = cohorts.reduce((sum, c) => sum + (c.day30 || 0), 0) / cohorts.length;\n\n return {\n averageDay1: avgDay1,\n averageDay7: avgDay7,\n averageDay30: avgDay30,\n totalCohorts: cohorts.length,\n totalUsers: cohorts.reduce((sum, c) => sum + (c.users || 0), 0),\n };\n }, [data]);\n\n return { data, metrics, loading, error, refresh: fetchRetention };\n}\n\n/**\n * Cohort分析\n */\nexport function useCohortAnalysis(options = {}) {\n const [cohorts, setCohorts] = useState([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n \n const { startDate, endDate, granularity = 'day' } = options;\n\n const analyze = useCallback(async () => {\n try {\n setLoading(true);\n const response = await retentionApi.getCohortAnalysis({\n startDate,\n endDate,\n granularity,\n });\n setCohorts(response.cohorts || []);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [startDate, endDate, granularity]);\n\n useEffect(() => {\n if (startDate && endDate) {\n analyze();\n }\n }, [analyze, startDate, endDate]);\n\n return { cohorts, loading, error, refresh: analyze };\n}\n\n/**\n * 留存曲线\n */\nexport function useRetentionCurve(cohortId, options = {}) {\n const [curve, setCurve] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n \n const { days = 30 } = options;\n\n const fetchCurve = useCallback(async () => {\n if (!cohortId) return;\n try {\n setLoading(true);\n const response = await retentionApi.getRetentionCurve(cohortId, { days });\n setCurve(response);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [cohortId, days]);\n\n useEffect(() => {\n fetchCurve();\n }, [fetchCurve]);\n\n return { curve, loading, error, refresh: fetchCurve };\n}\n\n/**\n * 留存对比\n */\nexport function useRetentionComparison(options = {}) {\n const [comparison, setComparison] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n \n const { segments = [], periods = [] } = options;\n\n const compare = useCallback(async () => {\n try {\n setLoading(true);\n const response = await retentionApi.compare({ segments, periods });\n setComparison(response);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [segments, periods]);\n\n useEffect(() => {\n if (segments.length > 0 || periods.length > 0) {\n compare();\n }\n }, [compare, segments, periods]);\n\n return { comparison, loading, error, refresh: compare };\n}\n\n/**\n * 流失分析\n */\nexport function useChurnAnalysis(options = {}) {\n const [churnData, setChurnData] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n \n const { timeRange = '30d', riskThreshold = 0.7 } = options;\n\n const analyze = useCallback(async () => {\n try {\n setLoading(true);\n const response = await retentionApi.getChurnAnalysis({ timeRange, riskThreshold });\n setChurnData(response);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [timeRange, riskThreshold]);\n\n useEffect(() => {\n analyze();\n }, [analyze]);\n\n // 高风险用户\n const atRiskUsers = useMemo(() => {\n return churnData?.users?.filter(u => u.churnRisk >= riskThreshold) || [];\n }, [churnData, riskThreshold]);\n\n return {\n churnData,\n atRiskUsers,\n loading,\n error,\n refresh: analyze,\n };\n}\n\n/**\n * LTV分析\n */\nexport function useLtvAnalysis(options = {}) {\n const [ltvData, setLtvData] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n \n const { cohortType = 'all', timeRange = '90d' } = options;\n\n const analyze = useCallback(async () => {\n try {\n setLoading(true);\n const response = await retentionApi.getLtvAnalysis({ cohortType, timeRange });\n setLtvData(response);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [cohortType, timeRange]);\n\n useEffect(() => {\n analyze();\n }, [analyze]);\n\n return { ltvData, loading, error, refresh: analyze };\n}\n\n/**\n * 留存预测\n */\nexport function useRetentionForecast(cohortId, options = {}) {\n const [forecast, setForecast] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n \n const { forecastDays = 30 } = options;\n\n const predict = useCallback(async () => {\n if (!cohortId) return;\n try {\n setLoading(true);\n const response = await retentionApi.forecast(cohortId, { forecastDays });\n setForecast(response);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [cohortId, forecastDays]);\n\n useEffect(() => {\n predict();\n }, [predict]);\n\n return { forecast, loading, error, refresh: predict };\n}\n\n","/**\n * Retention SDK - React 组件\n * 留存分析可视化组件\n */\n\nimport React, { useState, useMemo } from 'react';\nimport { useRetention, useCohortAnalysis, useRetentionCurve } from '../hooks/useRetention';\nimport { t } from '../i18n';\nimport './RetentionChart.css';\n\n/**\n * Cohort热力图\n */\nexport function CohortHeatmap({ data, showLabels = true, colorScheme = 'blue' }) {\n if (!data || !data.cohorts || data.cohorts.length === 0) {\n return <div className=\"eco-retention-empty\">{t('noData')}</div>;\n }\n\n const { cohorts, days } = data;\n \n // 获取颜色\n const getColor = (value) => {\n if (value === null || value === undefined) return 'transparent';\n const intensity = Math.min(1, Math.max(0, value));\n if (colorScheme === 'green') {\n return `rgba(16, 185, 129, ${0.1 + intensity * 0.9})`;\n }\n return `rgba(99, 102, 241, ${0.1 + intensity * 0.9})`;\n };\n\n return (\n <div className=\"eco-retention-heatmap\">\n <div className=\"eco-retention-heatmap-header\">\n <div className=\"eco-retention-heatmap-label\">{t('cohort')}</div>\n {days.map((day, i) => (\n <div key={i} className=\"eco-retention-heatmap-day\">\n {t(`day${day}`) || `D+${day}`}\n </div>\n ))}\n </div>\n \n <div className=\"eco-retention-heatmap-body\">\n {cohorts.map((cohort, rowIndex) => (\n <div key={cohort.date || rowIndex} className=\"eco-retention-heatmap-row\">\n <div className=\"eco-retention-heatmap-cohort\">\n <span className=\"eco-retention-cohort-date\">{cohort.date}</span>\n <span className=\"eco-retention-cohort-users\">{cohort.users.toLocaleString()}</span>\n </div>\n {days.map((day, colIndex) => {\n const value = cohort[`day${day}`];\n return (\n <div\n key={colIndex}\n className=\"eco-retention-heatmap-cell\"\n style={{ backgroundColor: getColor(value) }}\n title={value !== null ? `${(value * 100).toFixed(1)}%` : ''}\n >\n {showLabels && value !== null && (\n <span className=\"eco-retention-cell-value\">\n {(value * 100).toFixed(0)}%\n </span>\n )}\n </div>\n );\n })}\n </div>\n ))}\n </div>\n \n <div className=\"eco-retention-heatmap-legend\">\n <span>0%</span>\n <div className=\"eco-retention-legend-gradient\" />\n <span>100%</span>\n </div>\n </div>\n );\n}\n\n/**\n * 留存曲线图\n */\nexport function RetentionCurve({ data, showBenchmark = false, benchmarkData = null }) {\n if (!data || !data.points || data.points.length === 0) {\n return <div className=\"eco-retention-empty\">{t('noData')}</div>;\n }\n\n const { points } = data;\n const maxValue = 1;\n const minValue = 0;\n\n const pathPoints = points.map((p, i) => {\n const x = (i / (points.length - 1)) * 100;\n const y = 100 - (p.value * 100);\n return `${x},${y}`;\n }).join(' ');\n\n const benchmarkPoints = benchmarkData?.points?.map((p, i) => {\n const x = (i / (benchmarkData.points.length - 1)) * 100;\n const y = 100 - (p.value * 100);\n return `${x},${y}`;\n }).join(' ');\n\n return (\n <div className=\"eco-retention-curve\">\n <svg className=\"eco-retention-curve-svg\" viewBox=\"0 0 100 100\" preserveAspectRatio=\"none\">\n <defs>\n <linearGradient id=\"retentionGradient\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor=\"#6366f1\" stopOpacity=\"0.3\" />\n <stop offset=\"100%\" stopColor=\"#6366f1\" stopOpacity=\"0\" />\n </linearGradient>\n </defs>\n \n {/* 网格线 */}\n {[25, 50, 75].map(y => (\n <line\n key={y}\n x1=\"0\"\n y1={y}\n x2=\"100\"\n y2={y}\n stroke=\"#e2e8f0\"\n strokeWidth=\"0.5\"\n vectorEffect=\"non-scaling-stroke\"\n />\n ))}\n \n {/* 基准线 */}\n {showBenchmark && benchmarkPoints && (\n <polyline\n points={benchmarkPoints}\n fill=\"none\"\n stroke=\"#94a3b8\"\n strokeWidth=\"2\"\n strokeDasharray=\"4,4\"\n vectorEffect=\"non-scaling-stroke\"\n />\n )}\n \n {/* 填充区域 */}\n <polygon\n points={`0,100 ${pathPoints} 100,100`}\n fill=\"url(#retentionGradient)\"\n />\n \n {/* 曲线 */}\n <polyline\n points={pathPoints}\n fill=\"none\"\n stroke=\"#6366f1\"\n strokeWidth=\"2\"\n vectorEffect=\"non-scaling-stroke\"\n />\n \n {/* 数据点 */}\n {points.map((p, i) => {\n const x = (i / (points.length - 1)) * 100;\n const y = 100 - (p.value * 100);\n return (\n <circle\n key={i}\n cx={x}\n cy={y}\n r=\"3\"\n fill=\"#6366f1\"\n vectorEffect=\"non-scaling-stroke\"\n />\n );\n })}\n </svg>\n \n <div className=\"eco-retention-curve-labels\">\n <div className=\"eco-retention-curve-y-labels\">\n <span>100%</span>\n <span>75%</span>\n <span>50%</span>\n <span>25%</span>\n <span>0%</span>\n </div>\n <div className=\"eco-retention-curve-x-labels\">\n {points.filter((_, i) => i % 7 === 0 || i === points.length - 1).map((p, i) => (\n <span key={i}>D+{p.day}</span>\n ))}\n </div>\n </div>\n </div>\n );\n}\n\n/**\n * 留存指标卡片\n */\nexport function RetentionMetricCard({ title, value, trend, benchmark }) {\n const trendClass = trend > 0 ? 'up' : trend < 0 ? 'down' : 'stable';\n const vsBenchmark = benchmark ? value - benchmark : null;\n\n return (\n <div className=\"eco-retention-metric-card\">\n <div className=\"eco-retention-metric-title\">{title}</div>\n <div className=\"eco-retention-metric-value\">\n {typeof value === 'number' ? `${(value * 100).toFixed(1)}%` : value}\n </div>\n <div className=\"eco-retention-metric-footer\">\n {trend !== undefined && (\n <span className={`eco-retention-metric-trend ${trendClass}`}>\n {trend > 0 ? '↑' : trend < 0 ? '↓' : '–'}\n {Math.abs(trend * 100).toFixed(1)}%\n </span>\n )}\n {vsBenchmark !== null && (\n <span className={`eco-retention-metric-benchmark ${vsBenchmark >= 0 ? 'positive' : 'negative'}`}>\n vs {t('benchmark')}: {vsBenchmark >= 0 ? '+' : ''}{(vsBenchmark * 100).toFixed(1)}%\n </span>\n )}\n </div>\n </div>\n );\n}\n\n/**\n * 留存概览面板\n */\nexport function RetentionOverview({ timeRange = '30d' }) {\n const { data, metrics, loading, error } = useRetention({ timeRange });\n\n if (loading) {\n return (\n <div className=\"eco-retention-loading\">\n <div className=\"eco-retention-spinner\" />\n <span>{t('loading')}</span>\n </div>\n );\n }\n\n if (error) {\n return <div className=\"eco-retention-error\">{error}</div>;\n }\n\n if (!metrics) {\n return <div className=\"eco-retention-empty\">{t('noData')}</div>;\n }\n\n return (\n <div className=\"eco-retention-overview\">\n <h3 className=\"eco-retention-overview-title\">{t('retentionAnalysis')}</h3>\n \n <div className=\"eco-retention-metrics-grid\">\n <RetentionMetricCard\n title={t('day1')}\n value={metrics.averageDay1}\n />\n <RetentionMetricCard\n title={t('day7')}\n value={metrics.averageDay7}\n />\n <RetentionMetricCard\n title={t('day30')}\n value={metrics.averageDay30}\n />\n <RetentionMetricCard\n title={t('users')}\n value={metrics.totalUsers.toLocaleString()}\n />\n </div>\n </div>\n );\n}\n\n/**\n * 时间范围选择器\n */\nexport function TimeRangeSelector({ value, onChange }) {\n const options = [\n { id: 'last7Days', label: t('last7Days') },\n { id: 'last14Days', label: t('last14Days') },\n { id: 'last30Days', label: t('last30Days') },\n { id: 'last90Days', label: t('last90Days') },\n { id: 'lastYear', label: t('lastYear') },\n ];\n\n return (\n <div className=\"eco-retention-timerange\">\n {options.map((opt) => (\n <button\n key={opt.id}\n className={`eco-retention-timerange-btn ${value === opt.id ? 'active' : ''}`}\n onClick={() => onChange(opt.id)}\n >\n {opt.label}\n </button>\n ))}\n </div>\n );\n}\n\n/**\n * 视图切换器\n */\nexport function ViewToggle({ value, onChange }) {\n const views = [\n { id: 'heatmap', label: t('heatmap'), icon: '▦' },\n { id: 'curve', label: t('curve'), icon: '📈' },\n { id: 'table', label: t('table'), icon: '☷' },\n ];\n\n return (\n <div className=\"eco-retention-view-toggle\">\n {views.map((view) => (\n <button\n key={view.id}\n className={`eco-retention-view-btn ${value === view.id ? 'active' : ''}`}\n onClick={() => onChange(view.id)}\n title={view.label}\n >\n <span>{view.icon}</span>\n </button>\n ))}\n </div>\n );\n}\n\n/**\n * 留存表格\n */\nexport function RetentionTable({ data }) {\n if (!data || !data.cohorts) {\n return <div className=\"eco-retention-empty\">{t('noData')}</div>;\n }\n\n const { cohorts, days } = data;\n\n return (\n <div className=\"eco-retention-table-wrapper\">\n <table className=\"eco-retention-table\">\n <thead>\n <tr>\n <th>{t('cohort')}</th>\n <th>{t('users')}</th>\n {days.map((day) => (\n <th key={day}>{t(`day${day}`) || `D+${day}`}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {cohorts.map((cohort, index) => (\n <tr key={cohort.date || index}>\n <td className=\"eco-retention-table-cohort\">{cohort.date}</td>\n <td className=\"eco-retention-table-users\">{cohort.users.toLocaleString()}</td>\n {days.map((day) => {\n const value = cohort[`day${day}`];\n return (\n <td key={day} className=\"eco-retention-table-value\">\n {value !== null ? `${(value * 100).toFixed(1)}%` : '-'}\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\n","/**\n * @quantabit/retention-sdk\n * Retention Analytics SDK - Full Version\n */\n\n// API Client\nexport { retentionApi, RetentionApiClient } from './services/retentionApi';\n\n// Types\nexport { CohortType, RetentionPeriod, ChurnRisk } from './types';\n\n// i18n\nexport { messages, SUPPORTED_LANGUAGES, setLanguage, getLanguage, t } from './i18n';\n\n// React Hooks\nexport {\n useRetention,\n useCohortAnalysis,\n useRetentionCurve,\n useRetentionComparison,\n useChurnAnalysis,\n useLtvAnalysis,\n useRetentionForecast,\n} from './hooks/useRetention';\n\n// React Components\nexport {\n CohortHeatmap,\n RetentionCurve,\n RetentionMetricCard,\n RetentionOverview,\n TimeRangeSelector,\n ViewToggle,\n RetentionTable,\n} from './components/RetentionChart';\n\n// Shortcut Methods\nimport { retentionApi } from './services/retentionApi';\n\nexport const getRetention = (...args) => retentionApi.getRetention(...args);\nexport const getCohortAnalysis = (...args) => retentionApi.getCohortAnalysis(...args);\nexport const getRetentionCurve = (...args) => retentionApi.getRetentionCurve(...args);\nexport const compare = (...args) => retentionApi.compare(...args);\nexport const getChurnAnalysis = (...args) => retentionApi.getChurnAnalysis(...args);\nexport const getLtvAnalysis = (...args) => retentionApi.getLtvAnalysis(...args);\nexport const forecast = (...args) => retentionApi.forecast(...args);\n\nimport \"./styles/retention.css\";\n"],"names":["RetentionApiClient","BaseApiClient","constructor","config","getOverview","params","get","getRetentionRate","post","getRetentionTrend","getDailyRetention","getWeeklyRetention","getMonthlyRetention","getCohortAnalysis","getCohorts","createCohort","cohort","compareCohorts","cohortIds","cohort_ids","getChurnedUsers","getChurnReasons","getChurnRiskUsers","getChurnTrend","getLTVOverview","getUserLTV","userId","getLTVDistribution","predictLTV","analyzeByProperty","property","analyzeBySegment","segmentId","segment_id","exportReport","options","retentionApi","RetentionPeriod","DAY_1","DAY_3","DAY_7","DAY_14","DAY_30","DAY_60","DAY_90","CohortType","ChurnRisk","SUPPORTED_LANGUAGES","messages","zh","retention","retentionRate","retentionAnalysis","cohortAnalysis","day1","day3","day7","day14","day30","day60","day90","cohorts","newUsers","activeUsers","paidUsers","users","churn","churnRate","lifetime","ltv","averageLtv","byDate","byChannel","byPlatform","byRegion","byVersion","heatmap","curve","table","timeRange","last7Days","last14Days","last30Days","last90Days","lastYear","custom","comparison","benchmark","vsLastPeriod","vsLastYear","insights","trend","improving","declining","stable","loading","noData","error","export","refresh","filter","forecast","predictedRetention","confidence","en","ja","ko","currentLanguage","setLanguage","lang","includes","getLanguage","t","key","useRetention","data","setData","useState","setLoading","setError","cohortType","dimension","fetchRetention","useCallback","response","getRetention","err","message","useEffect","metrics","useMemo","avgDay1","reduce","sum","c","length","avgDay7","avgDay30","averageDay1","averageDay7","averageDay30","totalCohorts","totalUsers","useCohortAnalysis","setCohorts","startDate","endDate","granularity","analyze","useRetentionCurve","cohortId","setCurve","days","fetchCurve","getRetentionCurve","useRetentionComparison","setComparison","segments","periods","compare","useChurnAnalysis","churnData","setChurnData","riskThreshold","getChurnAnalysis","atRiskUsers","u","churnRisk","useLtvAnalysis","ltvData","setLtvData","getLtvAnalysis","useRetentionForecast","setForecast","forecastDays","predict","CohortHeatmap","showLabels","colorScheme","React","createElement","className","getColor","value","undefined","intensity","Math","min","max","map","day","i","rowIndex","date","toLocaleString","colIndex","style","backgroundColor","title","toFixed","RetentionCurve","showBenchmark","benchmarkData","points","pathPoints","p","x","y","join","benchmarkPoints","viewBox","preserveAspectRatio","id","x1","y1","x2","y2","offset","stopColor","stopOpacity","stroke","strokeWidth","vectorEffect","fill","strokeDasharray","cx","cy","r","_","RetentionMetricCard","trendClass","vsBenchmark","abs","RetentionOverview","TimeRangeSelector","onChange","label","opt","onClick","ViewToggle","views","icon","view","RetentionTable","index","args"],"mappings":"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"}