mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-29 18:13:47 +00:00
feat: add referral network graph visualization page
Interactive Sigma.js + graphology graph with ForceAtlas2 web worker layout, campaign/user node coloring, filters via nodeReducer pattern, search highlighting, user/campaign detail side panels, and 4-locale translations. Dependencies: sigma v3, graphology, graphology-layout-forceatlas2.
This commit is contained in:
@@ -1106,7 +1106,8 @@
|
||||
"policies": "Access Policies",
|
||||
"auditLog": "Audit Log",
|
||||
"salesStats": "Sales Statistics",
|
||||
"landings": "Landings"
|
||||
"landings": "Landings",
|
||||
"referralNetwork": "Referral Network"
|
||||
},
|
||||
"panel": {
|
||||
"title": "Admin Panel",
|
||||
@@ -1140,7 +1141,8 @@
|
||||
"policiesDesc": "Configure ABAC access policies",
|
||||
"auditLogDesc": "Review system activity and access history",
|
||||
"salesStatsDesc": "Sales analytics and trends",
|
||||
"landingsDesc": "Quick purchase landing pages"
|
||||
"landingsDesc": "Quick purchase landing pages",
|
||||
"referralNetworkDesc": "Referral graph and campaign visualization"
|
||||
},
|
||||
"salesStats": {
|
||||
"title": "Sales Statistics",
|
||||
@@ -1222,6 +1224,77 @@
|
||||
},
|
||||
"loadError": "Failed to load statistics"
|
||||
},
|
||||
"referralNetwork": {
|
||||
"title": "Referral Network",
|
||||
"subtitle": "Referral graph and advertising campaign visualization",
|
||||
"search": {
|
||||
"placeholder": "Search by TG ID, @username, email, campaign...",
|
||||
"noResults": "Nothing found",
|
||||
"resultsCount": "Found: {{count}}",
|
||||
"clear": "Clear search"
|
||||
},
|
||||
"filters": {
|
||||
"title": "Filters",
|
||||
"campaigns": "Campaigns",
|
||||
"partnersOnly": "Partners only",
|
||||
"minReferrals": "Min referrals",
|
||||
"reset": "Reset"
|
||||
},
|
||||
"stats": {
|
||||
"totalUsers": "Users",
|
||||
"totalReferrers": "Referrers",
|
||||
"totalCampaigns": "Campaigns",
|
||||
"totalEarnings": "Total earnings"
|
||||
},
|
||||
"legend": {
|
||||
"title": "Legend",
|
||||
"regularUser": "Regular user",
|
||||
"activeReferrer": "Active referrer",
|
||||
"partner": "Partner",
|
||||
"topReferrer": "Top referrer (10+)",
|
||||
"campaignUser": "From campaign",
|
||||
"campaignNode": "Ad campaign"
|
||||
},
|
||||
"user": {
|
||||
"tgId": "TG ID",
|
||||
"email": "Email",
|
||||
"partner": "Partner",
|
||||
"subscription": "Subscription",
|
||||
"validUntil": "until {{date}}",
|
||||
"noSubscription": "No subscription",
|
||||
"personalStats": "Personal statistics",
|
||||
"totalSpent": "Total spent",
|
||||
"referralEarnings": "Referral earnings",
|
||||
"referralBranch": "Referral branch",
|
||||
"directReferrals": "Direct referrals",
|
||||
"branchSize": "Total in branch",
|
||||
"branchRevenue": "Branch revenue",
|
||||
"source": "Source",
|
||||
"referredBy": "Referred by",
|
||||
"fromCampaign": "Campaign",
|
||||
"organic": "Organic"
|
||||
},
|
||||
"campaign": {
|
||||
"startParam": "Parameter",
|
||||
"active": "Active",
|
||||
"inactive": "Inactive",
|
||||
"directUsers": "Direct",
|
||||
"totalNetwork": "Total network",
|
||||
"totalRevenue": "Total revenue",
|
||||
"conversionRate": "Conversion",
|
||||
"avgCheck": "Avg check",
|
||||
"topReferrers": "Top referrers from campaign"
|
||||
},
|
||||
"controls": {
|
||||
"zoomIn": "Zoom in",
|
||||
"zoomOut": "Zoom out",
|
||||
"resetZoom": "Reset zoom",
|
||||
"fullscreen": "Fullscreen"
|
||||
},
|
||||
"loading": "Loading graph...",
|
||||
"error": "Failed to load network data",
|
||||
"empty": "No data to display"
|
||||
},
|
||||
"trafficUsage": {
|
||||
"title": "Traffic Usage",
|
||||
"subtitle": "Per-user traffic statistics by nodes",
|
||||
|
||||
@@ -940,7 +940,8 @@
|
||||
"policies": "سیاستهای دسترسی",
|
||||
"auditLog": "گزارش بازرسی",
|
||||
"salesStats": "آمار فروش",
|
||||
"landings": "صفحات فرود"
|
||||
"landings": "صفحات فرود",
|
||||
"referralNetwork": "شبکه ارجاع"
|
||||
},
|
||||
"panel": {
|
||||
"title": "پنل مدیریت",
|
||||
@@ -974,7 +975,8 @@
|
||||
"policiesDesc": "تنظیم سیاستهای کنترل دسترسی ABAC",
|
||||
"auditLogDesc": "بررسی فعالیت سیستم و تاریخچه دسترسی",
|
||||
"salesStatsDesc": "تحلیل فروش و روندها",
|
||||
"landingsDesc": "صفحات خرید سریع"
|
||||
"landingsDesc": "صفحات خرید سریع",
|
||||
"referralNetworkDesc": "نمایش بصری گراف ارجاعات و کمپینها"
|
||||
},
|
||||
"salesStats": {
|
||||
"title": "آمار فروش",
|
||||
@@ -1056,6 +1058,77 @@
|
||||
},
|
||||
"loadError": "بارگذاری آمار ناموفق بود"
|
||||
},
|
||||
"referralNetwork": {
|
||||
"title": "شبکه ارجاع",
|
||||
"subtitle": "نمایش بصری گراف ارجاعات و کمپینهای تبلیغاتی",
|
||||
"search": {
|
||||
"placeholder": "جستجو بر اساس TG ID، @نامکاربری، ایمیل، کمپین...",
|
||||
"noResults": "نتیجهای یافت نشد",
|
||||
"resultsCount": "یافت شد: {{count}}",
|
||||
"clear": "پاک کردن جستجو"
|
||||
},
|
||||
"filters": {
|
||||
"title": "فیلترها",
|
||||
"campaigns": "کمپینها",
|
||||
"partnersOnly": "فقط شرکا",
|
||||
"minReferrals": "حداقل ارجاعات",
|
||||
"reset": "بازنشانی"
|
||||
},
|
||||
"stats": {
|
||||
"totalUsers": "کاربران",
|
||||
"totalReferrers": "ارجاعدهندگان",
|
||||
"totalCampaigns": "کمپینها",
|
||||
"totalEarnings": "درآمد کل"
|
||||
},
|
||||
"legend": {
|
||||
"title": "راهنما",
|
||||
"regularUser": "کاربر عادی",
|
||||
"activeReferrer": "ارجاعدهنده فعال",
|
||||
"partner": "شریک",
|
||||
"topReferrer": "ارجاعدهنده برتر (+۱۰)",
|
||||
"campaignUser": "از کمپین",
|
||||
"campaignNode": "کمپین تبلیغاتی"
|
||||
},
|
||||
"user": {
|
||||
"tgId": "شناسه TG",
|
||||
"email": "ایمیل",
|
||||
"partner": "شریک",
|
||||
"subscription": "اشتراک",
|
||||
"validUntil": "تا {{date}}",
|
||||
"noSubscription": "بدون اشتراک",
|
||||
"personalStats": "آمار شخصی",
|
||||
"totalSpent": "مجموع پرداختی",
|
||||
"referralEarnings": "درآمد ارجاع",
|
||||
"referralBranch": "شاخه ارجاع",
|
||||
"directReferrals": "ارجاعات مستقیم",
|
||||
"branchSize": "کل شاخه",
|
||||
"branchRevenue": "درآمد شاخه",
|
||||
"source": "منبع",
|
||||
"referredBy": "معرفی شده توسط",
|
||||
"fromCampaign": "کمپین",
|
||||
"organic": "طبیعی"
|
||||
},
|
||||
"campaign": {
|
||||
"startParam": "پارامتر",
|
||||
"active": "فعال",
|
||||
"inactive": "غیرفعال",
|
||||
"directUsers": "مستقیم",
|
||||
"totalNetwork": "کل شبکه",
|
||||
"totalRevenue": "درآمد کل",
|
||||
"conversionRate": "نرخ تبدیل",
|
||||
"avgCheck": "میانگین مبلغ",
|
||||
"topReferrers": "ارجاعدهندگان برتر کمپین"
|
||||
},
|
||||
"controls": {
|
||||
"zoomIn": "بزرگنمایی",
|
||||
"zoomOut": "کوچکنمایی",
|
||||
"resetZoom": "بازنشانی زوم",
|
||||
"fullscreen": "تمامصفحه"
|
||||
},
|
||||
"loading": "بارگذاری گراف...",
|
||||
"error": "خطا در بارگذاری دادههای شبکه",
|
||||
"empty": "دادهای برای نمایش وجود ندارد"
|
||||
},
|
||||
"trafficUsage": {
|
||||
"title": "مصرف ترافیک",
|
||||
"subtitle": "آمار ترافیک کاربران بر اساس نودها",
|
||||
|
||||
@@ -1127,7 +1127,8 @@
|
||||
"policies": "Политики доступа",
|
||||
"auditLog": "Журнал аудита",
|
||||
"salesStats": "Статистика продаж",
|
||||
"landings": "Лендинги"
|
||||
"landings": "Лендинги",
|
||||
"referralNetwork": "Реферальная сеть"
|
||||
},
|
||||
"panel": {
|
||||
"title": "Панель администратора",
|
||||
@@ -1161,7 +1162,8 @@
|
||||
"policiesDesc": "Настройка политик контроля доступа ABAC",
|
||||
"auditLogDesc": "Просмотр активности системы и истории доступа",
|
||||
"salesStatsDesc": "Аналитика продаж и тренды",
|
||||
"landingsDesc": "Страницы быстрой покупки"
|
||||
"landingsDesc": "Страницы быстрой покупки",
|
||||
"referralNetworkDesc": "Визуализация графа рефералов и РК"
|
||||
},
|
||||
"salesStats": {
|
||||
"title": "Статистика продаж",
|
||||
@@ -1243,6 +1245,77 @@
|
||||
},
|
||||
"loadError": "Не удалось загрузить статистику"
|
||||
},
|
||||
"referralNetwork": {
|
||||
"title": "Реферальная сеть",
|
||||
"subtitle": "Визуализация графа рефералов и рекламных кампаний",
|
||||
"search": {
|
||||
"placeholder": "Поиск по TG ID, @username, email, кампании...",
|
||||
"noResults": "Ничего не найдено",
|
||||
"resultsCount": "Найдено: {{count}}",
|
||||
"clear": "Очистить поиск"
|
||||
},
|
||||
"filters": {
|
||||
"title": "Фильтры",
|
||||
"campaigns": "Кампании",
|
||||
"partnersOnly": "Только партнёры",
|
||||
"minReferrals": "Мин. рефералов",
|
||||
"reset": "Сбросить"
|
||||
},
|
||||
"stats": {
|
||||
"totalUsers": "Пользователей",
|
||||
"totalReferrers": "Рефереров",
|
||||
"totalCampaigns": "Кампаний",
|
||||
"totalEarnings": "Общий доход"
|
||||
},
|
||||
"legend": {
|
||||
"title": "Легенда",
|
||||
"regularUser": "Обычный",
|
||||
"activeReferrer": "Активный реферер",
|
||||
"partner": "Партнёр",
|
||||
"topReferrer": "Топ-реферер (10+)",
|
||||
"campaignUser": "Из кампании",
|
||||
"campaignNode": "Рекламная кампания"
|
||||
},
|
||||
"user": {
|
||||
"tgId": "TG ID",
|
||||
"email": "Email",
|
||||
"partner": "Партнёр",
|
||||
"subscription": "Подписка",
|
||||
"validUntil": "до {{date}}",
|
||||
"noSubscription": "Нет подписки",
|
||||
"personalStats": "Личная статистика",
|
||||
"totalSpent": "Оплачено всего",
|
||||
"referralEarnings": "Реф. доход",
|
||||
"referralBranch": "Реферальная ветка",
|
||||
"directReferrals": "Привёл людей",
|
||||
"branchSize": "Всего в ветке",
|
||||
"branchRevenue": "Доход ветки",
|
||||
"source": "Источник",
|
||||
"referredBy": "Пришёл от",
|
||||
"fromCampaign": "РК",
|
||||
"organic": "Органический"
|
||||
},
|
||||
"campaign": {
|
||||
"startParam": "Параметр",
|
||||
"active": "Активна",
|
||||
"inactive": "Неактивна",
|
||||
"directUsers": "Напрямую",
|
||||
"totalNetwork": "Вся сеть",
|
||||
"totalRevenue": "Общий доход",
|
||||
"conversionRate": "Конверсия",
|
||||
"avgCheck": "Средний чек",
|
||||
"topReferrers": "Топ-рефереры из кампании"
|
||||
},
|
||||
"controls": {
|
||||
"zoomIn": "Приблизить",
|
||||
"zoomOut": "Отдалить",
|
||||
"resetZoom": "Сбросить зум",
|
||||
"fullscreen": "Полный экран"
|
||||
},
|
||||
"loading": "Загрузка графа...",
|
||||
"error": "Ошибка загрузки данных сети",
|
||||
"empty": "Нет данных для отображения"
|
||||
},
|
||||
"trafficUsage": {
|
||||
"title": "Расход трафика",
|
||||
"subtitle": "Статистика трафика по пользователям и нодам",
|
||||
|
||||
@@ -940,7 +940,8 @@
|
||||
"policies": "访问策略",
|
||||
"auditLog": "审计日志",
|
||||
"salesStats": "销售统计",
|
||||
"landings": "落地页"
|
||||
"landings": "落地页",
|
||||
"referralNetwork": "推荐网络"
|
||||
},
|
||||
"panel": {
|
||||
"title": "管理面板",
|
||||
@@ -974,7 +975,8 @@
|
||||
"policiesDesc": "配置ABAC访问控制策略",
|
||||
"auditLogDesc": "查看系统活动和访问历史",
|
||||
"salesStatsDesc": "销售分析与趋势",
|
||||
"landingsDesc": "快速购买落地页"
|
||||
"landingsDesc": "快速购买落地页",
|
||||
"referralNetworkDesc": "推荐图表和广告活动可视化"
|
||||
},
|
||||
"salesStats": {
|
||||
"title": "销售统计",
|
||||
@@ -1056,6 +1058,77 @@
|
||||
},
|
||||
"loadError": "加载统计失败"
|
||||
},
|
||||
"referralNetwork": {
|
||||
"title": "推荐网络",
|
||||
"subtitle": "推荐图表和广告活动可视化",
|
||||
"search": {
|
||||
"placeholder": "按TG ID、@用户名、邮箱、活动搜索...",
|
||||
"noResults": "未找到",
|
||||
"resultsCount": "找到: {{count}}",
|
||||
"clear": "清除搜索"
|
||||
},
|
||||
"filters": {
|
||||
"title": "过滤器",
|
||||
"campaigns": "活动",
|
||||
"partnersOnly": "仅合作伙伴",
|
||||
"minReferrals": "最少推荐数",
|
||||
"reset": "重置"
|
||||
},
|
||||
"stats": {
|
||||
"totalUsers": "用户",
|
||||
"totalReferrers": "推荐人",
|
||||
"totalCampaigns": "活动",
|
||||
"totalEarnings": "总收入"
|
||||
},
|
||||
"legend": {
|
||||
"title": "图例",
|
||||
"regularUser": "普通用户",
|
||||
"activeReferrer": "活跃推荐人",
|
||||
"partner": "合作伙伴",
|
||||
"topReferrer": "顶级推荐人 (10+)",
|
||||
"campaignUser": "来自活动",
|
||||
"campaignNode": "广告活动"
|
||||
},
|
||||
"user": {
|
||||
"tgId": "TG ID",
|
||||
"email": "邮箱",
|
||||
"partner": "合作伙伴",
|
||||
"subscription": "订阅",
|
||||
"validUntil": "有效至 {{date}}",
|
||||
"noSubscription": "无订阅",
|
||||
"personalStats": "个人统计",
|
||||
"totalSpent": "总花费",
|
||||
"referralEarnings": "推荐收入",
|
||||
"referralBranch": "推荐分支",
|
||||
"directReferrals": "直接推荐",
|
||||
"branchSize": "分支总人数",
|
||||
"branchRevenue": "分支收入",
|
||||
"source": "来源",
|
||||
"referredBy": "由...推荐",
|
||||
"fromCampaign": "活动",
|
||||
"organic": "自然流量"
|
||||
},
|
||||
"campaign": {
|
||||
"startParam": "参数",
|
||||
"active": "活跃",
|
||||
"inactive": "非活跃",
|
||||
"directUsers": "直接",
|
||||
"totalNetwork": "总网络",
|
||||
"totalRevenue": "总收入",
|
||||
"conversionRate": "转化率",
|
||||
"avgCheck": "平均金额",
|
||||
"topReferrers": "活动顶级推荐人"
|
||||
},
|
||||
"controls": {
|
||||
"zoomIn": "放大",
|
||||
"zoomOut": "缩小",
|
||||
"resetZoom": "重置缩放",
|
||||
"fullscreen": "全屏"
|
||||
},
|
||||
"loading": "加载图表...",
|
||||
"error": "加载网络数据失败",
|
||||
"empty": "无数据显示"
|
||||
},
|
||||
"trafficUsage": {
|
||||
"title": "流量使用",
|
||||
"subtitle": "按节点的用户流量统计",
|
||||
|
||||
Reference in New Issue
Block a user