fix(admin-wheel): unify statistics rendering + fill config UI gaps

Statistics tab now uses the shared StatCard + BreakdownList (ranked bars +
share %) and the currency-aware formatter — matching the rest of the admin
stats instead of ad-hoc 'card p-4 text-center' / text-3xl tiles — and gains
proper loading, error and empty states.

Also surface backend-supported config the form couldn't reach (forcing DB edits):
- promo_validity_days (model + schema-bounded 1-365) is now editable in Settings.
- per-prize manual_probability override (0-1) now has an input in the prize form.
This commit is contained in:
c0mrade
2026-06-04 22:33:12 +03:00
parent 73ee42a0ef
commit 5de43c1071
5 changed files with 167 additions and 80 deletions

View File

@@ -1782,7 +1782,8 @@
"dailyLimit": "Дневной лимит вращений (0 = безлимит)",
"minSubDays": "Мин. дней подписки для оплаты днями",
"promocodes": "Промокоды",
"promoPrefix": "Префикс промокодов"
"promoPrefix": "Префикс промокодов",
"promoValidityDays": "Срок действия промокода (дней)"
},
"starsNotEnabledGlobally": "Оплата звёздами не включена в платёжных методах. Включите метод «Telegram Stars» в разделе «Платёжные методы».",
"prizes": {
@@ -1809,7 +1810,9 @@
"emoji": "Эмодзи",
"color": "Цвет",
"active": "Активен",
"worth": "Стоимость"
"worth": "Стоимость",
"probability": "Ручная вероятность (01)",
"probabilityHint": "Пусто — авто по RTP"
},
"promo": {
"title": "Настройки промокода",
@@ -1828,7 +1831,9 @@
"times_one": "{{count}} раз",
"times_few": "{{count}} раза",
"times_many": "{{count}} раз",
"topWins": "Топ выигрышей"
"topWins": "Топ выигрышей",
"loadError": "Не удалось загрузить статистику",
"empty": "Пока нет вращений"
}
},
"broadcasts": {