GH GambleHub

per currency kataloqları

per currency kataloqu, göstərilən qiymətlərin, limitlərin, bonusların, minimum dərəcələrin, cekpotların və promo mətnlərinin oyunçu/tenant/region valyutasına uyğunlaşdırıldığı məzmun və qiymət kataloqu variantıdır. Məqsəd düzgün qiymət nöqtələri və qaydaları mantığın kopipastı olmadan və «uçuşda» konvertasiyalara görə risksiz verməkdir.

Əsas effektlər:
  • UX: təbii bahis addımları və «gözəl» qiymətlər (₺9. 99, R$5, €0. 20).
  • Gəlir: kurslara görə marjanı «yemədən» dəqiq limitlər və gücləndiricilər.
  • Komplayens: yerli qaydalara uyğunluq (lisenziyalar, vergilər, age/geo).

1) Data modeli: «nominal» və «təqdimat» bölünür

Base Price (nominal): hesablaşmalar üçün vahid daxili valyuta 'PLN '/' EUR '/' USD'.
Display Price (təqdimat): + FX + yuvarlaqlaşdırma + marjalar/endirimlər (spread/fees) nominalından hesablanır.
Policy: yuvarlaqlaşdırma qaydaları, bahis addımları, min/max limitləri, cekpotlar, bonus məbləğləri və wager - per currency.

Mini sxem (sadələşdirilmiş):
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ın mənbəyi (FX) və «təravət»

FX xidməti - konvertasiya üçün vahid həqiqət nöqtəsi:
  • Kursların təchizatçısı: əsas və ehtiyat; yeniləmə tezliyi (məsələn, dəyişkən üçün hər dəqiqə, sabit üçün hər 15 dəqiqə).
  • Bounded staleness: SLA «kursları Δ t» (məsələn, p95 ≤ 5 dəq).
  • Spread və komissiyalar: per tenant/region/currency konfiqurasiyası.
  • Freeze windows: qiymət «atlama» deyil matç/turnir/promo pəncərələri üçün «dondurma» kursları.
  • Audit: çek oynamaq üçün FX versiyası c 'valid _ from/valid _ to.
FX nümunəsi:
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) Yuvarlaqlaşdırma və «gözəl» qiymət nöqtələri

FX və spreadlərdən sonra yuvarlaqlaşdırın:
  • Qiymətlər/paketlər: '99', '9. 99`, `4. 90 '(psixoloji nöqtələr).
  • Dərəcələr və addımlar: valyuta addımına «ceil_to_step» (₺1, CLP $50).
  • Bonuslar: çek addım aşağı yuvarlaq (R $1/₺ 5).
  • Əməliyyat qaydası: 'raw = base fx (1 + spread) (1 + fee)' → 'rounded = round_policy (raw)' → 'min/max clamp'.

Anti-nümunə: bahislər üçün «bank yuvarlaqlaşdırılması» «çirkin» addımlar verə bilər - açıq siyasətlərdən istifadə edin.

4) Limitlər, min/max və jekpotlar

Min/Max per currency: yerli qanunlar və RGS məhdudiyyətləri nəzərə alınır.
Jackpotlar: Əgər provayder öz valyutasında jackpot saxlayırsa (məsələn, EUR), ya lokallaşdırılmış ekvivalenti (informer) göstərin, ya da per-valyuta pullarını saxlayın.
Valyuta addımları: qəpiksiz CLP/JPY - bütün limitlər tam ədəddir.

Limit cədvəlinin nümunəsi:
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) per currency bonuslar və vauçerlər

Bonus nominalı: per currency («yenidən hesablama» deyil) konfiqurasiyası.
Wager: çoxluq (x30) və ya valyuta məbləği kimi saxlayın; qarışmaqdan çəkinin.
Cap win/cash-out: həm də per currency.
Marketinq mətnləri: nömrələrin lokallaşdırılması və hardcode olmadan şablonlarda 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) Provayder məhdudiyyətləri (RGS/PSP)

RGS: Bəzi oyunlar 'crypto '/yerli valyutalar üçün əlçatmazdır; bəzi provayderlər sabit minimum tələb (məsələn, €0. 20).
PSP: ödəniş metodları valyutadan asılıdır (PIX, BRL, PayID, AUD, Papara, TRY); depozit/çıxarış limitləri də fərqlidir.
Qayda: Kataloq/vitrin göstərilməzdən əvvəl valyuta və yurisdiksiya üzrə oyunlar və ödəniş üsullarını süzür.

7) Memarlıq konturu

Currency Policy Store (CP): per currency qaydaları cədvəlləri (addımlar, limitlər, qiymət nöqtələri, yuvarlaqlaşdırmalar).
FX-xidmət: cache kursları, versiyası və SLA təravət.
Kataloq-bilder: Read Models per currency (proyeksiyalar) istehsal edir.
API oxu təbəqəsi: hazır proyeksiyaları çəkir; UI isti yolda heç bir on-the-fly konvertasiya.
Outbox → Proyeksiyalar: dəyişən FX/siyasət → hadisələr 'CurrencyPolicyUpdated/FXUpdated' → vitrin artıklığı.

Proyeksiya bölmələrinin sxemi:

read_catalog_{tenant}_{region}_{currency}

Valyuta ilə partizanlaşdırma refresh və metrlərin toplanmasını sürətləndirir.

8) per currency proyeksiyaları (nümunə)

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)
);

Yeniləmələr - kataloq hadisələrindən + FX/siyasət hadisələrindən idempotent 'UPSERT'.

