feat: show referral relationships in admin user cards

This commit is contained in:
3252a8
2026-06-01 00:36:05 +03:00
parent 7cf1d577f3
commit c2344824dc
11 changed files with 662 additions and 12 deletions
+18
View File
@@ -440,6 +440,13 @@
"admin_user_referral_revenue_label": "💸 <b>Referral Revenue:</b>",
"admin_user_invited_friends_label": "👥 <b>Friends invited:</b>",
"admin_user_ref_purchased_label": "💳 <b>Purchased subscription:</b>",
"admin_user_invited_by_label": "🎁 <b>Invited by:</b>",
"admin_user_invitees_button": "👥 Invited users",
"admin_user_invitees_message_title": "👥 <b>Users invited by {user}</b>\n\nTotal: <b>{total}</b>. Page {current}/{total_pages}.",
"admin_user_invitees_empty": "This user has not invited anyone yet.",
"admin_user_invitee_item": "{index}. {user}{suffix}",
"admin_user_invitee_registered_suffix": " · registered {date}",
"admin_user_invitees_error": "❌ Failed to load invited users",
"admin_user_links_section_title": "🔗 <b>Links</b>",
"admin_user_subscription_url_label": "📡 <b>Subscription:</b>",
"admin_user_ref_bot_link_label": "🤖 <b>Referral link (bot):</b>",
@@ -1247,6 +1254,14 @@
"admin_user_section_profile": "Profile",
"admin_user_label_registration": "Registration",
"admin_user_label_ref_code": "Referral Code",
"admin_user_label_invited_by": "Invited by",
"admin_user_label_invited_users": "Invited users",
"admin_user_invited_by_none": "—",
"admin_user_invitees_open": "Show",
"admin_user_open_related": "Open user card",
"admin_user_invitees_title": "Invited users",
"admin_user_invitees_description": "{name} · {count}",
"admin_user_col_user": "User",
"admin_user_section_links": "Links",
"admin_user_copy_tooltip": "Copy",
"admin_user_sub_link_copied": "Subscription link copied",
@@ -1373,6 +1388,9 @@
"admin_ads_col_registrations": "Registrations",
"admin_ads_col_conversions": "Conversions",
"admin_no_data": "No data",
"admin_pagination_meta": "{current}/{total}",
"admin_prev_page": "Back",
"admin_next_page": "Next",
"admin_settings_hint": "Changes in the admin panel take precedence over .env. The 'Reset' button returns the value from environment variables.",
"admin_settings_legacy_tariffs_warning_title": "remnawave-tg-shop legacy compatibility",
"admin_settings_legacy_tariffs_warning_body": "These fields are only for the old mode without a JSON catalog. They do not apply when tariffs are configured in the dedicated Tariffs section.",
+18
View File
@@ -440,6 +440,13 @@
"admin_user_referral_revenue_label": "💸 <b>Доход по рефералам:</b>",
"admin_user_invited_friends_label": "👥 <b>Приглашено друзей:</b>",
"admin_user_ref_purchased_label": "💳 <b>Купили подписку:</b>",
"admin_user_invited_by_label": "🎁 <b>Пригласил:</b>",
"admin_user_invitees_button": "👥 Приглашённые",
"admin_user_invitees_message_title": "👥 <b>Пользователи, приглашённые {user}</b>\n\nВсего: <b>{total}</b>. Страница {current}/{total_pages}.",
"admin_user_invitees_empty": "Пользователь пока никого не пригласил.",
"admin_user_invitee_item": "{index}. {user}{suffix}",
"admin_user_invitee_registered_suffix": " · регистрация {date}",
"admin_user_invitees_error": "❌ Ошибка загрузки приглашённых пользователей",
"admin_user_links_section_title": "🔗 <b>Ссылки</b>",
"admin_user_subscription_url_label": "📡 <b>Подписка:</b>",
"admin_user_ref_bot_link_label": "🤖 <b>Реф. ссылка (бот):</b>",
@@ -1247,6 +1254,14 @@
"admin_user_section_profile": "Профиль",
"admin_user_label_registration": "Регистрация",
"admin_user_label_ref_code": "Реф. код",
"admin_user_label_invited_by": "Пригласил",
"admin_user_label_invited_users": "Приглашённые",
"admin_user_invited_by_none": "—",
"admin_user_invitees_open": "Показать",
"admin_user_open_related": "Открыть карточку",
"admin_user_invitees_title": "Приглашённые пользователи",
"admin_user_invitees_description": "{name} · {count}",
"admin_user_col_user": "Пользователь",
"admin_user_section_links": "Ссылки",
"admin_user_copy_tooltip": "Скопировать",
"admin_user_sub_link_copied": "Ссылка на подписку скопирована",
@@ -1373,6 +1388,9 @@
"admin_ads_col_registrations": "Регистрации",
"admin_ads_col_conversions": "Конверсии",
"admin_no_data": "Нет данных",
"admin_pagination_meta": "{current}/{total}",
"admin_prev_page": "Назад",
"admin_next_page": "Вперёд",
"admin_settings_hint": "Изменения в админке имеют приоритет над .env. Кнопка «Сбросить» возвращает значение из переменных окружения.",
"admin_settings_legacy_tariffs_warning_title": "Совместимость с remnawave-tg-shop legacy",
"admin_settings_legacy_tariffs_warning_body": "Эти поля нужны только для старого режима без JSON-каталога. Если тарифы настроены через отдельный раздел «Тарифы», они не применяются.",