Cataloage multi-valutare
(Secțiunea: Operațiuni și Management)
1) Sarcina și domeniul de aplicare
Un catalog multi-valutar este o singură sursă de adevăr despre prețuri/taxe/taxe pentru diferite valute, regiuni și canale. Acesta prevede:- preț corect mart (UX, încredere),
- reproductibilitatea calculelor (audituri, returnări)
- previzibilitate economică (marjă/taxe)
- conformitatea (impozitare, sancțiuni, restricții valutare).
2) Modelul de date (de referință)
Entități:- Produs/SKU: '{sku _ id, titlu, atribute, region_policies[]}'
- PriceList: '{listă de prețuri _ id, base_currency, effective_from, effective_to, version}'
- PriceItem: '{sku _ id, , , ,
- FXRate: '{pair: EUR→USD, rate, sursă, metodă, precizie, effective_from, versiune}'
- "minor _ units' (ISO 4217; de exemplu, JPY = 0, USD/EUR = 2, KWD = 3; pentru cripto - până la 8)
- 'rotunjire _ mode': 'HALF _ UP' (retail), 'BANKERS' (finanţe), 'FLOOR '/' CEIL' (taxe/autorităţi de reglementare)
3) Surse și politici FX
Surse: furnizori de cursuri (bănci comerciale/centrale), proprii TWAP/mediană.
Politica de actualizare: frecvență (1-15 min pentru volatil, timp 1/zi pentru stabil), întârziere publicare.
Marcaje: „rata (1 + fx_markup_bps)” la partea de client; reguli transparente per canal/regiune.
Fereastra de cotare garantată (blocarea ratei): 5-30 minute cu „fx _ version” în ordine.
Anti-salt: modificări de capac pe bifă, întrerupătoare de circuit, rezervă pe cea mai recentă ofertă validă.
Versioning: fiecare publicație de curs are o 'versiune', 'effective _ from'; Păstrați istoria pentru retururi/dispute.
4) Strategii de stabilire a prețurilor
Baza + FX: stocați prețul de bază în „nucleu” (de exemplu, EUR), convertiți pe caseta de prezentare.
Foi per valută: prețuri pre-calculate pentru valute cheie (cel mai bun UX, predictibilitate).
Mixt: top 10 valute - pre-calcul, „coadă lungă” - on-the-fly.
Charm-price: 'X. 99/95/90 'pe regiuni, monitorizați acumularea de erori de rotunjire.
Taxe: taxa de plată, taxa transfrontalieră, taxa de rețea (cripto) - în directorul sau în etapa „Checkout Pricing”.
5) Taxe și „incluziune”
TVA/GST incluse/excluse: UE - mai des decât TVA-inclusiv; B2B poate fi fără TVA.
Straturi de taxe: federale/de stat/locale; pentru jocuri online - taxe specifice.
Rate prag: impozitul variază de la cifra de afaceri/categorie/regiune (prag).
Rotunjirea taxelor: per-item vs per-basket; modurile de rotunjire și ordinea de calcul trebuie să fie deterministe.
Yur. raportare: păstrați 'tax _ rule _ version' în check/chitanță.
6) rotunjire și precizie
Runda la ultimul pas al spectacolului; păstrați „precizie ridicată” în calcule (până la 8-9 caractere).
Pentru cripto, utilizați biblioteci zecimale (fără punct binar plutitor).
Coș anti-drift: „bancheri rotunjire” pentru sume, dar UX-rotunjire pentru afișare; fix 'rotunjire _ scope'.
Suma regulii: suma de rotunjire linie cu linie trebuie să fie aceeași ca și total - utilizare penny distribuție.
7) Cataloage, promo-uri și pachete
Promo- правила: 'if region = A and valute in [EUR, USD] then discount = 10% cap = 50'.
Ordinea de aplicare: (1) prețul de bază → (2) reduceri → (3) taxe → (4) taxe → (5) rotunjire.
Distribuția pachetului: proporțională cu fila de poziție înainte de reducere; ambalaj pentru retururi.
Prag promo: transport gratuit/bonus atunci când total≥X în valută coș; Păstrați echivalentul valutei de bază, dar fixați versiunea FX.
8) Integrarea cu plățile și conformitatea
Disponibilitate valutară: Nu fiecare monedă este disponibilă pentru fiecare jucător/regiune/furnizor de plată.
Garantat FX: prefix de autorizare prin fix 'fx _ version'; în timpul expirării - solicitarea confirmării noului preț.
CUS/sancțiuni: liste blocate de valute/bănci/jetoane, restricții privind conversia.
Returnări/chargeback: recalculare în conformitate cu istoricul „fx _ version” al ordinului; taxa de returnare - prin director la data tranzacției.
9) API Arhitectură și Contract
Director de lectură:- "GET/catalog/preturi? sku =... & valută =... & regiune =... & listă de prețuri =... '
- : '{unit _ price, valute, , , , comisioane [],
- 'POST/pricing/cote {items [], region, valute, buyer_type}'
- Ответ: '{items _ price [], subtotal, discounturi, taxe [], taxe [], total, fx_version, lock_ttl, semnătură}'
- 'POST/pricing/comite {quote_id, semnătură}' → chitanţă cu hash şi semnături.
- 'PretListaActualizat', 'FXRatePublished', 'TaxRuleChanged', 'PromoChanged' - с 'versiune/effective _ from'.
10) Caching și performanță
Edge cache: key 'listă de preţuri: regiune: valută: sku: versiune'; TTL pentru valute stabile este mai mare.
Încălzire: Încălzirea categoriilor de top prin lansarea campaniei.
SWR (stale-în timp ce-revalidat): pentru storefronts; checkout - numai proaspete.
Invalidare parțială: handicap prin etichetele 'sku', 'category', 'pricelist _ version'.
SLO: p95 ≤ 120ms pentru afișare, p95 ≤ 250ms pentru citat, ≥99. 95% disponibilitate.
11) Observabilitate și audit
Trace: 'trace _ id',' pricelist _ version ',' fx _ version ',' tax _ rule _ version 'în toate evenimentele.
Imutabilitate: reviste WORM de publicații de liste de prețuri/cursuri; Merkle-felii, semnături de eliberare (DSSE).
Chitanțe: check/chitanță cu aspect complet și hash sarcină utilă; a se păstra timp de 7-10 ani (prin regulator).
Tablouri de bord: discrepanță vitrina↔checkout, frecvență de rotunjire în sus/în jos, erori FX, timpul de blocare a cursului (blocare TTL), ROI promo.
12) Localizarea afișajului
Formatul valutar: caracter/cod (₴, €, $, AED), poziția caracterului, delimitatoare, spațiu.
Reguli locale: "₴ 1,234,56" vs "$1,234. 56”.
Psihologie: etichetele de preț magice ('.99') nu sunt întotdeauna adecvate în fintech/jocuri; testa per-regiune.
Semnături juridice: „Prețul include TVA”, „Comisionul de rețea se percepe separat”.
13) Cazuri speciale
Valute fără parte fracționată: JPY/ISK - minor_units=0.
Unități minore cu trei caractere: KWD/BHD = 3.
Crypto: BTC/ETH/USDT - până la 8 caractere, taxa de rețea separat; stablecoins ≠ „1:1 rubrică” cu transfrontalieră.
Preţ dublu: „valută catalog” ≠ „valută anulată” (rată bancară comercială). Documentează răspândirea.
Sport/jocuri: limite maxime de câștiguri în moneda catalogului - păstrați echivalente prin runda 'fx _ version'.
14) SLO/SLI și măsurători de succes
Corectitudine: proporția comenzilor în care total_checkout = total_quote (± 1 unitate minoră pentru regulile de distribuție) ≥ 99. 99%.
Stabilitate FX: ponderea operațiunilor în fereastra de blocare a ratei ≥ de 99%.
Economie: marjă/unitate vs plan; abateri datorate FX/rotunjire (bps).
UX: citat de viteză p95, cota de dumps pe conversia prețurilor, NPS storefronts.
Audit: 100% din verificări cu '_ version' salvate și semnătură.
15) Registrele de redare incidente
„Prețul pe caseta de prezentare ≠ în coș”:1. congela numerar dezactivat, 2) lista de prețuri de reîmprospătare forțată, 3) compara „pricelist _ version ”/„ fx _ version”, 4) compensarea politicii.
„Saltul FX distruge marginile”:1. permite creșterea capului de marcare/reducere, 2) reducerea TTL de blocare, 3) comuta la sursa de rezervă.
„Taxa nu converge”:1. check 'tax _ rule _ version', 2) validarea regulilor rounding_scope, 3) hotfix și retipărirea coșurilor.
„Promo oferă un preț negativ”:1. norme de securitate (min_price), 2) dezactivați stivuirea, 3) recalcularea și auditul.
16) Siguranță și conformitate
Policy-as-code: controlul modificărilor listelor de prețuri/FX/taxe prin semnături de lansare PR +.
Roluri/accesări: principiul 4-eye privind prețurile publicațiilor/FX.
Jurnale/chitanțe: evenimente de publicare semnate și checkout.
Restricții regionale: interzicerea valutelor/jetoanelor individuale; geo-politicieni.
17) Experimente și optimizare
A/B: prețuri de farmec, prețuri pre-calculate vs on-the-fly, format de afișare.
Marcaj dinamic: dependență de volatilitatea perechii/ora zilei.
Analiza cohortei: retururi/chargeback după valută, sensibilitate la rotunjire.
Strategii de numerar: impactul SWR/TTL asupra conversiei și preciziei.
18) Lista de verificare a implementării
- Definiți moneda de bază și politica pe valută a foilor.
- Configurați colecția/publicarea FX cu versioning, marcaje și blocare TTL.
- Formalizați TaxRule și ordinea de calcul/rotunjire (per element sau per coș).
- Implementați directorul API/citat/angajament + chitanțe semnate.
- Activați memoria cache și dizabilitatea granulară; SWR pentru vitrine.
- Creați tablouri de bord (vitrina↔checkout, erori FX, taxe, marjă bps).
- Introduceți roluri/semnături pe publicații preț/preț, reviste WORM.
- Pregătiți playbook-uri: Preț ratat, FX spike, discrepanțe fiscale.
- Desfășurarea „GameDay Catalog”: dezactivați sursa FX, explozie promoțională, schimbare fiscală.
- Revizuirea regulată a minor_units/otobrazheniye pe regiuni.
19) ÎNTREBĂRI FRECVENTE
Trebuie să stochez prețurile în fiecare valută?
Nu neapărat. Combinați pre-calculul pentru valute de top și conversia pentru coadă - acesta este modul în care UX și costurile sunt echilibrate.
De ce totalul „nu bate” după rotunjire?
Datorită diferențelor per element vs per coș. Fixați o abordare și utilizați „distribuție penny”.
Cum să faci o rambursare într-o lună?
Conform istoricului „pricelist _ version”, „fx _ version” și „tax _ rule _ version” stocate în chitanță.
Ce zici de cripto?
Utilizați precizia zecimală, taxa de rețea separat, nu promit 1:1 la fiat; fixați cursul și fereastra de acțiune.
Rezumat: Un catalog multicurrency este o combinație de matematică de precizie, politici stricte și caching inteligent. Versiunea totul (prețuri/tarife/taxe), fixați fereastra de cotație, determinați ordinea calculelor și rotunjirea, semnați artefacte de verificare și păstrați tablourile de bord vizibile. Astfel, obțineți o prezentare onestă, așezări reproductibile și o economie gestionată în toate monedele și regiunile.