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

@@ -1432,7 +1432,8 @@
"promoPrefix": "پیشوند کد تخفیف",
"spinCost": "هزینه چرخش",
"limitsAndRtp": "محدودیت‌ها و RTP",
"promocodes": "کدهای تخفیف"
"promocodes": "کدهای تخفیف",
"promoValidityDays": "اعتبار کد تخفیف (روز)"
},
"starsNotEnabledGlobally": "پرداخت با ستاره در روش‌های پرداخت فعال نیست. «Telegram Stars» را در بخش «روش‌های پرداخت» فعال کنید.",
"prizes": {
@@ -1459,7 +1460,9 @@
"emoji": "ایموجی",
"color": "رنگ",
"active": "فعال",
"worth": "ارزش"
"worth": "ارزش",
"probability": "احتمال دستی (۰۱)",
"probabilityHint": "خالی = خودکار بر اساس RTP"
},
"promo": {
"title": "تنظیمات کد تخفیف",
@@ -1476,7 +1479,9 @@
"prizeDistribution": "توزیع جوایز",
"times": "بار",
"times_other": "{{count}} بار",
"topWins": "برترین برنده‌ها"
"topWins": "برترین برنده‌ها",
"loadError": "بارگذاری آمار ناموفق بود",
"empty": "هنوز چرخشی انجام نشده"
}
},
"broadcasts": {