9) Formatlaşdırma və lokallar

Simvol/kod: '₺/TRY', 'R $/BRL', '€', 'USDT' (kriptovalyutası üçün - heç bir qəpik və ya UX siyasətinə görə 2 işarə ilə).
Qruplaşdırma və onluq ayırıcı: 'locale' (ru_RU, tr_TR, pt_BR) asılıdır.
RTL/Ərəb lokalları: valyuta nişanının düzgünlüyünün ayrıca yoxlanılması.

10) Caching və Performance

Kataloq cavabları per currency cache 30-120 s; FX göstərici 'as _ of "cavabında verin.
Əlillik: hadisələr 'FXUpdated '/' PolicyUpdated '/' GameUpserted' → cache açarlarının məqsədli təmizlənməsi.
Kiçik qiymət yeniləmələri ilə kartların qaydasının «atlamaması» üçün kursorlarla paginasiya.

11) Müşahidə və SLO

Metriklər:
  • `catalog_p95_ms` по валютам, `fx_freshness_ms` (p50/p95/p99), `policy_refresh_latency_ms`.
  • «Çirkin» qiymətlərin payı (addım deyil), limitlər səbəbindən rədd edilmiş əməliyyatların payı.
  • Çek-autda «vitrin vs hesablama» uyğunsuzluğu (real debet baş verir).
Alertlər:
  • FX SLA-dan böyükdür, yuvarlaqlaşdırma səhvlərinin artması, limitlər üzrə PSP uğursuzluqlarının artması.
  • RGS minimumu ilə vitrin minimumunun uyğunsuzluğu.

12) Komplayens, vergilər və residency

Per currency ≠ per country: 'currency + geo + license' birləşməsini izləyin.
Vergi qaydaları/fee - valyuta siyasətində və çekdə.
Residency: müvafiq bölgədə yerli valyutalar üçün məlumatlar və hesablaşmalar.

13) Test

Property-based: «konvertasiya və dəyirmi sonra qiymət addım yatır»; «min ≤ value ≤ max».
Golden-cases: regressiya üçün etalon valyutalar/qiymətlər dəsti.
Chaos FX: «atlama» kursları, freeze windows, FX provayderi keçid.
E2E: vitrindəki məbləğin və cəmi silinmiş məbləğin uyğunluğu; tolerans ≤ 0. 01 valyuta vahidləri (və ya 1 addım).

14) Tipik səhvlər

API oxu → qeyri-sabit UX və yüksək p99.
Valyuta addımlarına məhəl qoymayın (CLP/JPY) → «yarım pul» və RGS/PSP uğursuzluqları.
Dəqiq per policy qaydaları əvəzinə «vərdişlə» (bankers rounding) yuvarlaqlaşdırın.
FX versiyasını yoxlamayın → mübahisələri həll etmək mümkün deyil.
FX vasitəsilə vahid bonus nominalları → yerli bazarlar üçün «qəribə» ədədlər.
Komissiyaları şəffaflıq olmadan FX-də gizlətmək iddialar və cərimələr riskidir.

15) Sürətli reseptlər

TRY/BRL dərəcələri: Addım ₺1/R $0. 50, min-bahis addım yuxarı yuvarlaq, paket üçün «gözəl» qiymət nöqtələri.
Crypto (USDT/USDC): $0 addım. 10, ən yaxın addıma yuvarlaqlaşdırma, şouda heç bir komissiya yoxdur (lakin çekdə görünür).
High-volatility FX: matç/promo üçün freeze; əsas qiymət> X% sapma zamanı alertlər.
Multi-tenant: markalarda müxtəlif spred/addımlar; per tenant proyeksiyalarının hesablanmasında fairness.

16) Konfiqurasiya nümunəsi (vahid həqiqət mənbəyi)

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) Satış öncəsi yoxlama siyahısı

  • Hər çekdə/hadisədə vahid əsas valyuta və FX versiyası.
  • Yuvarlaqlaşdırma/addımlar/limitlər siyasətləri per currency tərəfindən müəyyən edilmiş və testlərlə əhatə olunmuşdur.
  • per currency kataloqunun proyeksiyaları hazırdır; isti yol konvertasiya etmir.
  • Jackpotlar və bonuslar düzgün per currency göstərilir/damla.
  • PSP metodları valyutalara görə süzülür; limitlər vitrin ilə üst-üstə düşür.
  • SLA təzəlik FX və həyəcan; dəyişkən hadisələr üçün freeze windows.
  • Rəqəmlərin və valyuta simvollarının lokallaşdırılması; hardcode olmadan promo şablonları.
  • Siyasət/FX dəyişikliklərinin auditi; çek reproduktivliyi.
  • Multi-tenant/region: məlumatların izolyasiyası, müxtəlif spredlər və limitlər.
  • Hadisə Playbook: FX-sıçrayış, RGS-minimum uyğunsuzluq, PSP-limit uğursuzluğu.

Nəticə

per currency kataloqları mühəndislik fənnidir, «kursla vurmaq» deyil. Nominal və performansı bölün, FX və yuvarlaqlaşdırma siyasətlərini mərkəzləşdirin, per currency proyeksiyalarını materiallaşdırın və təravəti ölçün. Sonra vitrin sürətli, proqnozlaşdırıla bilən və ədalətli olacaq və biznes yerli bazarlarda gizli marja itkilərindən və tənzimləyici sürprizlərdən qorunur.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.