GH GambleHub

per currency каталогтары

per currency каталогы - бұл көрсетілетін бағалар, лимиттер, бонустар, ең төменгі мөлшерлемелер, джекпоттар және промо мәтіндері ойыншының/тенанттың/өңірдің валютасына бейімделген контент және прайсинг каталогының нұсқасы. Мақсаты - дұрыс прайс-поинттер мен ережелерді логика көшірмесінсіз және тәуекелсіз беру.

Негізгі эффекттер:
  • UX: табиғи мөлшерлеме қадамдары және «әдемі» бағалар (₺9. 99, R$5, €0. 20).
  • Кiрiс: нақты лимиттер және бағамдардан маржаны «жеусiз» бустар.
  • Комплаенс: жергілікті ережелерге сәйкестігі (лицензиялар, салықтар, age/geo).

1) Деректер моделі: «номиналды» және «көріністі» бөлеміз

Base Price (номиналы): есеп айырысу үшін бірыңғай ішкі валюта 'PLN '/' EUR '/' USD'.
Display Price (ұсыну): + FX + дөңгелектеу + үстеме бағалар/жеңілдіктер (spread/fees) номиналынан есептеледі.
Policy: дөңгелектеу ережелері, мөлшерлеме қадамдары, мин/макс лимиттер, джекпоттар, бонустық сомалар және wager - per currency бапталады.

Шағын схема (оңайлатылған):
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) Курстардың көзі (FX) және «жаңалық»

FX-сервис - айырбастау үшін бірыңғай шындық нүктесі:
  • Курстарды жеткізуші: негізгі және резервтік; жаңарту жиілігі (мысалы, құбылмалылар үшін әрбір минут сайын, тұрақтылар үшін әрбір 15 минут сайын).
  • Bounded staleness: SLA «курстар Δ t жоғары емес» (мысалы, p95 ≤ 5 мин).
  • Спред және комиссиялар: per tenant/region/currency конфигурацияланады.
  • Freeze windows: Прайс «секірмеу» үшін матч/турнир/промо-терезе курстарын «тоқтату».
  • Аудит: чектерді ойнату үшін FX нұсқалары c 'valid _ from/valid _ to'.
FX беру мысалы:
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) Дөңгелектеу және «әдемі» прайс-поинттер

FX және спредтерден кейін дөңгелектеңіз:
  • Бағалар/пакеттер: '99', '9. 99`, `4. 90 '(психологиялық нүктелер).
  • Ставкалар мен қадамдар: валюталық қадамға «ceil_to_step» (₺1, CLP $50).
  • Бонустар: ваучер адымына төмен қарай дөңгелектеу (R $1/₺ 5).
  • Операциялар тәртібі: 'raw = base fx (1 + spread) (1 + fee)' → 'rounded = round_policy (raw)' → 'min/max clamp'.

Қарсы мысал: мөлшерлемелер үшін «банктік дөңгелектеу» «жаман» қадамдар жасай алады - айқын саясатты пайдаланыңыз.

4) Лимиттер, мин/макс және джекпоттар

Min/Max per currency: жергілікті заңдар мен RGS шектеулерін ескереді.
Джекпоттар: егер провайдер джекпотты өз валютасында (мысалы, EUR) ұстаса, не жергілікті эквивалентті (информерді) көрсетіңіз, не пер-валюта пулдарын сақтаңыз.
Валюта қадамдары: CLP/JPY тиынсыз - барлық лимиттер бүтін санды.

Лимиттер кестесінің мысалы:
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 бонустары мен ваучерлері

Бонустың номиналы: per currency конфигурацияланады (маңдайына «қайта санамау»).
Wager: көбейткіш ретінде (x30) немесе валютадағы сома ретінде сақтаңыз; араласудан аулақ болыңыз.
Кэп ұтыс/кэш-аут: сондай-ақ per currency.
Маркетинг-мәтіндер: сандарды оқшаулау және хардкодсыз үлгілердегі валюта.

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) Провайдерлердің шектеулері (RGS/PSP)

RGS: кейбір ойындар үшін қол жетімді емес 'crypto '/жергілікті; провайдерлердің бір бөлігі белгіленген минимумдарды талап етеді (мысалы, €0. 20).
PSP: төлем әдістері валютаға байланысты (PIX, BRL, PayID, AUD, Papara, TRY); депозит/шығару лимиттері де әр түрлі.
Ереже: каталог/витрина көрсетілгенге дейін валюта және юрисдикция бойынша ойындарды және төлем тәсілдерін сүзеді.

7) Сәулет сұлбасы

Currency Policy Store (CP): per currency ережелер кестесі (қадамдар, лимиттер, прайс-поинттер, дөңгелектеу).
FX-сервис: курстардың кэші, нұсқасы және жаңалық SLA.
Каталог-билдер: Read Models per currency (проекциялар) шығарады.
Оқу қабатының API: дайын проекцияларды созады; UI ыстық жолында ешқандай on-the-fly айырбастау.
Outbox → Проекциялар: FX/саясаттағы өзгерістер → оқиғалар 'CurrencyPolicyUpdated/FXUpdated' → витриналардың артықшылықтары.

Проекция бөлімдерінің схемасы:

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

Валюта бойынша партияландыру refresh пен метриканы жинауды жеделдетеді.

8) per currency проекциялары (мысал)

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

