GH GambleHub

Directory per currency

Catalogo per currency è una versione di catalogo di contenuti e price, dove prezzi, limiti, bonus, tassi minimi, jackpot e testi promo sono adattati alla valuta giocatore/tenante/regione. L'obiettivo è dare le giuste price-point e regole senza copipast logiche e senza rischi a causa delle conversioni «al volo».

Effetti chiave:
  • Le fasi di scommessa naturali e i prezzi «belli» (₺9). 99, R$5, €0. 20).
  • Reddito: limiti precisi e busti senza «mangiare» i margini a causa dei corsi.
  • Conformità alle regole locali (licenze, tasse, age/geo).

1) Modello dati: condividiamo «nominale» e «rappresentazione»

Base Price (nominale): valuta unica interna PLN/EUR/USD per i calcoli.
Display Price - Viene calcolato da + FX + arrotondamento + sconto (spread/fees).
Policy: regole di arrotondamento, passaggi di puntata, limiti di min/max, jackpot, bonus e wager - configurabili per currency.

Mini-schema (semplificato):
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) Origine corsi (FX) e «freschezza»

Servizio FX - un unico punto di verità per le conversioni:
  • Fornitore di corsi: base e riserva frequenza di aggiornamento (ad esempio ogni minuto per volatili, ogni 15 minuti per stabili).
  • Bounded staleness: SLA «corsi non più vecchi di ≤ t» (ad esempio p95-5 min).
  • Spread e commissioni: configurabili per tenant/region/currency.
  • Freeze windows: «congelare» il corso di partita/torneo/finestra promozionale in modo che il price non «salta».
  • Controllo: riepilogo delle versioni FX con'valid _ from/valid _ to 'per riprodurre gli assegni.
FX di esempio:
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) Arrotondamento e «belli» ponti price

Arrotondare dopo FX e spread:
  • Prezzi/pacchetti: '99', '9. 99`, `4. 90 '(punti psicologici).
  • Puntate e passaggi: «ceil _ to _ step» al passo valutario (₺1, CLP $50).
  • Bonus: arrotondamento al passo del voucher (R $1/1).
  • Ordine delle operazioni: 'raw = base fx (1 + spread)' → 'rounded = round _ policy (raw)' → 'min/max clamp'.

Anti-esempio, «arrotondamento bancario» per i tassi può dare dei passi «impropri» - usare politiche esplicite.

4) Limiti, min/max e jackpot

Min/Max per currency - Tiene conto delle leggi locali e dei vincoli RGS.
Jackpot: se il provider tiene il jackpot nella propria valuta (ad esempio, EUR), mostra l'equivalente localizzato (informatore) o conserva i pool per valuta.
Passo valuta: CLP/JPY senza centesimi - tutti i limiti sono interi.

Tabella dei limiti di esempio:
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) Bonus e voucher per currency

Il valore del bonus è configurato per currency (non «riconteggio» in fronte).
Wager: memorizza come moltiplicatore (x30) o come importo in valuta; Evitate la miscela.
Anche la casella vincitrice/cache è per currency.
Testi di marketing: localizzazione dei numeri e valuta nei modelli senza hardcode.

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) Restrizioni provider (RGS/PSP)

RGS: alcuni giochi non sono disponibili per valute crypto/locali; alcuni provider richiedono minimi fissi (per esempio, €0. 20).
PSP: i metodi di pagamento dipendono dalla valuta (PIX BRL, AUD, Papara TRY); Anche i limiti di deposito/uscita sono diversi.
Regola: catalogo/vetrina filtra giochi e modalità di pagamento valuta e giurisdizione prima della visualizzazione.

7) Tracciato architettonico

Currency Policy Store (COP) - Tabelle di regole per currency (passi, limiti, price point, arrotondamenti).
Servizio FX: cache di corsi, versione e SLA di freschezza.
Directory builder - Produce Read Models per currency (proiezioni).
API del livello di lettura - Estrae le proiezioni finite nessuna conversione on-the-fly nel percorso caldo UI.
Outbox Proiezioni: le modifiche FX/Policy all'evento « » gli update incrementali delle vetrine.

Diagramma delle sezioni di proiezione:

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

La ripartizione sulla valuta accelera il refresh e la raccolta delle metriche.

8) Proiezioni per currency (esempio)

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

Gli aggiornamenti sono Idempotent UPSERT da eventi catalogo + eventi FX/regole.

9) Formattazione e localizzazione

Il simbolo/codice è «₺/TRY», «R $/BRL», «€», «USDT» («crypto» - senza centesimi o con 2 caratteri, secondo la regola UX).
Raggruppamento e separatore decimale: dipende da «locale» (ru _ RU, tr _ TR, pt _ BR).
RTL/locale arabo: verifica separata della correttezza del segno di valuta.

