GH GambleHub

Interfeýsde walýutalary üýtgetmek

1) Ýörelgeler

1. Ilki manysy, soň UI. Hasabyň walýutasyny (buhgalteriýa hakykaty) görkezilýän walýutadan (amatlylyk) we amalyň walýutasyndan (puluň hakyky konwersiýasy) aýyryň.
2. Nol düşnüksizlik. Bulaşyklyk töwekgelçiliginde kod + nyşan görkeziň ('US $', 'CA $', 'MXN', 'R $'). KDE üçin kody elmydama jikme-jik goşuň.
3. Kurslaryň dogruçyllygy. Görnüşi ýaly: kursyň çeşmesi, soňky täzeleniş pursaty, komissiýanyň/sprediň goşulandygy.
4. Giriş durnuklylygy. Walýuta çalşygy aç-açan razylyksyz giriş manysyny "bökmeli" däldir (esasanam stawkalaryň/goýumlaryň görnüşlerinde).
5. Formatlaryň lokalizasiýasy. Bölüjiler, boşluklar, walýuta belgisi - ulanyjynyň lokalizasiýasy boýunça; takyklygy - walýuta boýunça.


2) Geçiş modelleri

Görkezilişi (display-only): ähli hasaplaşyklar hasabyň walýutasynda galýar, UI saýlanan walýutanyň ekwiwalentini görkezýär. Katalog, profil, analitika üçin ulanyň.
Gibrid (soft convert): saýlanan walýutada görkezmek + hasabyň walýutasynda amalyň tassyklanmagy (ikisini hem görkezýäris).
Operasiýa otagy (hard convert): ulanyjy amalyň walýutasyny üýtgedýär (goýum/çykarmak/stawka). Anyk kurslar, komissiýalar, kesgitleniş wagty gerek.

Düzgün: Adaty ýagdaýda - display-only, "gaty" öwrülişigi diňe degişli akymlarda (kassa, pul çykarmak, pul geçirmek) goşuň.


3) Gözegçilikler we ýerleşdiriş

Profil panelinde/şlýapada walýuta geçişi (" /€/$" nyşany ýa-da walýuta kody).
Selektor: kod/at/nyşan boýunça gözlemek; saýlanan/ýygy-ýygydan walýutalar - ýokardan.
Görnüşleriň içinde (goýum/stawka): jemiň meýdanynyň sag tarapyndaky ykjam selektor, gapdalynda "≈ XXX-daky ekwiwalent" diýen yşarat bar.
Jübi patterni: süzmek üçin sanaw we giriş bilen bottom sheet.

html
<button aria-haspopup="listbox" aria-expanded="false" class="currency-switch">UAH</button>
<ul role="listbox" class="currency-menu" hidden>
<li role="option" aria-selected="true">UAH — ₴</li>
<li role="option">USD — US$</li>
<li role="option">EUR — €</li>
<li role="option">TRY — ₺</li>
</ul>

4) Formatlamak we takyklyk

Minor birlikler: jemi iň az birliklerde saklaň (teňňe, sent, satoş).

Walýuta boýunça onluk derejeler:
  • 0: JPY, KRW, CLP
  • 2: USD, EUR, UAH, TRY
  • 3 +: käbir walýutalar ZAR (2), KWD (3), kripto (4-8)
  • Cryptocurrencies: 8 belgä çenli görkeziň (dinamiki takyklyk, ýöne okamak üçin aşaky çägi bilen).
  • Tablo sanlary: 'font-variant-numeric: tabular-nums;' sütünleri deňlemek üçin.
Intl-snippet:
js const fmt = (amountMinor, currency, locale) => {
const fraction = { JPY:0, KRW:0, KWD:3 }[currency]?? 2;
return new Intl.NumberFormat(locale, { style:'currency', currency, minimumFractionDigits:fraction, maximumFractionDigits:fraction })
.format(amountMinor / 10fraction);
};
fmt(200000, 'UAH', 'uk-UA'); // 2 000,00 ₴

5) Kurslar we täzelenmeler

Çeşme: nyrhyň üpjün edijisini belläň (içerki praýsing/bank/FX-API).
Nagt pul: Kurslary akylly ýygylyk bilen täzeläň (mysal üçin, her 60-300 sekunt) + talap boýunça içerki täzelenmeler.
Fiksasiýa wagty: 'täzelenen N minut yzda' we amal düzülende fiksasiýa wagtyny görkeziň.
Spred/komissiýa: aç-açan setiri görkeziň: "1 USD = 36,60 UAH (1-nji spred goşulýar. 5%)».
Tegelek: bank ýa-da adaty - birini saýlap, syýasatda belläň.


6) UX teksti we düşündirişleri

