per currency kataloglari
per currency katalogi - bu koʻrsatiladigan narxlar, limitlar, bonuslar, minimal stavkalar, jekpotlar va promo matnlari oʻyinchi/tenant/mintaqa valyutasiga moslashtirilgan kontent va praysing katalogi variantidir. Maqsad - mantiq nusxasisiz va «uchish» konvertatsiyalari tufayli xatarlarsiz to’g’ri prays-point va qoidalarni berish.
Asosiy effektlar:- UX: stavkalarning tabiiy qadamlari va «chiroyli» narxlar (₺9. 99, R$5, €0. 20).
- Daromad: kurslar tufayli marjani «iste’mol qilmasdan» aniq limitlar va bustlar.
- Komplayens: mahalliy qoidalarga (litsenziyalar, soliqlar, age/geo) muvofiqlik.
1) Ma’lumotlar modeli: «nominal» va «taqdimot» bo’linadi
Base Price (nominal): hisob-kitoblar uchun yagona ichki valyuta’PLN ’/’ EUR ’/’ USD’.
Display Price (taqdimot): + FX + yaxlitlash + ustama/chegirmalar (spread/fees) nominalidan hisoblanadi.
Policy: yaxlitlash qoidalari, stavkalar qadami, min/maks limitlari, jekpotlar, bonus summalari va wager - per currency sozlanadi.
yaml price_model:
base_currency: "EUR"
items:
game_spin_min:
base: 0. 10 policy: "stake_min"
game_spin_step:
base: 0. 10 policy: "stake_step"
jackpot_seed:
base: 10000 policy: "jackpot_amount"
policies:
stake_min:
per_currency:
EUR: {round: "ceil_to_step", step: 0. 10}
TRY: {round: "ceil_to_step", step: 1. 00}
BRL: {round: "ceil_to_step", step: 0. 50}
stake_step:
per_currency:
EUR: {step: 0. 10}
USD: {step: 0. 10}
CLP: {step: 50}
jackpot_amount:
per_currency:
EUR: {round: "nearest_100"}
MXN: {round: "nearest_1000"}
2) Kurslar manbai (FX) va «yangilik»
FX-servis - konvertatsiyalar uchun yagona haqiqat nuqtasi:- Kurslarni yetkazib beruvchi: asosiy va zaxira; yangilanish chastotasi (masalan, har daqiqada o’zgaruvchan, har 15 daqiqada barqaror).
- Bounded staleness: SLA «kurslar Δ t dan katta emas» (masalan, p95 ≤ 5 min).
- Spread va komissiyalar: per tenant/region/currency moslashtiriladi.
- Freeze windows: o’yin/turnir/reklama oynalari uchun kurslarni «muzlatib qo’ying», shunda price «sakrab tushmaydi».
- Audit: cheklarni takrorlash uchun FX s’valid _ from/valid _ to versiyasi.
json
{
"as_of":"2025-10-31T12:00:00Z",
"base":"EUR",
"rates": { "TRY":34. 10, "BRL":5. 42, "MXN":19. 1, "UAH":43. 6, "USDT":1. 00 },
"spread_bps": { "TRY":120, "BRL":60 },
"fees_pct": { "default":0. 15 }
}
3) Yaxlit va «chiroyli» prays-pointlar
FX va spredlardan keyin yaxlitlang:- Narxlar/paketlar:’99’,’9. 99`, `4. 90’(psixologik nuqtalar).
- Stavkalar va qadamlar: valyuta qadamiga «ceil_to_step» (₺1, CLP $50).
- Bonuslar: vaucher bosqichiga pastga yaxlitlash (R $1/₺ 5).
- Operatsiya tartibi:’raw = base fx (1 + spread) (1 + fee)’→’rounded = round_policy (raw)’→’min/max clamp’.
Anti-misol: «bank doirasi» stavkalar uchun «xunuk» qadamlar qo’yishi mumkin - aniq siyosatdan foydalaning.
4) Limitlar, min/maks va jekpotlar
Min/Max per currency: mahalliy qonunlar va RGS cheklovlarini hisobga oladi.
Jekpotlar: agar provayder jekpotni o’z valyutasida (masalan, EUR) saqlasa, mahalliylashtirilgan ekvivalentni (informer) ko’rsating yoki per-valyuta pullarini saqlang.
Valyuta qadamlari: CLP/JPY tiyinsiz - barcha limitlar butun sondir.
sql
CREATE TABLE currency_limits (
tenant_id text,
currency text,
feature text, -- spin_min, spin_max, deposit_min, payout_max, jackpot_min value numeric,
step numeric,
PRIMARY KEY (tenant_id, currency, feature)
);
5) Bonuslar va vaucherlar per currency
Bonus nominali: per currency konfiguratsiya qilinadi (peshonaga «qayta hisoblash» emas).
Wager: ko’paytiruvchi sifatida (x30) yoki valyuta sifatida saqlang; aralashishdan saqlaning.
Omadli/kesh-out: ham per currency.
Marketing matnlari: raqamlarni mahalliylashtirish va hardkodsiz shablonlarda valyuta.
yaml bonus:
welcome_pack:
EUR: {amount: 100, wager_x: 35, cap: 500}
BRL: {amount: 500, wager_x: 40, cap: 2500}
TRY: {amount: 2500, wager_x: 40, cap: 12500}
6) Provayderlar cheklovlari (RGS/PSP)
RGS: ba’zi o’yinlar’crypto ’/lokal valyutalar uchun mavjud emas; ba’zi provayderlar qat’iy belgilangan minimumlarni talab qiladi (masalan, 0 €). 20).
PSP: to’lov usullari valyutaga bog’liq (PIX, BRL, PayID, AUD, Papara, TRY); depozit/olib qo’yish limitlari ham har xil.
Qoida: katalog/vitrin namoyish etilgunga qadar valyuta va yurisdiksiya bo’yicha o’yinlar va to’lov usullarini filtrlaydi.
7) Arxitektura konturi
Currency Policy Store (CP): per currency qoidalari jadvallari (qadamlar, limitlar, prays-pointlar, yaxlitlash).
FX xizmati: kurslar, versiyalar va yangilik SLA kesh.
Katalog-bilder: Read Models per currency (proyeksiyalar) ishlab chiqaradi.
O’qish qatlamining APIsi: tayyor proyeksiyalarni tortadi; UI issiq yo’lda on-the-fly konvertatsiyalari yo’q.
Outbox → Proyeksiyalar: FX/siyosat → voqealar’CurrencyPolicyUpdated/FXUpdated’→ vitrinalarning inkremental yangilanishlari.
read_catalog_{tenant}_{region}_{currency}
Valyuta bo’yicha partiyalashtirish refresh va metrikalarni yig’ishni tezlashtiradi.
8) Proyeksiyalar per currency (misol)
sql
CREATE TABLE read_catalog_currency (
tenant_id text,
region text,
currency text,
game_id text,
price_min numeric, -- displayed min-rate price_step numeric,
jackpot numeric,
bonus_badge text,
as_of timestamptz,
PRIMARY KEY (tenant_id, region, currency, game_id)
);
Yangilanishlar - katalog voqealaridan + FX/siyosat voqealaridan idempotent’UPSERT’lar.
9) Formatlash va lokallar
Belgi/kod:’₺/TRY’,’R $/BRL’,’€’,’USDT’(kripto uchun - tiyinsiz yoki UX-siyosatiga muvofiq 2 belgili).
Guruhlash va oʻnlik ajratuvchi:’locale’(ru_RU, tr_TR, pt_BR) bogʻliq.
RTL/arab lokallari: valyuta belgisining to’g "riligini alohida tekshirish.
10) Keshlash va unumdorlik
Katalog javoblari per currency 30-120 s; FX-indikator’as _ of’javobida bering.
Nogironlik: ’FXUpdated ’/’ PolicyUpdated ’/’ GameUpserted’→ voqealari
Praysning kichik yangilanishlarida kartochkalar tartibi «sakrab tushmasligi» uchun kursorlar tomonidan paginatsiya qilish.
11) Kuzatuv va SLO
Metriklar:- `catalog_p95_ms` по валютам, `fx_freshness_ms` (p50/p95/p99), `policy_refresh_latency_ms`.
- «Xunuk» narxlar ulushi (qadamda yotmaydi), limitlar tufayli rad etilgan tranzaksiyalar ulushi.
- Chek-autdagi «vitrin vs hisob-kitob» tafovuti (haqiqiy debet sodir bo’ladigan joyda).
- FX SLA dan katta, yaxlitlash xatolarining o’sishi, PSPning limitlar bo’yicha nosozliklar ko’payishi.
- RGS minimumi va vitrin minimumi nomuvofiqligi.
12) Komplayens, soliqlar va residency
Per currency ≠ per country:’currency + geo + license’kombinatsiyasiga amal qiling.
Soliq qoidalari/fee - valyuta siyosatida va chekda.
Residency: mahalliy valyutalar uchun ma’lumotlar va hisob-kitoblar - tegishli mintaqada.
13) Test sinovi
Property-based: invarant «konvertatsiya va yaxlitlashdan keyin narx qadamda yotadi»; «min ≤ value ≤ max».
Golden-cases: regressiya uchun etalon valyutalar/narxlar to’plami.
Chaos FX: «sakrash» kurslari, freeze windows, FX provayderini almashtirish.
E2E: vitrinadagi summaning va hisobdan chiqarilgan yakuniy summaning matchivligi; tolerans ≤ 0. 01 ta valyuta birligi (yoki 1 qadam).
14) Tipik xatolar
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Valyuta qadamlarini (CLP/JPY) → «yarim kopeyka» va RGS/PSP rad etishini eʼtiborsiz qoldirish.
Aniq per policy qoidalari o’rniga «odatdagidek» (bankers rounding) yaxlitlash.
FX versiyasini chek → ga yozib boʻlmaydi.
FX orqali yagona bonus nominallari → mahalliy bozorlar uchun «g’alati» raqamlar.
Komissiyalarni shaffofliksiz FXga yashirish - da’vo va jarimalar xavfi.
15) Tezkor retseptlar
TRY/BRLdagi stavkalar: qadam ₺1/R $0. 50, min-stavka qadam yuqoriga aylantiriladi, paketlar uchun «chiroyli» prays-pointlar.
Crypto (USDT/USDC): $0 qadam. 10, eng yaqin qadamga yaxlitlash, ko’rsatuvda vositachilik haqi yo’qligi (lekin chekda ko’rinadi).
High-volatility FX: freeze match/promo; bazaviy narxdan> X% chetga chiqganda alertlar.
Multi-tenant: brendlarda turli spredlar/qadamlar; per tenant proyeksiyalarini hisoblashda fairness.
16) Konfiguratsiya namunasi (haqiqatning yagona manbai)
yaml catalog_currency:
base_currency: EUR fx_sla_ms: 300000 # 5 minutes rules:
- currency: "TRY"
stake_step: 1. 00 stake_min: 5. 00 display_round: "ceil_to_step"
psychological_points: [9, 19, 29, 49, 99]
psp_methods: ["Mefete","Papara","Crypto"]
- currency: "BRL"
stake_step: 0. 50 stake_min: 1. 00 display_round: "ceil_to_step"
psychological_points: [4. 90, 9. 90, 19. 90, 49. 90]
psp_methods: ["PIX","Boleto","Cards"]
- currency: "CLP"
stake_step: 50 stake_min: 200 display_round: "ceil_to_step"
psp_methods: ["WebPay","Cards"]
jackpot:
display_policy:
EUR: "nearest_100"
MXN: "nearest_1000"
bonuses:
welcome:
EUR: {amount: 100, wager_x: 35}
BRL: {amount: 500, wager_x: 40}
TRY: {amount: 2500, wager_x: 40}
17) Sotishdan oldingi chek-varaq
- Yagona asosiy valyuta va har bir chek/hodisada FX versiyasi.
- /qadamlar/limitlarni yaxlitlash siyosati per currency tomonidan belgilangan va testlar bilan qoplangan.
- per currency katalogining proyeksiyalari tayyor; issiq yoʻl konvertatsiya qilmaydi.
- Jekpotlar va bonuslar per currency tomonidan toʻgʻri koʻrsatiladi/qoplanadi.
- PSP usullari valyutalar bo’yicha filtrlanadi; limitlar vitrinaga to’g "ri keladi.
- SLA yangi FX va alertlar sozlangan; oʻzgaruvchan hodisalar uchun freze windows.
- Valyuta raqamlari va belgilarini mahalliylashtirish; hardcodsiz promo namunalari.
- Siyosat/FX o’zgarishlari auditi; chekning takrorlanuvchanligi.
- Ko’p tenant/mintaqa: ma’lumotlarni izolyatsiya qilish, turli spredlar va limitlar.
- Hodisalar pleybuklari: FX-sakrash, RGS-minimum nomuvofiqligi, PSP-limitlar muvaffaqiyatsiz tugadi.
Xulosa
per currency kataloglari - bu «kursga ko’paytirish» emas, balki muhandislik fanidir. Nominal va ifodani ajrating, FX va yaxlitlash siyosatini markazlashtiring, per currency proyeksiyalarini materiallashtiring va yangilikni o’lchang. Shunda vitrin tezkor, oldindan aytib bo’ladigan va halol bo’ladi, biznes esa marjaning yashirin yo’qotishlari va mahalliy bozorlarda tartibga soluvchi kutilmagan hodisalardan himoyalanadi.