feat: add promo group and promo offer management to AdminUserDetail

- Info tab: promo group card with inline dropdown to change/remove group
- Balance tab: active promo offer display with deactivate button
- Balance tab: send promo offer form (discount %, valid hours)
- Add deactivateDiscount API method to promocodesApi
- Add locale keys for ru/en/zh/fa
- Fix race condition in subscription create (stale state read)
- Fix unhandled promise in handleInlineConfirm
- Remove unused legacy adminUsers block from ru.json
This commit is contained in:
Fringg
2026-02-07 08:10:44 +03:00
parent de28463b79
commit 8bd3c007bc
6 changed files with 295 additions and 173 deletions

View File

@@ -1584,6 +1584,22 @@
"subscription": "• 禁止购买订阅",
"reason": "原因"
},
"promoGroup": "优惠组",
"noPromoGroup": "未设置",
"changePromoGroup": "更改",
"selectPromoGroup": "选择组",
"removePromoGroup": "移除",
"activePromoOffer": "活跃促销优惠",
"discount": "折扣",
"source": "来源",
"expiresAt": "到期时间",
"deactivateOffer": "停用",
"sendOffer": "发送优惠",
"discountPercent": "折扣 %",
"validHours": "有效期(小时)",
"offerSent": "优惠已发送",
"offerSendError": "发送优惠失败",
"offerDeactivated": "优惠已停用",
"subscription": {
"current": "当前订阅",
"tariff": "套餐",