Ekwiwalenti: "≈ 52,10 €" - sessiz reňkli mukdaryň gapdalynda hakyky wagtda täzelenýär.
Hukuk bellikleri: "Hakyky kurs we komissiýa tassyklama ädiminde kesgitlener".
Uzyn kodlar: tooltips/ikinjisini ulanyň: "US $ - ABŞ dollary".
Sebetdäki konwersiýa: düşündirişsiz "jemi" üýtgetmäň; Sanamak setirini görkeziň.


7) Elýeterlilik (A11y)

'role = "listbox/option"' walýuta saýlaýjysynda.
Klawiatura goldawy: kod/at boýunça oklar, Enter, Type-ahead.
SR üçin okamak: "Görkeziş walýutasy: UAH - ukrain griwniýasy".
Reňk ≠ ýeke-täk many göteriji (hemişe kod/tekst bar).
RTL: sanlar/kodlar v 'dir = "ltr"' arap satrlarynyň içinde.


8) Ýerine ýetiriş we kesmek

Kurslar - TTL bilen ýatda + localStorage (mysal üçin 5 minut).
Batch-täzelenmeler: ekwiwalentleri paketler bilen sanaň (requestAnimationFrame, debauns 100-200 ms).
Nyrhyň üýtgemegi <bosagada (mysal üçin, 0,1%) sanawyň goşmaça rerenderini triggerlemäň.


9) iGaming aýratynlyklary

Hasabyň walýutasy - esasy hasabat (goýumlar, balans, taryh).
Nyrhyň walýutasy: adatça = hasabyň walýutasy; başga bir zat soralsa, goşa bloky görkeziň: "USD-de X XXX (UAH-da ≈ Y YYY)".
Hasaplamada düzüliş: ýeňişler nyrh däl-de, hasaplama pursatyndaky hümmet boýunça konwersiýa edilýär - muny kuponyň/taryhyň jikme-jikliklerinde görkezmeli.
Depozit/çykarmak: PSP/bankyň hümmeti we komissiýasy - aýratyn setirde; ETA usuly boýunça.
Jogapkär oýnuň çäkleri: hasabyň walýutasynda kesgitlenýär; eger UI başga walýutada bolsa, iki manyny hem görkeziň.
Ýaryşlar we baýraklar: baýrak gaznasynyň walýutasy ýazylýar; görkezilende ekwiwalent - takmynan, bellik bilen.


10) Antipatternler

Walýuta çalşylanda giriş meýdanyndaky manynyň "jadyly" üýtgemegi - aç-açan razylyksyz.
Countryurt kody bolmazdan bir "$" nyşanyny ulanmak.
Gizlin komissiýa bilýär (spred hakda setir ýok).
Lokallary we walýutalary garyşdyrmak ('UAH' üçin 'en-US' -y formatlaň).
JPY/KRW üçin "2 belgi" ýa-da ähli kriptografik walýutalar üçin "8 belgi".
Taryhy amallary häzirki nyrh boýunça "yzky gün" bilen gaýtadan hasaplamak - "gaýtadan hasaplamak" belgisi bolmazdan.


11) Dizaýn-ulgamyň bellikleri (mysal)

json
{
"currency": {
"default": "UAH",
"displayList": ["UAH","USD","EUR","TRY","PLN","BRL","MXN"],
"fractions": { "JPY":0, "KRW":0, "KWD":3, "BTC":8 },
"showCodeWithSymbol": ["USD","CAD","AUD","NZD"],
"approxPrefix": "≈ "
},
"format": {
"tabularNums": true,
"grouping": "locale",
"negative": "−"
},
"fx": {
"ttlSec": 300,
"changeThresholdPct": 0.1,
"showSpread": true
}
}

12) Snippetler

Walýuta geçişi (React, kontekst + Intl)

tsx import { createContext, useContext, useState, useMemo } from 'react';

type Cur = 'UAH'    'USD'    'EUR'    'TRY';
const CurrencyCtx = createContext<{cur:Cur,set:(c:Cur)=>void, rate:(from:Cur,to:Cur)=>number}>({cur:'UAH',set:()=>{},rate:()=>1});

export function CurrencyProvider({children}:{children:React.ReactNode}){
const [cur, set] = useState<Cur>('UAH');
// fx: получить из кэша/апи; здесь — заглушка const table = { UAH:{USD:0.027,EUR:0.025,TRY:0.89,UAH:1}, USD:{UAH:36.6,EUR:0.93,TRY:33.0,USD:1}, EUR:{UAH:39.2,USD:1.07,TRY:35.4,EUR:1}, TRY:{UAH:1.12,USD:0.030,EUR:0.028,TRY:1} };
const rate = (from:Cur,to:Cur)=> table[from][to];
const value = useMemo(()=>({cur, set, rate}),[cur]);
return <CurrencyCtx.Provider value={value}>{children}</CurrencyCtx.Provider>;
}

