დირექტორიები
Per currence კატალოგი არის შინაარსისა და პრაიმერის კატალოგის ვერსია, სადაც ნაჩვენები ფასები, ლიმიტები, პრემიები, მინიმალური განაკვეთები, ჯეკპოტები და ტექსტები პრომო ადაპტირებულია მოთამაშის/ტენანტის/რეგიონის ვალუტასთან. მიზანია სწორი ფასების პოზების და წესების მიცემა ლოგიკის კოპირების გარეშე და რისკების გარეშე „ფრენაზე“ კონვერტაციის გამო.
ძირითადი ეფექტები:- UX: განაკვეთების ბუნებრივი ნაბიჯები და „ლამაზი“ ფასები (9 ევრო). 99, R$5, €0. 20).
- შემოსავალი: ზუსტი ლიმიტები და ბუჩქები კურსების გამო „ჭამის“ გარეშე.
- შესაბამისობა: შესაბამისობა ადგილობრივ წესებთან (ლიცენზიები, გადასახადები, age/geo).
1) მონაცემთა მოდელი: ჩვენ ვყოფთ „მნიშვნელობას“ და „წარმოდგენას“
Base Price (დასახელების): ერთიანი შიდა ვალუტა 'PLN '/' EUR '/' აშშ დოლარი "გაანგარიშებისთვის.
Display Price (სპექტაკლი): გამოითვლება + FX + დამრგვალება + ზღვარი/ფასდაკლებით (spread/fees).
პოლიტიკა: დამრგვალების წესები, ფსონების ნაბიჯები, ნაღმები/ლიმიტის მაქსი, ჯეკპოტები, ბონუსის თანხები და 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 „კურსები არ არის უფრო ძველი, ვიდრე Ct“ (მაგალითად, p95-5 წუთი).
- ჭორები და კომისიები: კონფიგურაცია ხდება per tenant/region/currency.
- უფასო Windows: „გაყინვა“ კურსები მატჩის/ტურნირის/სარეკლამო ფანჯრების, ისე რომ ფასი არ „გადახტებოდა“.
- აუდიტი: FX ვერსიების ლოგო 'valid _ from/valid _ to' ჩეკების რეპროდუცირების მიზნით.
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 ანაბრის/გამომავალი ლიმიტები ასევე განსხვავებულია.
წესი: დირექტორია/ვიტრინა ფილტრავს თამაშებს და ვალუტისა და იურისდიქციის გადახდის მეთოდებს შოუში.
7) არქიტექტურული წრე
Currency Policy Store (CP): ცხრილები მართავს per currency (ნაბიჯები, ლიმიტები, ფასების წერტილები, დამრგვალებები).
FX სერვისი: კურსების ქეში, ვერსიები და SLA სიახლე.
ბილდერის კატალოგი: აწარმოებს Read Models per currency (პროგნოზები).
კითხვის API ფენა: ამოიღეთ მზა პროექციები; UI- ის ცხელ გზაზე არ არის ფრენის კონვერტაცია.
Outbox - Projection: ცვლილებები FX/პოლიტიკოსი - მოვლენები 'CurrencyPolicyOndated/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)
);
განახლებები - idempotent 'UPSERT- ები FX/პოლიტიკოსის + მოვლენების კატალოგის მოვლენებიდან.
9) ფორმატირება და ლოკალი
სიმბოლო/კოდია: 'OTR/TRY', 'R $/BRL', 'USDT' (კრიპტოსთვის - კოპეკების გარეშე ან 2 ნიშნით, UX პოლიტიკის მიხედვით).
ჯგუფი და ათობითი გამყოფი: დამოკიდებულია „ლოკალზე“ (ru _ RU, tr _ TR, pt _ BR).
RTL/არაბული იდაყვის: ცალკეული შემოწმება ვალუტის ნიშნის სისწორეზე.
10) ქეშირება და შესრულება
კათოლიკური პასუხები per currence 30-120 გვ; FX ინდიკატორი 'as _ of' უპასუხეთ.
ინვალიდობა: მოვლენები 'FXUpdated '/' PolicyUpserted '/' GameUpserted' - ქეშის გასაღებების სამიზნე გაწმენდა.
კურსორების მიერ პაგინაცია ისე, რომ ბარათების შეკვეთა არ „გადახტებოდა“ ფასის მცირე აპდატებზე.
11) დაკვირვება და SLO
მეტრიკა:- `catalog_p95_ms` по валютам, `fx_freshness_ms` (p50/p95/p99), `policy_refresh_latency_ms`.
- „მახინჯი“ ფასების წილი (ერთი ნაბიჯით არ დგას), უარყოფითი გარიგების წილი ლიმიტების გამო.
- „ვიტრინის გაანგარიშების“ შეუსაბამობა ჩეკზე (სადაც ხდება რეალური დებიუტი).
- FX უფრო ძველია, ვიდრე SLA, მომრგვალო შეცდომების ზრდა, PSP შეზღუდვების ზრდა.
- შეუსაბამობა RGS მინიმუმსა და ვიტრინულ მინიმუმს შორის.
12) შესაბამისობა, გადასახადები და დათმობა
Per currency - per country: დააკვირდით 'currency + geo + license' - ს კომბინაციას.
საგადასახადო წესები/fee - ვალუტის პოლიტიკაში და ჩეკში.
Residence: მონაცემები და გამოთვლები ადგილობრივი ვალუტებისთვის - შესაბამის რეგიონში.
13) ტესტირება
Property-based: ინვარიანტი „კონვერტაციისა და დამრგვალების შემდეგ, ფასი ერთი ნაბიჯით დევს“; «min ≤ value ≤ max».
Golden-cases: საცნობარო ვალუტების ნაკრები/ფასების რეგრესიისთვის.
Chaos FX: „გადახტომა“ კურსები, უფასო windows, FX პროვაიდერის შეცვლა.
E2E: ფულადი სახსრები ფანჯარაში და საბოლოო გაუქმებული თანხა; ტოლერანსი 0. 01 ერთეული ვალუტა (ან 1 ნაბიჯი).
14) ტიპიური შეცდომები
არასტაბილური UX და მაღალი p99 არის ფრენის დათვლა კითხვის API- ში.
გაცვლითი ნაბიჯების უგულებელყოფა (CLP/JPY) - „ნახევარი კოპეკი“ და RGS/PSP უარის თქმის შესახებ.
Bankers rounding (bankers rounding) იმის ნაცვლად, რომ მკაფიო წესები იყოს per policy.
არ ჩაწეროთ FX ვერსია ჩეკში - შეუძლებელია დავების დაშლა.
FX- ის საშუალებით ერთი ბონუსის ნომინაცია არის „უცნაური“ ნომრები ადგილობრივი ბაზრებისთვის.
FX- ში საკომისიოს დამალვა გამჭვირვალეობის გარეშე არის პრეტენზიებისა და ჯარიმების რისკი.
15) სწრაფი რეცეპტები
განაკვეთები TRY/BRL: ნაბიჯი 1/R 0 $. 50, მაღაროების დამრგვალება ნაბიჯზე, პაკეტებისთვის „ლამაზი“ ფასების წერტილები.
Crypto (USDT/USDC): ნაბიჯი 0 $. 10, დამრგვალება უახლოეს ნაბიჯზე, შოუში საკომისიოს არარსებობა (მაგრამ ჩეკში ჩანს).
High-volatily FX: freeze მატჩისთვის/პრომო; ალერტები გადახრისას> საბაზო ფასის X%.
მრავალ ჩრდილში: სხვადასხვა sprads/ნაბიჯები ბრენდებზე; 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 პროექციები და გაზომეთ სიახლე. შემდეგ ვიტრინა სწრაფი, პროგნოზირებადი და გულწრფელი იქნება, ხოლო ბიზნესი დაცულია ადგილობრივ ბაზრებზე ზღვისა და მარეგულირებელი სიურპრიზების ფარული დანაკარგებისგან.