mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-28 09:33:46 +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:
@@ -652,7 +652,69 @@
|
||||
"referral_subscription_renewal": "Referral Subscription Renewal",
|
||||
"referral_bonus": "Referral Bonus"
|
||||
},
|
||||
"disabled": "Referral program is currently disabled"
|
||||
"disabled": "Referral program is currently disabled",
|
||||
"partner": {
|
||||
"becomePartner": "Become a Partner",
|
||||
"becomePartnerDesc": "Apply for the partner program to get higher commission rates and the ability to withdraw your earnings.",
|
||||
"applyButton": "Apply",
|
||||
"applyTitle": "Partner Application",
|
||||
"applyDesc": "Fill out the form below to apply for our partner program. All fields are optional.",
|
||||
"underReview": "Application Under Review",
|
||||
"underReviewDesc": "Your partner application is being reviewed. We'll notify you once a decision is made.",
|
||||
"submittedAt": "Submitted on {{date}}",
|
||||
"partnerStatus": "Partner",
|
||||
"active": "Active",
|
||||
"commissionInfo": "Your partner commission rate is {{percent}}%",
|
||||
"rejected": "Application Rejected",
|
||||
"reapplyButton": "Reapply",
|
||||
"applying": "Submitting...",
|
||||
"submitApplication": "Submit Application",
|
||||
"applyError": "Failed to submit application. Please try again.",
|
||||
"fields": {
|
||||
"companyName": "Company Name",
|
||||
"companyNamePlaceholder": "Your company or brand name",
|
||||
"telegramChannel": "Telegram Channel",
|
||||
"telegramChannelPlaceholder": "@yourchannel",
|
||||
"websiteUrl": "Website URL",
|
||||
"websiteUrlPlaceholder": "https://example.com",
|
||||
"description": "Description",
|
||||
"descriptionPlaceholder": "Tell us about your audience and how you plan to promote...",
|
||||
"expectedReferrals": "Expected Monthly Referrals",
|
||||
"expectedReferralsPlaceholder": "Estimated number per month"
|
||||
}
|
||||
},
|
||||
"withdrawal": {
|
||||
"title": "Withdrawal",
|
||||
"goToWithdrawal": "Withdraw",
|
||||
"available": "Available",
|
||||
"totalEarned": "Total Earned",
|
||||
"withdrawn": "Withdrawn",
|
||||
"spent": "Spent on Services",
|
||||
"pending": "Pending",
|
||||
"requestButton": "Request Withdrawal",
|
||||
"minAmount": "Minimum withdrawal amount: {{amount}}",
|
||||
"history": "Withdrawal History",
|
||||
"noHistory": "No withdrawal requests yet",
|
||||
"requestTitle": "Request Withdrawal",
|
||||
"requestDesc": "Available for withdrawal: {{available}}",
|
||||
"requesting": "Submitting...",
|
||||
"submitRequest": "Submit Request",
|
||||
"requestError": "Failed to create withdrawal request. Please try again.",
|
||||
"fields": {
|
||||
"amount": "Amount (kopeks)",
|
||||
"amountPlaceholder": "Enter amount in kopeks",
|
||||
"amountHint": "Enter the amount in kopeks (100 kopeks = 1 {{currency}})",
|
||||
"paymentDetails": "Payment Details",
|
||||
"paymentDetailsPlaceholder": "Card number, wallet address, or other payment info..."
|
||||
},
|
||||
"status": {
|
||||
"pending": "Pending",
|
||||
"approved": "Approved",
|
||||
"completed": "Completed",
|
||||
"rejected": "Rejected",
|
||||
"cancelled": "Cancelled"
|
||||
}
|
||||
}
|
||||
},
|
||||
"support": {
|
||||
"title": "Support",
|
||||
@@ -775,7 +837,9 @@
|
||||
"promoGroups": "Discount Groups",
|
||||
"trafficUsage": "Traffic Usage",
|
||||
"updates": "Updates",
|
||||
"pinnedMessages": "Pinned Messages"
|
||||
"pinnedMessages": "Pinned Messages",
|
||||
"partners": "Partners",
|
||||
"withdrawals": "Withdrawals"
|
||||
},
|
||||
"panel": {
|
||||
"title": "Admin Panel",
|
||||
@@ -800,7 +864,9 @@
|
||||
"promoGroupsDesc": "Discount groups for users",
|
||||
"trafficUsageDesc": "Per-user traffic by nodes",
|
||||
"updatesDesc": "Bot & cabinet versions",
|
||||
"pinnedMessagesDesc": "Manage pinned messages for users"
|
||||
"pinnedMessagesDesc": "Manage pinned messages for users",
|
||||
"partnersDesc": "Manage partner applications and commissions",
|
||||
"withdrawalsDesc": "Review and process withdrawal requests"
|
||||
},
|
||||
"trafficUsage": {
|
||||
"title": "Traffic Usage",
|
||||
@@ -1721,6 +1787,153 @@
|
||||
"loadError": "Failed to load campaign",
|
||||
"updateError": "Failed to save changes"
|
||||
},
|
||||
"withdrawals": {
|
||||
"title": "Withdrawals",
|
||||
"subtitle": "Manage withdrawal requests",
|
||||
"noData": "No withdrawal requests",
|
||||
"risk": "Risk:",
|
||||
"overview": {
|
||||
"pendingCount": "Pending",
|
||||
"pendingAmount": "Pending amount",
|
||||
"approvedCount": "Approved",
|
||||
"completedCount": "Completed"
|
||||
},
|
||||
"filter": {
|
||||
"all": "All",
|
||||
"pending": "Pending",
|
||||
"approved": "Approved",
|
||||
"rejected": "Rejected",
|
||||
"completed": "Completed"
|
||||
},
|
||||
"status": {
|
||||
"pending": "Pending",
|
||||
"approved": "Approved",
|
||||
"rejected": "Rejected",
|
||||
"completed": "Completed",
|
||||
"cancelled": "Cancelled"
|
||||
},
|
||||
"detail": {
|
||||
"title": "Withdrawal",
|
||||
"loadError": "Failed to load withdrawal details",
|
||||
"userInfo": "User Information",
|
||||
"username": "Username",
|
||||
"telegramId": "Telegram ID",
|
||||
"balance": "Balance",
|
||||
"totalReferrals": "Total referrals",
|
||||
"totalEarnings": "Total earnings",
|
||||
"createdAt": "Created",
|
||||
"paymentDetails": "Payment Details",
|
||||
"noPaymentDetails": "No payment details provided",
|
||||
"riskAnalysis": "Risk Analysis",
|
||||
"riskScore": "Risk score",
|
||||
"riskLevel": {
|
||||
"low": "Low",
|
||||
"medium": "Medium",
|
||||
"high": "High",
|
||||
"critical": "Critical"
|
||||
},
|
||||
"flags": "Flags",
|
||||
"balanceStats": "Balance Statistics",
|
||||
"referralDeposits": "Referral Deposits",
|
||||
"suspiciousReferrals": "Suspicious Referrals",
|
||||
"earningsByReason": "Earnings by Reason",
|
||||
"adminComment": "Admin Comment",
|
||||
"processedAt": "Processed at",
|
||||
"approve": "Approve",
|
||||
"approving": "Approving...",
|
||||
"reject": "Reject",
|
||||
"rejecting": "Rejecting...",
|
||||
"complete": "Mark as Completed",
|
||||
"completing": "Completing...",
|
||||
"rejectTitle": "Reject withdrawal?",
|
||||
"rejectDescription": "Optionally add a comment explaining the reason for rejection.",
|
||||
"commentPlaceholder": "Reason for rejection (optional)...",
|
||||
"confirmReject": "Confirm Rejection"
|
||||
}
|
||||
},
|
||||
"partners": {
|
||||
"title": "Partners",
|
||||
"subtitle": "Partner management and applications",
|
||||
"totalPartners": "Total partners",
|
||||
"pendingApplications": "Pending applications",
|
||||
"totalReferrals": "Total referrals",
|
||||
"totalEarnings": "Total earnings",
|
||||
"tabs": {
|
||||
"partners": "Partners",
|
||||
"applications": "Applications"
|
||||
},
|
||||
"noPartners": "No partners yet",
|
||||
"noApplications": "No pending applications",
|
||||
"commission": "{{percent}}% commission",
|
||||
"referrals": "{{count}} referrals",
|
||||
"actions": {
|
||||
"approve": "Approve",
|
||||
"reject": "Reject"
|
||||
},
|
||||
"applicationFields": {
|
||||
"website": "Website",
|
||||
"channel": "Channel",
|
||||
"description": "Description",
|
||||
"expectedReferrals": "Expected referrals/mo"
|
||||
},
|
||||
"approveDialog": {
|
||||
"title": "Approve Application",
|
||||
"description": "Approve partner application from {{name}}",
|
||||
"commissionLabel": "Commission (%)"
|
||||
},
|
||||
"rejectDialog": {
|
||||
"title": "Reject Application",
|
||||
"description": "Reject partner application from {{name}}",
|
||||
"commentLabel": "Comment (optional)",
|
||||
"commentPlaceholder": "Reason for rejection..."
|
||||
}
|
||||
},
|
||||
"partnerDetail": {
|
||||
"title": "Partner Details",
|
||||
"loadError": "Failed to load partner details",
|
||||
"status": {
|
||||
"approved": "Active",
|
||||
"pending": "Pending",
|
||||
"rejected": "Rejected",
|
||||
"none": "Not a partner"
|
||||
},
|
||||
"stats": {
|
||||
"totalReferrals": "Total referrals",
|
||||
"paidReferrals": "Paid referrals",
|
||||
"activeReferrals": "Active referrals",
|
||||
"conversionRate": "Conversion"
|
||||
},
|
||||
"earnings": {
|
||||
"title": "Earnings",
|
||||
"allTime": "All time",
|
||||
"today": "Today",
|
||||
"week": "This week",
|
||||
"month": "This month"
|
||||
},
|
||||
"commission": {
|
||||
"title": "Commission",
|
||||
"update": "Update"
|
||||
},
|
||||
"campaigns": {
|
||||
"title": "Assigned Campaigns",
|
||||
"noCampaigns": "No campaigns assigned",
|
||||
"active": "Active",
|
||||
"inactive": "Inactive"
|
||||
},
|
||||
"dangerZone": {
|
||||
"title": "Danger Zone",
|
||||
"revokeButton": "Revoke Partner Status"
|
||||
},
|
||||
"commissionDialog": {
|
||||
"title": "Update Commission",
|
||||
"description": "Set a new commission percentage for this partner.",
|
||||
"label": "Commission (%)"
|
||||
},
|
||||
"revokeDialog": {
|
||||
"title": "Revoke Partner Status?",
|
||||
"description": "This will remove partner privileges. The partner will no longer earn commissions from referrals."
|
||||
}
|
||||
},
|
||||
"promocodes": {
|
||||
"title": "Promo Codes",
|
||||
"subtitle": "Manage promo codes and discount groups",
|
||||
|
||||
Reference in New Issue
Block a user