export function useCurrency(){ return useContext(CurrencyCtx); }

export function Money({minor, iso}:{minor:number, iso:Cur}){
const { cur, rate } = useCurrency();
const fraction = { JPY:0, KRW:0, KWD:3 }[cur as any]?? 2;
const v = (minor/10fraction) rate(iso, cur);
return <span style={{fontVariantNumeric:'tabular-nums'}}>{new Intl.NumberFormat(undefined,{style:'currency',currency:cur, minimumFractionDigits:fraction, maximumFractionDigits:fraction}).format(v)}</span>;
}

Iki gezek görkezmek (operasiýa öwrülişigi)

html
<div class="amount">
<label>Сумма депозита</label>
<div class="row">
<input type="number" inputmode="decimal" aria-describedby="fxnote">
<select aria-label="Валюта операции">
<option>USD</option><option>EUR</option><option>UAH</option>
</select>
</div>
<small id="fxnote">≈ 2 000,00 ₴ · Курс будет зафиксирован на следующем шаге</small>
</div>

13) Metrikler

FX latency: walýuta çalşygyndan başlap, ähli meýdanlary täzelemäge çenli wagt (maksat ≤ 150 ms).
Correctness rate: "nädogry summalar" boýunça sapporta ýüz tutmalaryň paýy (<0,2%).
Display vs account mismatch: Ulanyjynyň walýutalary bulaşdyrýan wakalary (maslahatlar bilen peseldýäris).
Kurs maslahatlarynyň CTR: "Kurs/komissiýa barada has giňişleýin maglumat".
Kassa abandony konwersiýa edilende: mukdaryň "duýdansyz" üýtgemegi bilen baglanyşykly şowsuzlyklaryň paýy.


14) QA-çek-sanawy

Manysy we aç-açanlygy

  • Hasabyň we/ýa-da amalyň walýutasy hemme ýerde görünýär.
  • $ üçin ýurduň kody görkezilýär (US $, CA $ we ş.m.).
  • Kurs, täzeleniş senesi we spred/komissiýa barada bir setir bar.

Format we takyklyk

  • Walýuta boýunça onluk kategoriýalar (JPY = 0, KWD = 3, crypto = 8-e çenli).
  • San/walýutanyň lokalizasiýasy UI diline laýyk gelýär.
  • Taryhy amallar belliksiz "häzirki kurs boýunça" gaýtadan hasaplanmady.

Özüni alyp barşy

  • Walýutany üýtgetmek tassyklamazdan girişi üýtgetmeýär.
  • "≈" ekwiwalenti haýal we çalt täzelenýär.
  • Walýuta saýlaýjysy klawiatura elýeterlidir, Type-ahead işleýär.

iGaming aýratynlygy

  • Kuponda: hasapdan çykarmak/ýeňiş we olaryň walýutasy gol çekilýär, kesgitleniş hümmeti görkezilýär.
  • Kassada: PSP/bankyň komissiýalary aýratyn görünýär.
  • Çäklerde: iki ululyk hem görkezilýär (hasap we görkezilýän).

RTL/A11y

  • Kodlar/pullar RTL-de dogry okalýar ('dir = "ltr"' sanlar üçin).
  • Kontrast we fokus görkezijileri AA-a laýyk gelýär.

15) Dizaýn-ulgamdaky resminamalar

Komponentler: 'CurrencySwitch', 'Money', 'FxNote', 'DualAmount'.
Takyklyk/tegelek syýasaty we ýeke-täk format funksiýasy.
Düzgünler: "haçan display-only", "haçan hard-convert", "nädip spred görkezmeli".
Walýuta gollanmasy: kod, nyşan, kategoriýalar, nyşanlaryň sebitleýin gapma-garşylyklary.
Do/Don 't galereýasy: "Kodsyz $", giriş awto bökmek, gizlin komissiýalar.


Gysgaça gysgaça

Walýuta çalşygy diňe " /€/$" saýlaýjy däl. Bu, puluň aýdyň modeli (hasap walýutasy vs görkezmek vs amal), komissiýa bilen adalatly kurs, lokal taýdan dogry formatlamak we giriş meýdanlarynyň seresaply hereketi. Düzgünleri dizaýn ulgamynda düzüň, kurslaryň formatlanmagyny we kesilmegini awtomatlaşdyryň - ulanyjylar sanlara şübhelenmezden we "görünmeýän" spredlerde pul ýitirmezden mukdar bilen ynamly işlärler.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.