Жаңартулар - каталог оқиғаларынан + FX оқиғаларынан/саясаттан алынған «UPSERT» дегенді білдіреді.

9) Пішімдеу және локальдар

Символ/код: '₺/TRY', 'R $/BRL', '€', 'USDT' (крипто үшін - UX-саясатына сәйкес 2 таңбалы).
Топтау және ондық бөлгіш: 'locale' (ru_RU, tr_TR, pt_BR) байланысты.
RTL/араб локальдары: валюта белгісінің дұрыстығын жеке тексеру.

10) Кэштеу және өнімділігі

Каталогтық жауаптар per currency кэш 30-120 с; FX-индикатор 'as _ of' жауапта беріңіз.
Мүгедектік: оқиғалар 'FXUpdated '/' PolicyUpdated '/' GameUpserted' → кэш кілттерін мақсатты тазалау.
Прайстың ұсақ апдейтінде карточкалардың тәртібі «секірмеуі» үшін курсормен пагинация.

11) Бақылау және SLO

Өлшемдері:
  • `catalog_p95_ms` по валютам, `fx_freshness_ms` (p50/p95/p99), `policy_refresh_latency_ms`.
  • «Жағымсыз» бағалардың үлесі (қадамда жатпайды), лимиттерге байланысты бас тартылған транзакциялардың үлесі.
  • Чек-ауттағы «витрина vs есеп айырысу» айырмашылығы (нақты дебет болатын жерде).
Алерталар:
  • FX SLA-дан ересек, дөңгелектеу қателерінің өсуі, PSP-нің лимиттер бойынша істен шығуының артуы.
  • RGS минимумы мен витриналық минимумның сәйкессіздігі.

12) Комплаенс, салықтар және residency

Per currency ≠ per country: 'currency + geo + license' комбинациясын қадағалаңыз.
Салық ережелері/fee - валюта саясатында және чекте.
Residency: жергілікті валюталар үшін деректер мен есептеулер - тиісті өңірде.

13) Тестілеу

Property-based: инвариант «айырбастау және дөңгелектеуден кейін баға бір адымда жатыр»; «min ≤ value ≤ max».
Golden-cases: регрессияға арналған эталондық валюталар/прайстар жиынтығы.
Chaos FX: «секіру» курстар, freeze windows, FX провайдерін ауыстыру.
E2E: витринадағы соманың және есептен шығарылған жиынтық соманың матчтылығы; толеранс ≤ 0. 01 валюта бірлігі (немесе 1 қадам).

14) Типтік қателер

Оқу API → тұрақсыз UX және жоғары p99.
Валюта қадамдарын елемеу (CLP/JPY) → «полкопейка» және RGS/PSP істен шығуы.
per policy нақты ережелерінің орнына «әдет бойынша» (bankers rounding) дөңгелектеу.
FX нұсқасын чекте тіркемеу → дауларды талдау мүмкін емес.
FX → жергілікті нарықтар үшін «таңғажайып» сандар арқылы бірыңғай бонустық номиналдар.
Комиссияларды ашықтықсыз FX-де жасыру - наразылықтар мен айыппұлдар тәуекелі.

15) Жылдам рецепттер

TRY/BRL ставкалары: қадам ₺1/R $0. 50. Мин-ставканы адымға қарай дөңгелектеу, пакеттерге арналған «әдемі» прайс-поинттер.
Crypto (USDT/USDC): $0 қадамы. 10, жақын арадағы қадамға дөңгелектеу, көрсетуде комиссиялардың болмауы (бірақ чекте көрінетін).
High-volatility FX: freeze матч/промо; базалық прайстан> X% ауытқу кезіндегі алерталар.
Мульти-тенант: брендтерде әр түрлі спрэд/қадамдар; fairness per tenant жобаларын есептеуде.

16) Конфигурация үлгісі (бірыңғай шындық көзі)

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) Азық-түлік алдындағы чек-парағы

  • Әрбір чек/оқиғада бірыңғай базалық валюта және FX нұсқасы.
  • Дөңгелектеу/қадамдар/лимиттер саясаты per currency берілген және тесттермен жабылған.
  • per currency каталогының проекциялары дайын; ыстық жол айырбастамайды.
  • Джекпоттар мен бонустар per currency арқылы дұрыс/дұрыс көрсетіледі.
  • PSP-әдістер валюталар бойынша сүзіледі; лимиттер витринаға сәйкес келеді.
  • SLA FX жаңалық және алерталар теңшелген; құбылмалы оқиғалар үшін freeze windows.
  • Валюталардың сандары мен символдарын оқшаулау; хардкодсыз промо үлгілері.
  • Саясат/FX өзгерістерінің аудиті; чектің қайталануы.
  • Мультитенант/өңір: деректерді оқшаулау, әртүрлі спрэдтер мен лимиттер.
  • Оқиғалар ойнатқыштары: FX-секіру, RGS-минимумының сәйкессіздігі, PSP-лимиттерінің сәтсіздігі.

Қорытынды

per currency каталогтары - бұл «курсқа көбейту» емес, инженерлік пән. Номинал мен көріністі бөліңіз, FX және дөңгелектеу саясатын орталықтандырыңыз, per currency проекцияларын материалдандырыңыз және жаңаруды өлшеңіз. Сонда витрина жылдам, болжамды және адал болады, ал бизнес - маржаның жасырын жоғалуынан және жергілікті нарықтардағы реттеуші тосын сый-сияқтылардан қорғалады.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.