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

@@ -1756,7 +1756,8 @@
"dailyLimit": "Daily Spin Limit (0 = unlimited)",
"minSubDays": "Min subscription days for day payment",
"promocodes": "Promocodes",
"promoPrefix": "Promo code prefix"
"promoPrefix": "Promo code prefix",
"promoValidityDays": "Promo code validity (days)"
},
"starsNotEnabledGlobally": "Star payments are not enabled in Payment Methods. Enable \"Telegram Stars\" in the Payment Methods section.",
"prizes": {
@@ -1783,7 +1784,9 @@
"emoji": "Emoji",
"color": "Color",
"active": "Active",
"worth": "Worth"
"worth": "Worth",
"probability": "Manual probability (01)",
"probabilityHint": "Empty = auto by RTP"
},
"promo": {
"title": "Promo Code Settings",
@@ -1801,7 +1804,9 @@
"times": "times",
"times_one": "{{count}} time",
"times_other": "{{count}} times",
"topWins": "Top Wins"
"topWins": "Top Wins",
"loadError": "Failed to load statistics",
"empty": "No spins yet"
}
},
"broadcasts": {