Мультивалюталық каталогтар
(Бөлім: Операциялар және Басқару)
1) Міндеті және қолдану саласы
Мультивалюталық каталог - бұл әртүрлі валюталар, өңірлер мен арналар үшін бағалар/комиссиялар/салықтар туралы бірыңғай шындық көзі. Ол:- бағалардың дұрыс витринасы (UX, сенім),
- (аудит, қайтару),
- экономикалық болжамдылық (маржа/салықтар),
- комплаенс (салық салу, санкциялар, валюталарды шектеу).
2) Деректер моделі (референс)
Мәні:- Product/SKU: `{sku_id, title, attributes, region_policies[]}`
- PriceList: `{pricelist_id, base_currency, effective_from, effective_to, version}`
- PriceItem: `{sku_id, base_price, base_currency, tax_class, pricing_model, promo_refs[]}`
- FXRate: `{pair: EUR→USD, rate, source, method, precision, effective_from, version}`
- `minor_units` (ISO 4217; JPY = 0, USD/EUR = 2, KWD = 3; crypto үшін - 8 дейін)
- 'rounding _ mode': 'HALF _ UP' (бөлшек сауда), 'BANKERS' (қаржы), 'FLOOR '/' CEIL' (салықтар/реттеушілер)
3) FX көздері және саясаты (валюта бағамдары)
Дереккөздер: курстар провайдерлері (коммерциялық/орталық банктер), меншікті TWAP/медиана.
Жаңарту саясаты: жиілік (құбылмалылар үшін 1-15 мин, тұрақтылар үшін 1 рет/күн), жарияланымның кешігуі.
Маркаптар: 'rate (1 + fx_markup_bps)' клиент жағына; per-арна/аймақтың мөлдір ережелері.
Кепілдік берілген баға белгілеу терезесі (rate lock): 5-30 мин с 'fx _ version' тапсырыста.
Анти-секіріс: соңғы валидті баға белгіленімінде тік, circuit-breakers, fallback өзгерістері.
Нұсқалау: курстардың әрбір жарияланымында 'version', 'effective _ from' бар; қайтару/дау үшін тарихты сақтаңыз.
4) Баға белгілеу стратегиялары
Base + FX: базалық бағаны «ядрода» сақтау (мысалы, EUR), витринада түрлендіру.
Per-currency парақтары: негізгі валюталар үшін алдын ала есептелген бағалар (үздік UX, болжамдылық).
Mixed: топ-10 валюта - алдын ала есептеу, «ұзын құйрық» - on-the-fly.
Charm-pricing: `X. Аймақ бойынша 99/95/90, дөңгелектеу қателерінің жиналуын бақылаңыз.
Комиссиялар/алымдар: payment fee, cross-border fee, network fee (crypto) - каталогта немесе «Checkout Pricing» кезеңінде.
5) Салықтар және «қосылу»
VAT/GST қосылған/алынып тасталған: EU - жиі VAT-inclusive; В2В ҚҚС-сыз болуы мүмкін.
Салық қабаттары: федералдық/штат/жергілікті; онлайн ойындар үшін - ерекше алымдар.
Шекті ставкалар: салық айналымнан/санаттан/өңірден (threshold) өзгереді.
Салықтарды дөңгелектеу: per-item vs per-basket; дөңгелектеу режимдері мен есептеу тәртібі детерминирленген болуы тиіс.
Юр. есеп: 'tax _ rule _ version' -ды чекте/түбіртекте сақтаңыз.
6) Дөңгелектеу және дәлдік
Көрсетудің соңғы қадамында дөңгелектеңіз; есептеулерде «жоғары дәлдікті» сақтаңыз (8-9 белгіге дейін).
crypto үшін decimal-кітапханасын пайдаланыңыз (екілік қалқымалы емес).
Себетке қарсы дрифт: сомалар үшін «bankers rounding», бірақ көрсету үшін UX-дөңгелектеу; 'rounding _ scope' дегенді белгілеңіз.
Сома ережесі: жолдан кейін дөңгелектеу сомасы total - соңғы тиындарды/центтерді бөлуді пайдаланыңыз (penny distribution).
7) Каталогтар, промо және бандла
Promo-правила: `if region=A and currency in [EUR,USD] then discount=10% cap=50`.
Қолдану тәртібі: (1) базалық баға → (2) жеңілдіктер → (3) салықтар → (4) алымдар → (5) дөңгелектеу.
Bundle-бөлу: жеңілдікке дейінгі позициялардың қойындысына пропорционалды; қайтару үшін қайтарушы.
Threshold-промо: себет валютасында total ≥ X кезінде тегін жеткізу/бонус; эквивалентті базалық валютада сақтаңыз, бірақ FX нұсқасын белгілеңіз.
8) Төлемдермен және комплаенспен интеграциялау
Валюталық қолжетімділік: әрбір валюта әрбір ойыншыға/өңірге/төлем провайдеріне қолжетімді емес.
Guaranteed FX: бекітілген 'fx _ version' бойынша префикс-авторизациялау; экспирация кезінде - жаңа бағаны растауға сұрау салу.
АҚК/санкциялар: валюта/банктер/токендердің блок-парақтары, айырбастауға шектеулер.
Қайтарымдар/chargeback: тапсырыстың тарихи 'fx _ version' бойынша қайта есептеу; қайтару комиссиясы - транзакция күніне каталог бойынша.
9) Архитектура және API келісімшарты
Каталогты оқу:- `GET /catalog/prices? sku=…¤cy=…®ion=…&pricelist=…`
- Ответ: `{unit_price, currency, fx_version, pricelist_version, tax_breakdown[], fees[], display_price, rounding_mode}`
- `POST /pricing/quote { items[], region, currency, buyer_type }`
- Ответ: `{items_priced[], subtotal, discounts, taxes[], fees[], total, fx_version, lock_ttl, signature}`
- 'POST/pricing/commit {quote_id, signature}' → хеш пен қолтаңбасы бар түбіртек.
- `PriceListUpdated`, `FXRatePublished`, `TaxRuleChanged`, `PromoChanged` — с `version/effective_from`.
10) Кэштеу және өнімділігі
Edge-кэш: 'pricelist: region: currency: sku: version'; TTL тұрақты валюталар үшін жоғары.
Warmup: науқанды іске қосу бойынша топ-санаттарды жылыту.
SWR (stale-while-revalidate): витриналар үшін; checkout - тек fresh.
Partial invalidation: 'sku', 'category', 'pricelist _ version' тегтері бойынша мүгедектік.
SLO: p95 ≤ 120 мс витрина үшін, p95 ≤ 250 мс quote үшін ≥ 99. 95% қол жетімділік.
11) Бақылау және аудит
Барлық оқиғаларда 'trace _ id', 'pricelist _ version', 'fx _ version', 'tax _ rule _ version' іздеу.
Иммутабельділік: прайс-парақтарды/курстарды жариялаудың WORM-журналдары; Merkle-тілшелер, релиздер қолтаңбалары (DSSE).
Receipts: толық таратылған және пайдалы жүктеме хеш бар чек/түбіртек; 7-10 жыл сақтау (реттегіш бойынша).
Дашбордтар: витринаның айырмашылығы, дөңгелектеу жиілігі «жоғары/төмен», FX қателері, бағамды бұғаттау уақыты (lock TTL), ROI промо.
12) Бейнені оқшаулау
Валюта форматы: символ/код (, €, $, AED), символ позициясы, бөлгіштер, бос орын.
Жергiлiктi ережелер: " 1 234,56" vs "$1,234. 56”.
Психология: сиқырлы бағалар ('.99') финтех/ойындарда әрдайым орынды емес; per-аймақты тестілеңіз.
Заңды қолдары: «Бағаға ҚҚС кіреді», «Желі комиссиясы жеке алынады».
13) Ерекше жағдайлар
Бөлшек бөліксіз валюталар: JPY/ISK - minor_units=0.
Үш таңбалы minor units: KWD/BHD = 3.
Крипто: BTC/ETH/USDT - 8 белгіге дейін, network fee жеке; stablecoins ≠ кросс-бордер кезінде «курс 1:1».
Қосарланған баға: «каталог валютасы» ≠ «есептен шығару валютасы» (мерчанттың банктік бағамы). spread құжаттаңыз.
Спорт/ойындар: каталог валютасындағы ең жоғары ұтысқа лимиттер - 'fx _ version' раунды бойынша баламаларды сақтау.
14) SLO/SLI және жетістік метрикасы
Дұрыстығы: тапсырыс үлесі, мұндағы total_checkout = total_quote (бөлу ережелері кезінде 1 minor unit ±) ≥ 99. 99%.
FX тұрақтылығы: rate lock терезесіндегі операциялардың үлесі ≥ 99%.
Экономика: маржа/бірлік vs жоспар; FX/дөңгелектеуге байланысты ауытқулар (bps).
UX: жылдамдық quote p95, бағаны қайта есептеудегі үйінділердің үлесі, NPS сөрелер.
Аудит: 100% сақталған '_ version' және қолтаңбасы бар чектер.
15) Инциденттердің плейбуктері
«Сөредегі ≠ себеттегі бағасы»:1. 2) прайс-парақты мәжбүрлеп refresh; 3) салыстыру 'pricelist _ version '/' fx _ version'; 4) саясат бойынша өтемақы.
«FX секірісі маржаны бұзады»:1. 2) TTL lock қысқарту, 3) fallback-көзіне ауысу.
«Салық үйлеспейді»:1. 'tax _ rule _ version'; 2) rounding_scope валидациясын; 3) hotfix ережелерін және себеттердің репрайсын тексеру.
«Промо теріс баға береді»:1. қорғау ережелері (min_price), 2) ағынды өшіру; 3) recalculation және аудит.
16) Қауіпсіздік және комплаенс
Policy-as-code: PR + релиздер қолтаңбасы арқылы прайс-парақтардың/FX/салықтардың өзгерістерін бақылау.
Рөлдер/қол жетімділіктер: Бағаларды жариялауға арналған 4 көзді қағидат/FX.
Логи/түбіртектер: қол қойылған жарияланым оқиғалары және checkout.
Өңірлік шектеулер: жекелеген валюталарға/токендерге тыйым салу; гео-саясат.
17) Эксперименттер және оңтайландыру
A/B: charm-pricing, алдын ала есептелген бағалар vs on-the-fly, көрсету форматы.
Динамикалық markup: жұп/тәулік уақытының құбылмалылығына тәуелділік.
Когорталық талдау: валюталар бойынша қайтарымдар/chargeback, дөңгелектеуге сезімталдық.
Кэш стратегиясы: SWR/TTL-дің конверсия мен дәлдікке әсері.
18) Енгізу чек-парағы
- Парақтардың негізгі валютасын және per-currency саясатын анықтау.
- FX жинағын/жарияланымын TTL нұсқаларымен, маркаптарымен және құлыптарымен теңшеу.
- TaxRule және есептеу/дөңгелектеу тәртібін ресімдеу (per-item немесе per-basket).
- API каталогын/quote/commit + қол қойылған түбіртектерді іске асыру.
- edge-кэш пен гранулярлық мүгедектікті қосу; Витриналар үшін SWR.
- Дашборд ашу (витрина, FX қателері, салықтар, маржа bps).
- Бағаларды/курстарды жариялауға рөлдерді/қолтаңбаларды, WORM журналдарын енгізу.
- Плейбуктерді дайындау: бағаның төмендеуі, FX секірісі, салықтық келіспеушіліктер.
- «GameDay каталогын» өткізу: FX көзін өшіру, промо-бурст, салықты ауыстыру.
- Өңірлер бойынша minor_units/отображение үнемі тексеріп отыру.
19) FAQ
Бағаны әр валютада сақтау керек пе?
Міндетті емес. Топ-валюталар үшін алдын ала есеп айырысуды және «артқы» үшін конверсияны біріктіріңіз - UX және шығындар осылай теңгеріледі.
Неге total дөңгелектеуден кейін «соғылмайды»?
per-item vs per-basket айырмашылықтарынан. Бір тәсілді бекітіңіз және «penny distribution» пайдаланыңыз.
Бір айдан кейін қалай қайтаруға болады?
Түбіртекте сақталған тарихи 'pricelist _ version', 'fx _ version' және 'tax _ rule _ version' бойынша.
Crypto туралы не?
decimal-дәлдігін, network fee жеке пайдаланыңыз, фиатқа 1:1 уәде бермеңіз; курсты және әрекет терезесін белгілеңіз.
Резюме: Мультивалюталық каталог - нақты математиканың, қатаң саясаттың және ақылға қонымды кэштеудің үйлесімі. Барлығын (бағалар/бағамдар/салықтар) нұсқалаңыз, баға белгілеу терезесін белгілеңіз, есептеу және дөңгелектеу тәртібін анықтаңыз, артефактілерге қол қойыңыз және дашбордтарды көрінетін етіп ұстаңыз. Осылайша сіз барлық валюталар мен өңірлерде әділ витрина, қайта жасалатын есептеулер мен басқарылатын экономиканы аласыздар.