@quantabit/segment-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/segmentApi.js","../src/types/index.js","../src/i18n/index.js","../src/hooks/useSegment.js","../src/components/SegmentBuilder.jsx","../src/index.js"],"sourcesContent":["/**\n * Segment SDK - API 客户端\n * 用户分群系统后端接口封装\n * \n * 使用 BaseApiClient 基类简化代码\n */\n\nimport { BaseApiClient } from '@quantabit/sdk-config';\n\n/**\n * 用户分群 API 客户端\n */\nexport class SegmentApiClient extends BaseApiClient {\n constructor(config = {}) {\n super('/segment', config);\n }\n\n // ============ 分群管理 ============\n\n /**\n * 获取分群列表\n * @param {Object} params - 查询参数\n */\n async getSegments(params = {}) {\n return this.get('/list', params);\n }\n\n /**\n * 获取分群详情\n * @param {string} segmentId - 分群 ID\n */\n async getSegment(segmentId) {\n return this.get(`/${segmentId}`);\n }\n\n /**\n * 创建分群(管理员)\n * @param {Object} data - 分群数据\n */\n async createSegment(data) {\n return this.post('/', data);\n }\n\n /**\n * 更新分群(管理员)\n * @param {string} segmentId - 分群 ID\n * @param {Object} updates - 更新数据\n */\n async updateSegment(segmentId, updates) {\n return this.put(`/${segmentId}`, updates);\n }\n\n /**\n * 删除分群(管理员)\n * @param {string} segmentId - 分群 ID\n */\n async deleteSegment(segmentId) {\n return this.delete(`/${segmentId}`);\n }\n\n // ============ 分群规则 ============\n\n /**\n * 获取分群规则\n * @param {string} segmentId - 分群 ID\n */\n async getSegmentRules(segmentId) {\n return this.get(`/${segmentId}/rules`);\n }\n\n /**\n * 更新分群规则(管理员)\n * @param {string} segmentId - 分群 ID\n * @param {Object} rules - 规则配置\n */\n async updateSegmentRules(segmentId, rules) {\n return this.put(`/${segmentId}/rules`, rules);\n }\n\n /**\n * 预估分群规模\n * @param {Object} rules - 规则配置\n */\n async estimateSize(rules) {\n return this.post('/estimate', rules);\n }\n\n // ============ 分群用户 ============\n\n /**\n * 获取分群用户\n * @param {string} segmentId - 分群 ID\n * @param {Object} params - 查询参数\n */\n async getSegmentUsers(segmentId, params = {}) {\n return this.get(`/${segmentId}/users`, params);\n }\n\n /**\n * 手动添加用户到分群(管理员)\n * @param {string} segmentId - 分群 ID\n * @param {string[]} userIds - 用户 ID 列表\n */\n async addUsersToSegment(segmentId, userIds) {\n return this.post(`/${segmentId}/users`, { user_ids: userIds });\n }\n\n /**\n * 从分群移除用户(管理员)\n * @param {string} segmentId - 分群 ID\n * @param {string[]} userIds - 用户 ID 列表\n */\n async removeUsersFromSegment(segmentId, userIds) {\n return this.post(`/${segmentId}/users/remove`, { user_ids: userIds });\n }\n\n /**\n * 检查用户是否在分群中\n * @param {string} segmentId - 分群 ID\n * @param {string} userId - 用户 ID\n */\n async checkUserInSegment(segmentId, userId) {\n return this.get(`/${segmentId}/users/${userId}/check`);\n }\n\n // ============ 分群同步 ============\n\n /**\n * 刷新分群(重新计算)\n * @param {string} segmentId - 分群 ID\n */\n async refreshSegment(segmentId) {\n return this.post(`/${segmentId}/refresh`);\n }\n\n /**\n * 获取刷新状态\n * @param {string} segmentId - 分群 ID\n */\n async getRefreshStatus(segmentId) {\n return this.get(`/${segmentId}/refresh/status`);\n }\n\n // ============ 我的分群 ============\n\n /**\n * 获取我所属的分群\n */\n async getMySegments() {\n return this.get('/my');\n }\n\n // ============ 统计 ============\n\n /**\n * 获取分群统计\n * @param {string} segmentId - 分群 ID\n * @param {Object} params - 统计参数\n */\n async getSegmentStats(segmentId, params = {}) {\n return this.get(`/${segmentId}/stats`, params);\n }\n\n /**\n * 获取分群趋势\n * @param {string} segmentId - 分群 ID\n * @param {Object} params - 查询参数\n */\n async getSegmentTrend(segmentId, params = {}) {\n return this.get(`/${segmentId}/trend`, params);\n }\n\n /**\n * 导出分群用户\n * @param {string} segmentId - 分群 ID\n * @param {Object} options - 导出选项\n */\n async exportSegmentUsers(segmentId, options = {}) {\n return this.post(`/${segmentId}/export`, options);\n }\n\n // ============ 兼容方法 ============\n\n async estimate(rules) {\n return this.estimateSize(rules);\n }\n\n async cloneSegment(segmentId, data) {\n return this.post(`/${segmentId}/clone`, data);\n }\n\n async getProperties() {\n return this.get('/properties');\n }\n}\n\n// 创建默认实例\nexport const segmentApi = new SegmentApiClient();\n\n\n\nexport default segmentApi;\n","/**\n * Segment SDK - 类型定义\n */\n\n// 分群类型\nexport const SegmentType = {\n STATIC: 'static', // 静态分群\n DYNAMIC: 'dynamic', // 动态分群\n REALTIME: 'realtime', // 实时分群\n};\n\n// 条件操作符\nexport const SegmentOperator = {\n EQUALS: 'eq',\n NOT_EQUALS: 'neq',\n GREATER_THAN: 'gt',\n LESS_THAN: 'lt',\n BETWEEN: 'between',\n IN: 'in',\n NOT_IN: 'not_in',\n CONTAINS: 'contains',\n IS_SET: 'is_set',\n IS_NOT_SET: 'is_not_set',\n};\n\n// 逻辑运算\nexport const SegmentLogic = {\n AND: 'and',\n OR: 'or',\n};\n\n// 属性类型\nexport const PropertyType = {\n USER: 'user',\n BEHAVIOR: 'behavior',\n TRANSACTION: 'transaction',\n DEVICE: 'device',\n};\n\nexport default { SegmentType, SegmentOperator, SegmentLogic, PropertyType };\n\nexport const ConditionOperator = {};\n","/**\n * Segment SDK - 国际化\n * 用户分群多语言支持\n */\n\nexport const SUPPORTED_LANGUAGES = ['en', 'zh', 'ja', 'ko'];\n\nexport const messages = {\n zh: {\n // 分群基础\n segment: '分群',\n segments: '用户分群',\n createSegment: '创建分群',\n editSegment: '编辑分群',\n deleteSegment: '删除分群',\n segmentName: '分群名称',\n segmentDesc: '分群描述',\n \n // 分群类型\n static: '静态分群',\n dynamic: '动态分群',\n realtime: '实时分群',\n \n // 条件\n condition: '条件',\n conditions: '条件',\n addCondition: '添加条件',\n removeCondition: '移除条件',\n and: '且',\n or: '或',\n \n // 属性\n property: '属性',\n userProperty: '用户属性',\n eventProperty: '事件属性',\n \n // 运算符\n equals: '等于',\n notEquals: '不等于',\n contains: '包含',\n notContains: '不包含',\n startsWith: '开头是',\n endsWith: '结尾是',\n greaterThan: '大于',\n lessThan: '小于',\n between: '介于',\n in: '在列表中',\n notIn: '不在列表中',\n isSet: '已设置',\n isNotSet: '未设置',\n \n // 时间\n inLast: '在过去',\n days: '天',\n weeks: '周',\n months: '月',\n \n // 行为\n didEvent: '执行过事件',\n didNotEvent: '未执行事件',\n eventCount: '事件次数',\n firstTime: '首次',\n lastTime: '最近',\n \n // 分群结果\n users: '用户数',\n percentage: '占比',\n estimated: '预估',\n calculating: '计算中...',\n \n // 操作\n save: '保存',\n cancel: '取消',\n preview: '预览',\n refresh: '刷新',\n export: '导出',\n clone: '复制',\n \n // 使用场景\n useFor: '用于',\n marketing: '营销活动',\n analytics: '数据分析',\n targeting: '精准投放',\n \n // 状态\n active: '活跃',\n inactive: '未激活',\n processing: '处理中',\n ready: '就绪',\n \n // 提示\n noResults: '暂无结果',\n loading: '加载中...',\n error: '加载失败',\n saved: '保存成功',\n deleted: '删除成功',\n \n // 预设分群\n allUsers: '全部用户',\n newUsers: '新用户',\n activeUsers: '活跃用户',\n churned: '流失用户',\n highValue: '高价值用户',\n atRisk: '流失风险用户',\n },\n en: {\n segment: 'Segment',\n segments: 'Segments',\n createSegment: 'Create Segment',\n editSegment: 'Edit Segment',\n deleteSegment: 'Delete Segment',\n segmentName: 'Segment Name',\n segmentDesc: 'Description',\n \n static: 'Static',\n dynamic: 'Dynamic',\n realtime: 'Realtime',\n \n condition: 'Condition',\n conditions: 'Conditions',\n addCondition: 'Add Condition',\n removeCondition: 'Remove',\n and: 'AND',\n or: 'OR',\n \n property: 'Property',\n userProperty: 'User Property',\n eventProperty: 'Event Property',\n \n equals: 'equals',\n notEquals: 'not equals',\n contains: 'contains',\n notContains: 'not contains',\n startsWith: 'starts with',\n endsWith: 'ends with',\n greaterThan: 'greater than',\n lessThan: 'less than',\n between: 'between',\n in: 'in',\n notIn: 'not in',\n isSet: 'is set',\n isNotSet: 'is not set',\n \n inLast: 'in last',\n days: 'days',\n weeks: 'weeks',\n months: 'months',\n \n didEvent: 'did event',\n didNotEvent: 'did not event',\n eventCount: 'event count',\n firstTime: 'first time',\n lastTime: 'last time',\n \n users: 'Users',\n percentage: 'Percentage',\n estimated: 'Estimated',\n calculating: 'Calculating...',\n \n save: 'Save',\n cancel: 'Cancel',\n preview: 'Preview',\n refresh: 'Refresh',\n export: 'Export',\n clone: 'Clone',\n \n useFor: 'Use for',\n marketing: 'Marketing',\n analytics: 'Analytics',\n targeting: 'Targeting',\n \n active: 'Active',\n inactive: 'Inactive',\n processing: 'Processing',\n ready: 'Ready',\n \n noResults: 'No Results',\n loading: 'Loading...',\n error: 'Error',\n saved: 'Saved',\n deleted: 'Deleted',\n \n allUsers: 'All Users',\n newUsers: 'New Users',\n activeUsers: 'Active Users',\n churned: 'Churned',\n highValue: 'High Value',\n atRisk: 'At Risk',\n },\n ja: {\n segment: 'セグメント',\n segments: 'セグメント',\n createSegment: 'セグメントを作成',\n editSegment: 'セグメントを編集',\n deleteSegment: 'セグメントを削除',\n segmentName: 'セグメント名',\n segmentDesc: '説明',\n \n static: '静的',\n dynamic: '動的',\n realtime: 'リアルタイム',\n \n condition: '条件',\n conditions: '条件',\n addCondition: '条件を追加',\n removeCondition: '削除',\n and: 'かつ',\n or: 'または',\n \n property: 'プロパティ',\n userProperty: 'ユーザープロパティ',\n eventProperty: 'イベントプロパティ',\n \n equals: '等しい',\n notEquals: '等しくない',\n contains: '含む',\n notContains: '含まない',\n startsWith: 'で始まる',\n endsWith: 'で終わる',\n greaterThan: 'より大きい',\n lessThan: 'より小さい',\n between: 'の間',\n in: 'に含まれる',\n notIn: 'に含まれない',\n isSet: '設定済み',\n isNotSet: '未設定',\n \n inLast: '過去',\n days: '日間',\n weeks: '週間',\n months: 'ヶ月間',\n \n didEvent: 'イベント実行済み',\n didNotEvent: 'イベント未実行',\n eventCount: 'イベント回数',\n firstTime: '初回',\n lastTime: '最終',\n \n users: 'ユーザー数',\n percentage: '割合',\n estimated: '推定',\n calculating: '計算中...',\n \n save: '保存',\n cancel: 'キャンセル',\n preview: 'プレビュー',\n refresh: '更新',\n export: 'エクスポート',\n clone: '複製',\n \n useFor: '用途',\n marketing: 'マーケティング',\n analytics: '分析',\n targeting: 'ターゲティング',\n \n active: 'アクティブ',\n inactive: '非アクティブ',\n processing: '処理中',\n ready: '準備完了',\n \n noResults: '結果なし',\n loading: '読み込み中...',\n error: 'エラー',\n saved: '保存しました',\n deleted: '削除しました',\n \n allUsers: '全ユーザー',\n newUsers: '新規ユーザー',\n activeUsers: 'アクティブユーザー',\n churned: '離脱ユーザー',\n highValue: '高価値ユーザー',\n atRisk: 'リスクユーザー',\n },\n ko: {\n segment: '세그먼트',\n segments: '세그먼트',\n createSegment: '세그먼트 생성',\n editSegment: '세그먼트 편집',\n deleteSegment: '세그먼트 삭제',\n segmentName: '세그먼트 이름',\n segmentDesc: '설명',\n \n static: '정적',\n dynamic: '동적',\n realtime: '실시간',\n \n condition: '조건',\n conditions: '조건',\n addCondition: '조건 추가',\n removeCondition: '제거',\n and: '그리고',\n or: '또는',\n \n property: '속성',\n userProperty: '사용자 속성',\n eventProperty: '이벤트 속성',\n \n equals: '같음',\n notEquals: '같지 않음',\n contains: '포함',\n notContains: '포함하지 않음',\n startsWith: '로 시작',\n endsWith: '로 끝남',\n greaterThan: '보다 큼',\n lessThan: '보다 작음',\n between: '사이',\n in: '포함됨',\n notIn: '포함되지 않음',\n isSet: '설정됨',\n isNotSet: '설정되지 않음',\n \n inLast: '최근',\n days: '일',\n weeks: '주',\n months: '개월',\n \n didEvent: '이벤트 수행',\n didNotEvent: '이벤트 미수행',\n eventCount: '이벤트 횟수',\n firstTime: '처음',\n lastTime: '마지막',\n \n users: '사용자 수',\n percentage: '비율',\n estimated: '예상',\n calculating: '계산 중...',\n \n save: '저장',\n cancel: '취소',\n preview: '미리보기',\n refresh: '새로고침',\n export: '내보내기',\n clone: '복제',\n \n useFor: '용도',\n marketing: '마케팅',\n analytics: '분석',\n targeting: '타겟팅',\n \n active: '활성',\n inactive: '비활성',\n processing: '처리 중',\n ready: '준비 완료',\n \n noResults: '결과 없음',\n loading: '로딩 중...',\n error: '오류',\n saved: '저장됨',\n deleted: '삭제됨',\n \n allUsers: '전체 사용자',\n newUsers: '신규 사용자',\n activeUsers: '활성 사용자',\n churned: '이탈 사용자',\n highValue: '고가치 사용자',\n atRisk: '위험 사용자',\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 * Segment SDK - React Hooks\n * 用户分群相关的状态管理\n */\n\nimport { useState, useEffect, useCallback, useMemo } from 'react';\nimport { segmentApi } from '../services/segmentApi';\n\n/**\n * 获取分群列表\n */\nexport function useSegments(params = {}) {\n const [segments, setSegments] = useState([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n const fetchSegments = useCallback(async () => {\n try {\n setLoading(true);\n const response = await segmentApi.getSegments(params);\n setSegments(response.data || []);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [params]);\n\n useEffect(() => {\n fetchSegments();\n }, []);\n\n return { segments, loading, error, refresh: fetchSegments };\n}\n\n/**\n * 获取单个分群详情\n */\nexport function useSegment(segmentId) {\n const [segment, setSegment] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n const fetchSegment = useCallback(async () => {\n if (!segmentId) return;\n try {\n setLoading(true);\n const response = await segmentApi.getSegment(segmentId);\n setSegment(response);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [segmentId]);\n\n useEffect(() => {\n fetchSegment();\n }, [fetchSegment]);\n\n return { segment, loading, error, refresh: fetchSegment };\n}\n\n/**\n * 分群预估\n */\nexport function useSegmentEstimate(conditions) {\n const [estimate, setEstimate] = useState(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n\n const calculateEstimate = useCallback(async () => {\n if (!conditions || conditions.length === 0) {\n setEstimate(null);\n return;\n }\n try {\n setLoading(true);\n const response = await segmentApi.estimate({ conditions });\n setEstimate(response);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [conditions]);\n\n useEffect(() => {\n const debounce = setTimeout(() => {\n calculateEstimate();\n }, 500);\n return () => clearTimeout(debounce);\n }, [calculateEstimate]);\n\n return { estimate, loading, error, refresh: calculateEstimate };\n}\n\n/**\n * 分群用户列表\n */\nexport function useSegmentUsers(segmentId, options = {}) {\n const [users, setUsers] = useState([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n const [pagination, setPagination] = useState({\n page: 1,\n pageSize: options.pageSize || 20,\n total: 0,\n });\n\n const fetchUsers = useCallback(async (page = 1) => {\n if (!segmentId) return;\n try {\n setLoading(true);\n const response = await segmentApi.getSegmentUsers(segmentId, {\n page,\n pageSize: pagination.pageSize,\n });\n setUsers(response.data || []);\n setPagination(prev => ({\n ...prev,\n page,\n total: response.total || 0,\n }));\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [segmentId, pagination.pageSize]);\n\n useEffect(() => {\n fetchUsers(1);\n }, [segmentId]);\n\n return {\n users,\n loading,\n error,\n pagination,\n fetchPage: fetchUsers,\n refresh: () => fetchUsers(pagination.page),\n };\n}\n\n/**\n * 分群操作(创建、更新、删除)\n */\nexport function useSegmentActions() {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n\n const createSegment = useCallback(async (data) => {\n try {\n setLoading(true);\n setError(null);\n const result = await segmentApi.createSegment(data);\n return result;\n } catch (err) {\n setError(err.message);\n throw err;\n } finally {\n setLoading(false);\n }\n }, []);\n\n const updateSegment = useCallback(async (segmentId, data) => {\n try {\n setLoading(true);\n setError(null);\n const result = await segmentApi.updateSegment(segmentId, data);\n return result;\n } catch (err) {\n setError(err.message);\n throw err;\n } finally {\n setLoading(false);\n }\n }, []);\n\n const deleteSegment = useCallback(async (segmentId) => {\n try {\n setLoading(true);\n setError(null);\n await segmentApi.deleteSegment(segmentId);\n } catch (err) {\n setError(err.message);\n throw err;\n } finally {\n setLoading(false);\n }\n }, []);\n\n const cloneSegment = useCallback(async (segmentId, newName) => {\n try {\n setLoading(true);\n setError(null);\n const result = await segmentApi.cloneSegment(segmentId, { name: newName });\n return result;\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 createSegment,\n updateSegment,\n deleteSegment,\n cloneSegment,\n };\n}\n\n/**\n * 条件构建器状态管理\n */\nexport function useConditionBuilder(initialConditions = []) {\n const [conditions, setConditions] = useState(initialConditions);\n\n const addCondition = useCallback((condition) => {\n setConditions(prev => [...prev, {\n id: Date.now().toString(),\n ...condition,\n }]);\n }, []);\n\n const updateCondition = useCallback((id, updates) => {\n setConditions(prev => prev.map(c =>\n c.id === id ? { ...c, ...updates } : c\n ));\n }, []);\n\n const removeCondition = useCallback((id) => {\n setConditions(prev => prev.filter(c => c.id !== id));\n }, []);\n\n const clearConditions = useCallback(() => {\n setConditions([]);\n }, []);\n\n const moveCondition = useCallback((fromIndex, toIndex) => {\n setConditions(prev => {\n const result = [...prev];\n const [removed] = result.splice(fromIndex, 1);\n result.splice(toIndex, 0, removed);\n return result;\n });\n }, []);\n\n return {\n conditions,\n setConditions,\n addCondition,\n updateCondition,\n removeCondition,\n clearConditions,\n moveCondition,\n };\n}\n\n/**\n * 获取可用属性\n */\nexport function useSegmentProperties() {\n const [properties, setProperties] = useState({ user: [], event: [] });\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n useEffect(() => {\n const fetchProperties = async () => {\n try {\n const response = await segmentApi.getProperties();\n setProperties(response);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n };\n fetchProperties();\n }, []);\n\n return { properties, loading, error };\n}\n\n/**\n * 预设分群\n */\nexport function usePresetSegments() {\n const presets = useMemo(() => [\n { id: 'all', name: 'allUsers', icon: '👥' },\n { id: 'new', name: 'newUsers', icon: '🆕' },\n { id: 'active', name: 'activeUsers', icon: '✅' },\n { id: 'churned', name: 'churned', icon: '👋' },\n { id: 'highValue', name: 'highValue', icon: '💎' },\n { id: 'atRisk', name: 'atRisk', icon: '⚠️' },\n ], []);\n\n return { presets };\n}\n\n","/**\n * Segment SDK - React 组件\n * 用户分群可视化组件\n */\n\nimport React, { useState, useMemo } from 'react';\nimport {\n useSegments,\n useSegmentEstimate,\n useConditionBuilder,\n useSegmentActions,\n useSegmentProperties,\n usePresetSegments,\n} from '../hooks/useSegment';\nimport { t } from '../i18n';\nimport './SegmentBuilder.css';\n\n/**\n * 分群卡片\n */\nexport function SegmentCard({ segment, onClick, onEdit, onDelete, onClone }) {\n const statusClass = segment.status === 'active' ? 'active' : 'inactive';\n\n return (\n <div className=\"eco-segment-card\" onClick={() => onClick?.(segment)}>\n <div className=\"eco-segment-card-header\">\n <h4 className=\"eco-segment-card-title\">{segment.name}</h4>\n <span className={`eco-segment-status eco-segment-status-${statusClass}`}>\n {t(segment.status)}\n </span>\n </div>\n \n {segment.description && (\n <p className=\"eco-segment-card-desc\">{segment.description}</p>\n )}\n \n <div className=\"eco-segment-card-stats\">\n <div className=\"eco-segment-stat\">\n <span className=\"eco-segment-stat-value\">{segment.userCount?.toLocaleString() || 0}</span>\n <span className=\"eco-segment-stat-label\">{t('users')}</span>\n </div>\n <div className=\"eco-segment-stat\">\n <span className=\"eco-segment-stat-value\">{segment.conditionCount || 0}</span>\n <span className=\"eco-segment-stat-label\">{t('conditions')}</span>\n </div>\n </div>\n \n <div className=\"eco-segment-card-type\">\n <span className={`eco-segment-type-badge eco-segment-type-${segment.type}`}>\n {t(segment.type)}\n </span>\n </div>\n \n <div className=\"eco-segment-card-actions\" onClick={e => e.stopPropagation()}>\n <button className=\"eco-segment-action-btn\" onClick={() => onEdit?.(segment)}>\n ✏️\n </button>\n <button className=\"eco-segment-action-btn\" onClick={() => onClone?.(segment)}>\n 📋\n </button>\n <button className=\"eco-segment-action-btn danger\" onClick={() => onDelete?.(segment)}>\n 🗑️\n </button>\n </div>\n </div>\n );\n}\n\n/**\n * 分群列表\n */\nexport function SegmentList({ onSelect, onEdit, onDelete }) {\n const { segments, loading, error } = useSegments();\n const { presets } = usePresetSegments();\n\n if (loading) {\n return (\n <div className=\"eco-segment-loading\">\n <div className=\"eco-segment-spinner\" />\n <span>{t('loading')}</span>\n </div>\n );\n }\n\n if (error) {\n return <div className=\"eco-segment-error\">{error}</div>;\n }\n\n return (\n <div className=\"eco-segment-list\">\n <div className=\"eco-segment-presets\">\n <h4>{t('segments')}</h4>\n <div className=\"eco-segment-preset-grid\">\n {presets.map((preset) => (\n <button\n key={preset.id}\n className=\"eco-segment-preset-btn\"\n onClick={() => onSelect?.({ id: preset.id, name: t(preset.name) })}\n >\n <span className=\"eco-segment-preset-icon\">{preset.icon}</span>\n <span>{t(preset.name)}</span>\n </button>\n ))}\n </div>\n </div>\n \n <div className=\"eco-segment-custom\">\n <h4>{t('segments')}</h4>\n {segments.length === 0 ? (\n <div className=\"eco-segment-empty\">{t('noResults')}</div>\n ) : (\n <div className=\"eco-segment-grid\">\n {segments.map((segment) => (\n <SegmentCard\n key={segment.id}\n segment={segment}\n onClick={onSelect}\n onEdit={onEdit}\n onDelete={onDelete}\n />\n ))}\n </div>\n )}\n </div>\n </div>\n );\n}\n\n/**\n * 条件选择器\n */\nexport function ConditionSelector({ condition, onChange, onRemove, properties }) {\n const operators = [\n { id: 'equals', label: t('equals') },\n { id: 'notEquals', label: t('notEquals') },\n { id: 'contains', label: t('contains') },\n { id: 'greaterThan', label: t('greaterThan') },\n { id: 'lessThan', label: t('lessThan') },\n { id: 'between', label: t('between') },\n { id: 'in', label: t('in') },\n { id: 'isSet', label: t('isSet') },\n { id: 'isNotSet', label: t('isNotSet') },\n ];\n\n return (\n <div className=\"eco-segment-condition\">\n <select\n className=\"eco-segment-select\"\n value={condition.propertyType || 'user'}\n onChange={(e) => onChange({ ...condition, propertyType: e.target.value })}\n >\n <option value=\"user\">{t('userProperty')}</option>\n <option value=\"event\">{t('eventProperty')}</option>\n </select>\n \n <select\n className=\"eco-segment-select\"\n value={condition.property || ''}\n onChange={(e) => onChange({ ...condition, property: e.target.value })}\n >\n <option value=\"\">{t('property')}</option>\n {(properties?.[condition.propertyType] || []).map((prop) => (\n <option key={prop.id} value={prop.id}>{prop.name}</option>\n ))}\n </select>\n \n <select\n className=\"eco-segment-select\"\n value={condition.operator || 'equals'}\n onChange={(e) => onChange({ ...condition, operator: e.target.value })}\n >\n {operators.map((op) => (\n <option key={op.id} value={op.id}>{op.label}</option>\n ))}\n </select>\n \n {!['isSet', 'isNotSet'].includes(condition.operator) && (\n <input\n type=\"text\"\n className=\"eco-segment-input\"\n value={condition.value || ''}\n onChange={(e) => onChange({ ...condition, value: e.target.value })}\n placeholder=\"Value\"\n />\n )}\n \n <button className=\"eco-segment-remove-btn\" onClick={onRemove}>\n ✕\n </button>\n </div>\n );\n}\n\n/**\n * 分群构建器\n */\nexport function SegmentBuilder({ initialData = null, onSave, onCancel }) {\n const [name, setName] = useState(initialData?.name || '');\n const [description, setDescription] = useState(initialData?.description || '');\n const [type, setType] = useState(initialData?.type || 'dynamic');\n \n const {\n conditions,\n addCondition,\n updateCondition,\n removeCondition,\n } = useConditionBuilder(initialData?.conditions || []);\n \n const { estimate, loading: estimating } = useSegmentEstimate(conditions);\n const { properties, loading: loadingProps } = useSegmentProperties();\n const { loading: saving, createSegment, updateSegment } = useSegmentActions();\n\n const handleSave = async () => {\n try {\n const data = { name, description, type, conditions };\n if (initialData?.id) {\n await updateSegment(initialData.id, data);\n } else {\n await createSegment(data);\n }\n onSave?.();\n } catch (err) {\n console.error('Save error:', err);\n }\n };\n\n const handleAddCondition = () => {\n addCondition({\n propertyType: 'user',\n property: '',\n operator: 'equals',\n value: '',\n });\n };\n\n return (\n <div className=\"eco-segment-builder\">\n <div className=\"eco-segment-builder-header\">\n <input\n type=\"text\"\n className=\"eco-segment-name-input\"\n placeholder={t('segmentName')}\n value={name}\n onChange={(e) => setName(e.target.value)}\n />\n <textarea\n className=\"eco-segment-desc-input\"\n placeholder={t('segmentDesc')}\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n rows={2}\n />\n </div>\n\n <div className=\"eco-segment-type-selector\">\n <label className={type === 'static' ? 'active' : ''}>\n <input\n type=\"radio\"\n value=\"static\"\n checked={type === 'static'}\n onChange={() => setType('static')}\n />\n {t('static')}\n </label>\n <label className={type === 'dynamic' ? 'active' : ''}>\n <input\n type=\"radio\"\n value=\"dynamic\"\n checked={type === 'dynamic'}\n onChange={() => setType('dynamic')}\n />\n {t('dynamic')}\n </label>\n <label className={type === 'realtime' ? 'active' : ''}>\n <input\n type=\"radio\"\n value=\"realtime\"\n checked={type === 'realtime'}\n onChange={() => setType('realtime')}\n />\n {t('realtime')}\n </label>\n </div>\n\n <div className=\"eco-segment-conditions\">\n <h4>{t('conditions')}</h4>\n {conditions.length === 0 ? (\n <div className=\"eco-segment-empty-conditions\">\n {t('addCondition')}\n </div>\n ) : (\n <div className=\"eco-segment-condition-list\">\n {conditions.map((condition, index) => (\n <div key={condition.id} className=\"eco-segment-condition-row\">\n {index > 0 && (\n <span className=\"eco-segment-logic\">{t('and')}</span>\n )}\n <ConditionSelector\n condition={condition}\n onChange={(updated) => updateCondition(condition.id, updated)}\n onRemove={() => removeCondition(condition.id)}\n properties={properties}\n />\n </div>\n ))}\n </div>\n )}\n <button className=\"eco-segment-add-condition-btn\" onClick={handleAddCondition}>\n + {t('addCondition')}\n </button>\n </div>\n\n <div className=\"eco-segment-estimate\">\n <div className=\"eco-segment-estimate-content\">\n <span className=\"eco-segment-estimate-label\">{t('estimated')} {t('users')}:</span>\n <span className=\"eco-segment-estimate-value\">\n {estimating ? t('calculating') : (estimate?.userCount?.toLocaleString() || 0)}\n </span>\n </div>\n {estimate?.percentage && (\n <span className=\"eco-segment-estimate-percentage\">\n ({(estimate.percentage * 100).toFixed(1)}% {t('percentage')})\n </span>\n )}\n </div>\n\n <div className=\"eco-segment-builder-actions\">\n <button className=\"eco-segment-btn\" onClick={onCancel}>\n {t('cancel')}\n </button>\n <button className=\"eco-segment-btn eco-segment-btn-secondary\" onClick={handleAddCondition}>\n {t('preview')}\n </button>\n <button \n className=\"eco-segment-btn eco-segment-btn-primary\"\n onClick={handleSave}\n disabled={saving || !name}\n >\n {saving ? t('loading') : t('save')}\n </button>\n </div>\n </div>\n );\n}\n\n/**\n * 分群选择下拉框\n */\nexport function SegmentSelect({ value, onChange, placeholder }) {\n const { segments, loading } = useSegments();\n const { presets } = usePresetSegments();\n\n return (\n <select\n className=\"eco-segment-dropdown\"\n value={value || ''}\n onChange={(e) => onChange(e.target.value)}\n disabled={loading}\n >\n <option value=\"\">{placeholder || t('segment')}</option>\n <optgroup label={t('segments')}>\n {presets.map((preset) => (\n <option key={preset.id} value={preset.id}>\n {preset.icon} {t(preset.name)}\n </option>\n ))}\n </optgroup>\n {segments.length > 0 && (\n <optgroup label={t('segments')}>\n {segments.map((segment) => (\n <option key={segment.id} value={segment.id}>\n {segment.name}\n </option>\n ))}\n </optgroup>\n )}\n </select>\n );\n}\n\n/**\n * 用户数量显示\n */\nexport function UserCountBadge({ segmentId }) {\n const { estimate, loading } = useSegmentEstimate([{ segmentId }]);\n\n return (\n <span className=\"eco-segment-user-count\">\n {loading ? '...' : (estimate?.userCount?.toLocaleString() || 0)} {t('users')}\n </span>\n );\n}\n\n","/**\n * @quantabit/segment-sdk\n * User Segmentation SDK - Full Version\n */\n\n// API Client\nexport { segmentApi, SegmentApiClient } from './services/segmentApi';\n\n// Types\nexport { SegmentType, ConditionOperator, PropertyType } from './types';\n\n// i18n\nexport { messages, SUPPORTED_LANGUAGES, setLanguage, getLanguage, t } from './i18n';\n\n// React Hooks\nexport {\n useSegments,\n useSegment,\n useSegmentEstimate,\n useSegmentUsers,\n useSegmentActions,\n useConditionBuilder,\n useSegmentProperties,\n usePresetSegments,\n} from './hooks/useSegment';\n\n// React Components\nexport {\n SegmentCard,\n SegmentList,\n ConditionSelector,\n SegmentBuilder,\n SegmentSelect,\n UserCountBadge,\n} from './components/SegmentBuilder';\n\n// Shortcut Methods\nimport { segmentApi } from './services/segmentApi';\n\nexport const getSegments = (params) => segmentApi.getSegments(params);\nexport const getSegment = (segmentId) => segmentApi.getSegment(segmentId);\nexport const createSegment = (data) => segmentApi.createSegment(data);\nexport const updateSegment = (segmentId, updates) => segmentApi.updateSegment(segmentId, updates);\nexport const deleteSegment = (segmentId) => segmentApi.deleteSegment(segmentId);\nexport const estimate = (rules) => segmentApi.estimate(rules);\nexport const getSegmentUsers = (segmentId, params) => segmentApi.getSegmentUsers(segmentId, params);\n\nimport \"./styles/segment.css\";\n"],"names":["SegmentApiClient","BaseApiClient","constructor","config","getSegments","params","get","getSegment","segmentId","createSegment","data","post","updateSegment","updates","put","deleteSegment","delete","getSegmentRules","updateSegmentRules","rules","estimateSize","getSegmentUsers","addUsersToSegment","userIds","user_ids","removeUsersFromSegment","checkUserInSegment","userId","refreshSegment","getRefreshStatus","getMySegments","getSegmentStats","getSegmentTrend","exportSegmentUsers","options","estimate","cloneSegment","getProperties","segmentApi","SegmentType","STATIC","DYNAMIC","REALTIME","PropertyType","USER","BEHAVIOR","TRANSACTION","DEVICE","ConditionOperator","SUPPORTED_LANGUAGES","messages","zh","segment","segments","editSegment","segmentName","segmentDesc","static","dynamic","realtime","condition","conditions","addCondition","removeCondition","and","or","property","userProperty","eventProperty","equals","notEquals","contains","notContains","startsWith","endsWith","greaterThan","lessThan","between","in","notIn","isSet","isNotSet","inLast","days","weeks","months","didEvent","didNotEvent","eventCount","firstTime","lastTime","users","percentage","estimated","calculating","save","cancel","preview","refresh","export","clone","useFor","marketing","analytics","targeting","active","inactive","processing","ready","noResults","loading","error","saved","deleted","allUsers","newUsers","activeUsers","churned","highValue","atRisk","en","ja","ko","currentLanguage","setLanguage","lang","includes","getLanguage","t","key","useSegments","setSegments","useState","setLoading","setError","fetchSegments","useCallback","response","err","message","useEffect","useSegment","setSegment","fetchSegment","useSegmentEstimate","setEstimate","calculateEstimate","length","debounce","setTimeout","clearTimeout","useSegmentUsers","setUsers","pagination","setPagination","page","pageSize","total","fetchUsers","prev","fetchPage","useSegmentActions","result","newName","name","useConditionBuilder","initialConditions","setConditions","id","Date","now","toString","updateCondition","map","c","filter","clearConditions","moveCondition","fromIndex","toIndex","removed","splice","useSegmentProperties","properties","setProperties","user","event","fetchProperties","usePresetSegments","presets","useMemo","icon","SegmentCard","onClick","onEdit","onDelete","onClone","statusClass","status","React","createElement","className","description","userCount","toLocaleString","conditionCount","type","e","stopPropagation","SegmentList","onSelect","preset","ConditionSelector","onChange","onRemove","operators","label","value","propertyType","target","prop","operator","op","placeholder","SegmentBuilder","initialData","onSave","onCancel","setName","setDescription","setType","estimating","loadingProps","saving","handleSave","console","handleAddCondition","rows","checked","index","updated","toFixed","disabled","SegmentSelect","UserCountBadge"],"mappings":"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"}