mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-28 17:43:47 +00:00
feat: add partner management and withdrawal admin pages
- Admin partners page: list partners, view applications, approve/reject - Admin partner detail: stats, commission management, campaign assignment - Admin withdrawals page: list with risk scoring, status filters including cancelled - Admin withdrawal detail: fraud analysis, approve/reject/complete actions - Partner API client with full TypeScript interfaces - Withdrawal API client with admin and user endpoints - Referral page: partner application form, withdrawal balance and history - Navigation: partners and withdrawals in admin panel marketing group - i18n: full translations for ru, en, zh, fa locales - Neutral fallbacks for unknown status badges
This commit is contained in:
@@ -679,7 +679,69 @@
|
||||
"referral_subscription_renewal": "Продление подписки реферала",
|
||||
"referral_bonus": "Бонус за реферала"
|
||||
},
|
||||
"disabled": "Реферальная программа временно отключена"
|
||||
"disabled": "Реферальная программа временно отключена",
|
||||
"partner": {
|
||||
"becomePartner": "Стать партнером",
|
||||
"becomePartnerDesc": "Подайте заявку на партнерскую программу, чтобы получить повышенную комиссию и возможность вывода заработка.",
|
||||
"applyButton": "Подать заявку",
|
||||
"applyTitle": "Заявка на партнерство",
|
||||
"applyDesc": "Заполните форму ниже для подачи заявки на партнерскую программу. Все поля необязательные.",
|
||||
"underReview": "Заявка на рассмотрении",
|
||||
"underReviewDesc": "Ваша заявка на партнерство рассматривается. Мы уведомим вас, когда будет принято решение.",
|
||||
"submittedAt": "Подана {{date}}",
|
||||
"partnerStatus": "Партнер",
|
||||
"active": "Активен",
|
||||
"commissionInfo": "Ваша партнерская комиссия составляет {{percent}}%",
|
||||
"rejected": "Заявка отклонена",
|
||||
"reapplyButton": "Подать заново",
|
||||
"applying": "Отправка...",
|
||||
"submitApplication": "Отправить заявку",
|
||||
"applyError": "Не удалось отправить заявку. Попробуйте снова.",
|
||||
"fields": {
|
||||
"companyName": "Название компании",
|
||||
"companyNamePlaceholder": "Название вашей компании или бренда",
|
||||
"telegramChannel": "Telegram-канал",
|
||||
"telegramChannelPlaceholder": "@вашканал",
|
||||
"websiteUrl": "Сайт",
|
||||
"websiteUrlPlaceholder": "https://example.com",
|
||||
"description": "Описание",
|
||||
"descriptionPlaceholder": "Расскажите о вашей аудитории и планах продвижения...",
|
||||
"expectedReferrals": "Ожидаемое количество рефералов в месяц",
|
||||
"expectedReferralsPlaceholder": "Примерное количество в месяц"
|
||||
}
|
||||
},
|
||||
"withdrawal": {
|
||||
"title": "Вывод средств",
|
||||
"goToWithdrawal": "Вывести",
|
||||
"available": "Доступно",
|
||||
"totalEarned": "Всего заработано",
|
||||
"withdrawn": "Выведено",
|
||||
"spent": "Потрачено на услуги",
|
||||
"pending": "В обработке",
|
||||
"requestButton": "Запросить вывод",
|
||||
"minAmount": "Минимальная сумма вывода: {{amount}}",
|
||||
"history": "История выводов",
|
||||
"noHistory": "Запросов на вывод пока нет",
|
||||
"requestTitle": "Запрос на вывод",
|
||||
"requestDesc": "Доступно для вывода: {{available}}",
|
||||
"requesting": "Отправка...",
|
||||
"submitRequest": "Отправить запрос",
|
||||
"requestError": "Не удалось создать запрос на вывод. Попробуйте снова.",
|
||||
"fields": {
|
||||
"amount": "Сумма (копейки)",
|
||||
"amountPlaceholder": "Введите сумму в копейках",
|
||||
"amountHint": "Введите сумму в копейках (100 копеек = 1 {{currency}})",
|
||||
"paymentDetails": "Реквизиты для оплаты",
|
||||
"paymentDetailsPlaceholder": "Номер карты, адрес кошелька или другие реквизиты..."
|
||||
},
|
||||
"status": {
|
||||
"pending": "В обработке",
|
||||
"approved": "Одобрен",
|
||||
"completed": "Завершен",
|
||||
"rejected": "Отклонен",
|
||||
"cancelled": "Отменен"
|
||||
}
|
||||
}
|
||||
},
|
||||
"support": {
|
||||
"title": "Поддержка",
|
||||
@@ -796,7 +858,9 @@
|
||||
"promoGroups": "Группы скидок",
|
||||
"trafficUsage": "Расход трафика",
|
||||
"updates": "Обновления",
|
||||
"pinnedMessages": "Закреплённые"
|
||||
"pinnedMessages": "Закреплённые",
|
||||
"partners": "Партнёры",
|
||||
"withdrawals": "Выводы"
|
||||
},
|
||||
"panel": {
|
||||
"title": "Панель администратора",
|
||||
@@ -821,7 +885,9 @@
|
||||
"promoGroupsDesc": "Группы скидок для пользователей",
|
||||
"trafficUsageDesc": "Трафик пользователей по нодам",
|
||||
"updatesDesc": "Версии бота и кабинета",
|
||||
"pinnedMessagesDesc": "Управление закреплёнными сообщениями"
|
||||
"pinnedMessagesDesc": "Управление закреплёнными сообщениями",
|
||||
"partnersDesc": "Управление заявками партнёров и комиссиями",
|
||||
"withdrawalsDesc": "Проверка и обработка заявок на вывод"
|
||||
},
|
||||
"trafficUsage": {
|
||||
"title": "Расход трафика",
|
||||
@@ -2243,6 +2309,153 @@
|
||||
"loadError": "Не удалось загрузить кампанию",
|
||||
"updateError": "Не удалось сохранить изменения"
|
||||
},
|
||||
"withdrawals": {
|
||||
"title": "Выводы средств",
|
||||
"subtitle": "Управление заявками на вывод",
|
||||
"noData": "Нет заявок на вывод",
|
||||
"risk": "Риск:",
|
||||
"overview": {
|
||||
"pendingCount": "Ожидают",
|
||||
"pendingAmount": "Сумма ожидания",
|
||||
"approvedCount": "Одобрено",
|
||||
"completedCount": "Выполнено"
|
||||
},
|
||||
"filter": {
|
||||
"all": "Все",
|
||||
"pending": "Ожидание",
|
||||
"approved": "Одобрено",
|
||||
"rejected": "Отклонено",
|
||||
"completed": "Выполнено"
|
||||
},
|
||||
"status": {
|
||||
"pending": "Ожидание",
|
||||
"approved": "Одобрено",
|
||||
"rejected": "Отклонено",
|
||||
"completed": "Выполнено",
|
||||
"cancelled": "Отменено"
|
||||
},
|
||||
"detail": {
|
||||
"title": "Заявка на вывод",
|
||||
"loadError": "Не удалось загрузить детали заявки",
|
||||
"userInfo": "Информация о пользователе",
|
||||
"username": "Имя пользователя",
|
||||
"telegramId": "Telegram ID",
|
||||
"balance": "Баланс",
|
||||
"totalReferrals": "Всего рефералов",
|
||||
"totalEarnings": "Общий заработок",
|
||||
"createdAt": "Создано",
|
||||
"paymentDetails": "Реквизиты для оплаты",
|
||||
"noPaymentDetails": "Реквизиты не указаны",
|
||||
"riskAnalysis": "Анализ рисков",
|
||||
"riskScore": "Оценка риска",
|
||||
"riskLevel": {
|
||||
"low": "Низкий",
|
||||
"medium": "Средний",
|
||||
"high": "Высокий",
|
||||
"critical": "Критический"
|
||||
},
|
||||
"flags": "Флаги",
|
||||
"balanceStats": "Статистика баланса",
|
||||
"referralDeposits": "Депозиты рефералов",
|
||||
"suspiciousReferrals": "Подозрительные рефералы",
|
||||
"earningsByReason": "Доходы по причинам",
|
||||
"adminComment": "Комментарий администратора",
|
||||
"processedAt": "Обработано",
|
||||
"approve": "Одобрить",
|
||||
"approving": "Одобрение...",
|
||||
"reject": "Отклонить",
|
||||
"rejecting": "Отклонение...",
|
||||
"complete": "Отметить как выполнено",
|
||||
"completing": "Завершение...",
|
||||
"rejectTitle": "Отклонить заявку?",
|
||||
"rejectDescription": "При необходимости добавьте комментарий с причиной отклонения.",
|
||||
"commentPlaceholder": "Причина отклонения (необязательно)...",
|
||||
"confirmReject": "Подтвердить отклонение"
|
||||
}
|
||||
},
|
||||
"partners": {
|
||||
"title": "Партнёры",
|
||||
"subtitle": "Управление партнёрами и заявками",
|
||||
"totalPartners": "Всего партнёров",
|
||||
"pendingApplications": "Заявок на рассмотрении",
|
||||
"totalReferrals": "Всего рефералов",
|
||||
"totalEarnings": "Всего заработано",
|
||||
"tabs": {
|
||||
"partners": "Партнёры",
|
||||
"applications": "Заявки"
|
||||
},
|
||||
"noPartners": "Партнёров пока нет",
|
||||
"noApplications": "Нет заявок на рассмотрении",
|
||||
"commission": "{{percent}}% комиссия",
|
||||
"referrals": "{{count}} рефералов",
|
||||
"actions": {
|
||||
"approve": "Одобрить",
|
||||
"reject": "Отклонить"
|
||||
},
|
||||
"applicationFields": {
|
||||
"website": "Сайт",
|
||||
"channel": "Канал",
|
||||
"description": "Описание",
|
||||
"expectedReferrals": "Ожидаемых рефералов/мес"
|
||||
},
|
||||
"approveDialog": {
|
||||
"title": "Одобрить заявку",
|
||||
"description": "Одобрить партнёрскую заявку от {{name}}",
|
||||
"commissionLabel": "Комиссия (%)"
|
||||
},
|
||||
"rejectDialog": {
|
||||
"title": "Отклонить заявку",
|
||||
"description": "Отклонить партнёрскую заявку от {{name}}",
|
||||
"commentLabel": "Комментарий (необязательно)",
|
||||
"commentPlaceholder": "Причина отклонения..."
|
||||
}
|
||||
},
|
||||
"partnerDetail": {
|
||||
"title": "Детали партнёра",
|
||||
"loadError": "Не удалось загрузить данные партнёра",
|
||||
"status": {
|
||||
"approved": "Активен",
|
||||
"pending": "На рассмотрении",
|
||||
"rejected": "Отклонён",
|
||||
"none": "Не партнёр"
|
||||
},
|
||||
"stats": {
|
||||
"totalReferrals": "Всего рефералов",
|
||||
"paidReferrals": "Оплативших",
|
||||
"activeReferrals": "Активных",
|
||||
"conversionRate": "Конверсия"
|
||||
},
|
||||
"earnings": {
|
||||
"title": "Заработок",
|
||||
"allTime": "За всё время",
|
||||
"today": "Сегодня",
|
||||
"week": "За неделю",
|
||||
"month": "За месяц"
|
||||
},
|
||||
"commission": {
|
||||
"title": "Комиссия",
|
||||
"update": "Изменить"
|
||||
},
|
||||
"campaigns": {
|
||||
"title": "Привязанные кампании",
|
||||
"noCampaigns": "Нет привязанных кампаний",
|
||||
"active": "Активна",
|
||||
"inactive": "Неактивна"
|
||||
},
|
||||
"dangerZone": {
|
||||
"title": "Опасная зона",
|
||||
"revokeButton": "Отозвать партнёрский статус"
|
||||
},
|
||||
"commissionDialog": {
|
||||
"title": "Изменить комиссию",
|
||||
"description": "Установите новый процент комиссии для этого партнёра.",
|
||||
"label": "Комиссия (%)"
|
||||
},
|
||||
"revokeDialog": {
|
||||
"title": "Отозвать статус партнёра?",
|
||||
"description": "Это лишит партнёра привилегий. Партнёр больше не будет получать комиссию от рефералов."
|
||||
}
|
||||
},
|
||||
"promocodes": {
|
||||
"title": "Промокоды",
|
||||
"subtitle": "Управление промокодами и группами скидок",
|
||||
|
||||
Reference in New Issue
Block a user