według katalogów walutowych
Katalog walutowy jest wariantem katalogu treści i cen, gdzie wyświetlane ceny, limity, bonusy, minimalne zakłady, jackpoty i teksty promocyjne są dostosowane do waluty gracza/najemcy/regionu. Celem jest zapewnienie odpowiednich punktów cenowych i zasad bez kopiowania logiki i bez ryzyka wynikającego z konwersji w locie.
Najważniejsze skutki:- UX: stopnie naturalne i „piękne” ceny (niz 9. 99, R $5, €0. 20).
- Dochody: dokładne limity i zwiększa bez „jedzenia przez” marże ze względu na kursy.
- Zgodność: zgodność z przepisami lokalnymi (licencje, podatki, wiek/geo).
1) Model danych: oddzielne „nominalne” i „reprezentacja”
Cena bazowa (nominalna): pojedyncza waluta lokalna "PLN "/" EUR "/" USD' dla rozliczeń.
Cena wyświetlania - obliczona na podstawie wartości nominalnej + FX + zaokrąglanie + spread/opłaty.
Zasady: zasady zaokrąglania, kroki bukmacherskie, limity min/max, jackpoty, kwoty bonusowe i zakład - ustaw na walutę.
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) Źródło kursów (FX) i „świeżość”
Usługa FX jest jednym punktem prawdy dla konwersji:- Dostawca kursów: główny i rezerwowy; szybkość odświeżania (na przykład każda minuta dla lotnych, co 15 minut dla stabilnych).
- Ograniczona stalowość: SLA "kursy nie starsze niż Α t' (na przykład p95 ≤ 5 min).
- Rozłożenie i prowizje: skonfigurowane na najemcę/region/walutę.
- Zamrożenie okien: „zamrozić” kursy dla meczu/turnieju/okien promocyjnych tak, że cena nie „skoczyć”.
- Audyt: Zaloguj wersje FX z 'valid _ from/valid _ to' to play checks.
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) Zaokrąglanie i „piękne” punkty cenowe
Okrągłe po FX i smaruje:- Ceny/opakowania: "99", "9. 99`, `4. 90 '(punkty psychologiczne).
- Kursy i kroki: „ceil_to_step” do kroku waluty (1, CLP $50).
- Bonusy: zaokrąglanie w dół do kroku kuponu (R $1/5).
- Kolejność operacji: 'raw = base fx (1 + spread) (1 + opłata)' → 'zaokrąglony = round_policy (surowy)' → 'min/max zacisk'.
Anty-przykład: „zaokrąglanie banku” dla stóp może dać „brzydkie” kroki - użyj wyraźnych zasad.
4) Limity, min/max i jackpoty
Min/Max za walutę-Weź pod uwagę lokalne prawa i ograniczenia RGS.
Jackpoty: Jeśli dostawca trzyma jackpota w swojej walucie (np. EUR), pokazać zlokalizowany odpowiednik (informator) lub utrzymywać pulę walut.
Kroki walutowe: CLP/JPY bez koparek - wszystkie limity to liczba całkowita.
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) Bonusy i bony w walucie
Wartość bonusu: skonfigurowana na walutę (nie „przeliczanie” w czole).
Zakład: przechowywać jako mnożnik (x30) lub jako kwotę waluty; unikać mieszania.
Wygraj cap/cash out: również w walucie.
Teksty marketingowe: lokalizacja numerów i waluta w szablonach bez kodu twardego.
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) Ograniczenia dostawcy (RGS/PSP)
RGS: niektóre gry nie są dostępne dla walut „crypto ”/lokalnych; niektórzy dostawcy wymagają stałych minimów (na przykład 0 €). 20).
PSP: sposoby płatności zależą od waluty (PIX, PayID, AUD, Papara i TRY); inne są również limity wpłat/wypłat.
Reguła: Katalog/filtry sklepowe gry i metody płatności według waluty i jurysdykcji przed wyświetlaniem.
7) Zarys architektoniczny
Sklep polityki walutowej (CP) - tabele reguł na walutę (kroki, limity, punkty cenowe, zaokrąglanie).
Usługa FX: pamięć podręczna kursów, wersje i świeżość SLA.
Katalog builder: produkuje Czytaj modele na walutę (prognozy).
Czytanie warstwy API: wytłaczanie gotowych projekcji; brak konwersji w locie na gorącym torze UI.
Outbox → Projekcje: Zmiany FX/polityki → Zdarzenia „ Update/FXUpdated” → dodatkowe aktualizacje okien.
read_catalog_{tenant}_{region}_{currency}
Partytura walutowa przyspiesza kolekcję odświeżającą i metryczną.
8) Prognozy na walutę (przykład)
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)
);
Aktualizacje - idempotent 'UPSERTS' z zdarzeń katalogowych + FX events/policies.
9) Formatowanie i lokalizacje
Symbol/kod: '/TRY ',' R $/BRL', '€', 'USDT' (dla krypto - bez kopniaków lub z 2 znakami, zgodnie z polityką UX).
Ugrupowanie i separator dziesiętny: zależą od „locale” (ru_RU, tr_TR, pt_BR).
Lokalizacje RTL/Arabic: oddzielna kontrola poprawności znaku walutowego.
10) Buforowanie i wydajność
Odpowiedzi katalogu pamięci podręcznej za walutę dla 30-120 s; Podaj wskaźnik FX 'as _ of' w odpowiedzi.
Wyłączony: 'FXUpdated '/' KeyUpdated '/' GameUpserted' events → targeted cache key flush.
Paginacja z kursorami, dzięki czemu kolejność kart nie „skakać” z niewielkimi aktualizacjami cen.
11) Obserwowalność i SLO
Metryka:- 'catalog _ p95 _ ms' мвала та, 'fx _ freshness _ ms' (p50/p95/p99), 'policy _ refresh _ latency _ ms'.
- Udział „brzydkich” cen (nie leży na etapie), udział odrzuconych transakcji z powodu limitów.
- Rozbieżność „prezentacja vs obliczenia” na wymeldowaniu (gdzie występuje prawdziwy debet).
- FX starszy niż SLA, wzrost błędów zaokrąglania, wzrost błędów limitów PSP.
- Minimum RGS i wyświetlanie minimalnego niedopasowania.
12) Zgodność, podatki i miejsce zamieszkania
W przeliczeniu na walutę i na kraj: postępuj zgodnie z kombinacją licencji 'currency + geo +'.
Zasady podatkowe/opłata - w polityce walutowej i w czeku.
Rezydencja: dane i obliczenia dla walut lokalnych - w odpowiednim regionie.
13) Badanie
Nieruchomości: niezmienne „po konwersji i zaokrągleniu cena leży na kroku”; „min ≤ wartość ≤ max”.
Golden-cases: zestaw walut referencyjnych/cen dla regresji.
Chaos FX: kursy „skaczące”, zamrażanie okien, przełączanie dostawcy FX.
E2E: dopasowanie kwoty na prezentacji i całkowitej kwoty odpisanej; tolerancja ≤ 0. 01 jednostek walutowych (lub 1 krok).
14) Typowe błędy
Przeliczyć na muchę do odczytu API → niestabilny UX i wysoki p99.
Ignoruj ruchy waluty (CLP/JPY) → pół grosza i awarie RGS/PSP.
Zaokrąglenie z nawyku (zaokrąglanie bankierów) zamiast jasnych zasad na politykę.
Jest → niemożliwe, aby nie naprawić wersji FX w czeku, aby rozwiązać spory.
Pojedyncze nominały bonusowe za pośrednictwem FX → „dziwne” numery dla lokalnych rynków.
Ukrywanie opłat w FX bez przejrzystości jest ryzykiem roszczeń i grzywien.
15) Szybkie przepisy kulinarne
Zakłady w TRY/BRL: krok 1/R $0. 50, min-runda do kroku, „piękne” punkty cenowe dla pakietów.
Crypto (USDT/USDC) krok $0. 10, zaokrąglanie do najbliższego kroku, brak prowizji w pokazie (ale widoczne w czeku).
Wysoka zmienność FX: zamrażać na mecz/promo; wpisy na poziomie> X% ceny bazowej.
Multi-najemca: różne spready/kroki w markach; rzetelność obliczeń projekcji na najemcę.
16) Przykład konfiguracji (pojedyncze źródło prawdy)
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) Lista kontrolna przedsprzedaży
- Pojedyncza waluta bazowa i wersja FX w każdym sprawdzeniu/zdarzeniu.
- Zasady zaokrąglania/etapu/limitu są ustalane według waluty i objęte testami.
- Prognozy katalogów na walutę są gotowe; gorący sposób nie konwertuje.
- Jackpoty i bonusy są prawidłowo wyświetlane/kapane w walucie.
- Metody PSP są filtrowane według waluty; limity pokrywają się z prezentacją.
- FX świeżości SLA i wpisy są skonfigurowane; zamrażać okna dla lotnych zdarzeń.
- Lokalizacja numerów walutowych i symboli; non-hardcode szablony promocyjne.
- Zmiany polityki audytu/FX; sprawdź odtwarzalność.
- Multi-najemca/region: izolacja danych, różne spready i limity.
- Playbooks incydentu: skok FX, minimalne niedopasowanie RGS, awaria limitu PSP.
Wnioski
katalogi walutowe są dyscypliną inżynieryjną, a nie "mnożą się przez kurs. "Oddzielna denominacja i reprezentacja, centralizacja polityki FX i zaokrąglania, zmaterializowanie prognoz na walutę i pomiar świeżości. Następnie prezentacja będzie szybka, przewidywalna i uczciwa, a biznes będzie chroniony przed ukrytymi stratami marży i niespodziankami regulacyjnymi na rynkach lokalnych.