10) Cache e prestazioni

Risposte per currency catalane nella cache 30-120 s; Indicatore FX «as _ of» nella risposta.
Disabilità: gli eventi FXUDpdated/« »/« »sono finalizzati alla pulizia delle chiavi della cache.
La paginazione con i puntatori per evitare che l'ordine delle schede salti con i piccoli update price.

11) Osservabilità e SLO

Metriche:
  • `catalog_p95_ms` по валютам, `fx_freshness_ms` (p50/p95/p99), `policy_refresh_latency_ms`.
  • Percentuale di prezzi «impropri» (non al passo), percentuale di transazioni rifiutate a causa dei limiti.
  • Variazione della vetrina vs per l'assegno-out (dove si verifica il debito reale).
Alert:
  • FX più vecchio di SLA, aumento degli errori di arrotondamento, aumento dei guasti PSP sui limiti.
  • Non corrispondenza tra il minimo RGS e il minimo vetrino.

12) Complaens, tasse e residency

Per currency per country: controlla la combinazione'currency + geo + license '.
Regole fiscali/fee - nella politica di valuta e nell'assegno.
Residency - Dati e calcoli per le valute locali - nella regione corrispondente.

13) Test

Property-based: invariante «dopo la conversione e l'arrotondamento, il prezzo è al passo»; «min ≤ value ≤ max».
Golden-case - un insieme di valute/price di riferimento per la regressione.
Chaos FX: corso «saltatore», freeze windows, FX provider.
E2E: la parzialità dell'importo in vetrina e il prelievo finale; tolerance 0. 01 unità di valuta (o 1 passo).

14) Errori tipici

Conteggia al volo l'API di lettura con un UX instabile e un p99 alto.
Ignora passaggi di valuta (CLP/JPY): «metà» e guasti RGS/PSP.
Arrotonda «per abitudine» invece di regole chiare per policy.
Non fissare la versione FX nell'assegno non è possibile smontare le controversie.
Un unico bonus tramite FX → numeri «strani» per i mercati locali.
Nascondere le commissioni in FX senza trasparenza è un rischio di reclami e multe.

15) Ricette veloci

Le scommesse in TRY/BRL sono un passo ₺1/R $0. 50, min. di arrotondare verso l'alto al passo, «bei» ponti price per i sacchetti.
Crypto (USDT/USDC) - Passo $0. 10, arrotondamento al passo successivo, nessuna commissione nella proiezione (ma visibile nell'assegno).
High-volatility FX: freeze per partita/promo; alert in caso di deviazione> X% dal price base.
Multi-tenant: differenze di spread/passo nei marchi; fairness nei calcoli delle proiezioni per tenant.

16) Esempio di configurazione (sorgente unica della verità)

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) Foglio di assegno prima della vendita

  • Moneta di base unica e versione FX in ogni assegno/evento.
  • I criteri di arrotondamento/passo/limite sono impostati per currency e coperti da test.
  • Le proiezioni del catalogo per currency sono pronte; Il percorso caldo non fa conversioni.
  • Jackpot e bonus sono correttamente visualizzati/gocciolati per currency.
  • i metodi PSP vengono filtrati per valuta; i limiti corrispondono alla vetrina.
  • SLA freschezza FX e gli alert sono configurati; freeze windows per eventi volatili.
  • Localizzazione di numeri e simboli di valuta modelli di promo senza hardcode.
  • Controllo delle modifiche alle regole/FX; riproducibilità dell'assegno.
  • Multi-tenant/regione - isolamento dei dati, differenze di spread e limiti.
  • Playbook incidenti: salto FX, non corrispondenza RGS minimo, guasto dei limiti PSP.

Conclusione

I cataloghi per currency sono una disciplina dell'ingegneria, non «moltiplicare per corso». Separare il valore e la rappresentazione, centralizzare FX e i criteri di arrotondamento, materializzare le proiezioni per currency e misurare la freschezza. Allora la vetrina sarà veloce, prevedibile e onesta, e le imprese saranno protette da perdite di margine nascoste e sorprese regolatorie sui mercati locali.

Contact

Mettiti in contatto

Scrivici per qualsiasi domanda o richiesta di supporto.Siamo sempre pronti ad aiutarti!

Avvia integrazione

L’Email è obbligatoria. Telegram o WhatsApp — opzionali.

Il tuo nome opzionale
Email opzionale
Oggetto opzionale
Messaggio opzionale
Telegram opzionale
@
Se indichi Telegram — ti risponderemo anche lì, oltre che via Email.
WhatsApp opzionale
Formato: +prefisso internazionale e numero (ad es. +39XXXXXXXXX).

Cliccando sul pulsante, acconsenti al trattamento dei dati.