5.4.0
Pierwsze publiczne wydaniePubliczna strona zostaje uruchomiona: silnik opłat z pełnym zestawieniem, katalog kanałów wypłat z rzeczywistymi limitami, architektura URL oparta na korytarzach oraz strony przejrzystości, które pozwalają to wszystko zweryfikować. Ten dziennik zaczyna się tutaj, w rzeczywistej dacie publikacji.
Dodano(21)
src/lib/pricing.ts
Silnik opłat z pełnym zestawieniem. Koszt sieci jest pobierany w naturze na aktywie przed konwersją, a następnie nasza marża i opłata za kanał otrzymują osobne linie. Niezmiennik księgowy sprawdza przy każdej wycenie, że kwota brutto minus suma linii równa się dokładnie kwocie netto, co do najmniejszej jednostki: jeśli się nie zgadza, podnosimy błąd i odmawiamy wyceny, zamiast przepuścić ukrytą marżę.
src/lib/pricing.ts
Polityka spreadu opublikowana i egzekwowana przez kod: 90 punktów bazowych bazowo, 35 więcej na niestabilnym aktywie, 25 więcej na korytarzu beta, minus 15, 30 lub 45 punktów bazowych w trzech progach wolumenu. Żadna inna opłata nie istnieje po naszej stronie.
src/lib/pricing.ts
Odwrotne dane wejściowe: możesz wpisać, co chcesz OTRZYMAĆ, a wymagana wpłata jest rozwiązywana przez wyszukiwanie binarne. Stałe opłaty czynią funkcję nieliniową — algebraiczna inwersja byłaby błędna o kilka centów za każdym razem.
src/lib/money.ts
Każda kwota pieniędzy jest przesyłana jako liczba całkowita jednostek minimalnych (bigint), a każdy kurs jako Decimal. Żadna kwota nie przechodzi przez float JavaScript, gdzie 0,1 + 0,2 to nie 0,3.
src/lib/rates.ts
Świeżość kursu jest sprawdzana przed każdą wiążącą wyceną. Po przekroczeniu maksymalnego dozwolonego wieku źródła silnik podnosi błąd nieaktualnego kursu i odmawia wyceny. Serwowanie nieaktualnej ceny z pamięci podręcznej jest tutaj traktowane jako błąd finansowy, a nie wydajnościowy.
src/app/api/quote/route.ts
Publiczny punkt końcowy wyceny. Dane wejściowe walidowane schematem, odpowiedź bez pamięci podręcznej, pełne zestawienie linia po linii z kursem średnim rynkowym, efektywnym kursem i całkowitą różnicą w punktach bazowych. Naruszenia limitów kanału są zwracane w treści odpowiedzi, a nie jako błąd HTTP, z dokładnym limitem.
src/data/payout-rails.ts
Katalog metod wypłat zawierający dla każdej z nich walutę rozliczeniową, obsługiwane kraje, opóźnienia p50 i p95, zasady dni roboczych i godzin granicznych, minimalne i maksymalne kwoty w jednostkach minimalnych, rzeczywiste opłaty oraz schemat pól beneficjenta.
src/data/corridors.ts
Architektura URL oparta na korytarzach. Kanał wielokrajowy daje jedną stronę na aktywo: SEPA jest identyczna we Francji i Belgii, dwie strony mówiłyby to samo. Lokalny kanał — PIX, SPEI, M-Pesa, NIP, Interac — daje jedną stronę na kraj, ponieważ kraj niesie format identyfikatora, limity i traktowanie podatkowe. Surowa macierz ~2200 kombinacji zmniejsza się o rząd wielkości, a każda pozostała strona niesie fakty, które tylko ona może nieść.
src/data/corridors.ts
Fale uruchomieniowe i brama indeksowania. Korytarz jest oferowany do indeksowania tylko wtedy, gdy treść jego fali jest faktycznie napisana; pozostałe pozostają osiągalne i funkcjonalne, ale poza indeksem. Nie prosimy wyszukiwarki o indeksowanie strony, której jeszcze nie napisaliśmy.
src/data/assets.ts
Katalog aktywów z liczbą miejsc po przecinku jednostki bazowej, akceptowanymi sieciami, minimalną wpłatą, poniżej której opłaty sieciowe zjadają operację, oraz czasem blokady kursu — dłuższym dla stablecoina niż dla niestabilnego aktywa.
src/data/networks.ts
Katalog sieci z wymaganą liczbą potwierdzeń, średnim czasem bloku, wzorem walidacji adresu oraz, dla XRP, Stellar i TON, polem memo, którego pominięcie powoduje utratę środków.
src/data/geo.ts
Geograficzne dane referencyjne: kraje otwarte, kraje w przygotowaniu oraz kraje odmówione z powodem — międzynarodowe sankcje, środki ograniczające lub niedopuszczalne ryzyko prania pieniędzy. Powód jest publikowany kraj po kraju.
src/config/company.ts
Pojedynczy rejestr faktycznych twierdzeń o firmie. Nazwa prawna, rejestracja, rok założenia, status regulacyjny, wolumeny, recenzje: każda wartość jest albo wypełniona, albo oznaczona jako oczekująca — a wartość oczekująca nigdy nie jest wyświetlana. Strona może twierdzić tylko to, co jest obliczone na podstawie jej własnych danych.
src/components/JsonLd.tsx
Dane strukturalne, które pomijają każde niewypełnione pole. Żadna data założenia, żaden numer licencji i żadna zagregowana ocena nie są deklarowane wyszukiwarkom, dopóki nie są prawdziwe.
src/i18n/routing.ts
Prefiks lokalizacji w każdym języku, w tym francuskim. Serwowanie tej samej strony pod „/” i „/fr/” zawsze kończy się duplikatami; symetria usuwa każdy przypadek szczególny w tagach hreflang i canonical.
src/app/[locale]/statut
Strona statusu usługi: jeden komponent na kanał wypłat i na monitorowaną sieć, dokładny opis tego, co sprawdzi sonda, polityka ważności oraz szablon raportu o incydencie. Żaden procent dostępności nie pojawia się tam, dopóki nie zostanie zmierzony.
src/app/[locale]/docs
Publiczna dokumentacja API: uwierzytelnianie, paginacja, idempotencja, katalog błędów i podpisane webhooki. Przykładowe odpowiedzi są prawdziwymi odpowiedziami z punktu końcowego wyceny, a nie makietami.
src/app/[locale]/reclamations
Pisemna procedura reklamacji: co odróżnia reklamację od prośby o wsparcie, trzy poziomy eskalacji, terminy, których przestrzegamy, oraz co się dzieje, jeśli odpowiedź Cię nie zadowala.
src/app/[locale]/presse
Zestaw prasowy: do pobrania logo wygenerowane z kodu, paleta z dokładnymi wartościami, krótkie i długie opisy gotowe do cytowania. Żadne wzmianki prasowe nie są wymienione, z braku wzmianek do zacytowania.
src/app/[locale]/affiliation
Program partnerski opłacany od faktycznie pobranej marży, nigdy od wolumenu brutto: partner nie zyskuje niczego, promując korytarz, który kosztuje klienta więcej.
src/app/[locale]/plan-du-site
Mapa witryny generowana z danych, z natychmiastowym filtrem wyszukiwania. Każda opublikowana strona się tam pojawia: jeśli strona istnieje i brakuje jej na tej mapie, to jest to wada.
Bezpieczeństwo(3)
src/lib/rates.ts
Zabezpieczenie produkcyjne: deterministyczne źródło kursów używane w rozwoju nie może zostać uruchomione w produkcji. Proces odmawia startu, zamiast wyceniać zamrożone ceny.
src/middleware.ts
Odmowa geograficzna przed jakimkolwiek renderowaniem, z jawnym HTTP 451 zamiast 404: kiedy odmawiamy, mówimy dlaczego. Odmowa jest ponownie sprawdzana po stronie serwera przy tworzeniu zamówienia, ponieważ sam adres IP niczego nie dowodzi.
next.config.ts
Nagłówki bezpieczeństwa w każdej odpowiedzi: HSTS z preload, blokada osadzania w ramce, blokada sniffowania MIME, ograniczona polityka referrer, izolacja cross-origin oraz wyłączone uprawnienia mikrofonu, geolokalizacji i płatności.
Polityka(5)
src/data/payout-rails.ts
Kanały zbiórek — iDEAL, Bizum, BLIK, TWINT, Satispay, MB WAY, QRIS — są zadeklarowane jako niedostępne z podaniem powodu, zamiast być ukryte. Pozwalają płacić sprzedawcy, a nie otrzymywać środki; każdy z nich wskazuje kanał, którego używamy zamiast niego.
src/data/payout-rails.ts
Zelle jest oznaczone jako trwale niedostępne: jego zasady umowne zabraniają komercyjnych wypłat osobom trzecim. Żaden dostawca nie może dla nas zgodnie z przepisami przesyłać przez nie środków, a powiedzenie tego jest lepsze niż dawanie ludziom nadziei.
src/data/payout-rails.ts
Kanały, które są zbudowane, ale zamknięte, niosą dokładny powód regulacyjny: potrącenie TDS i rejestracja FIU-IND dla UPI, licencja MAS dla PayNow, raportowanie SARB dla RPA, rejestracja AUSTRAC dla PayID, licencjonowany partner dla PromptPay. Wolelibyśmy nazwać przeszkodę, niż ogłaszać datę.
src/data/assets.ts
Monero jest w katalogu, oznaczone jako aktywo o zwiększonej anonimowości i nieoferowane. Europejskie przepisy dotyczące przeciwdziałania praniu pieniędzy wymagają od dostawców wycofania go z oferty od 10 lipca 2027 r.; pokazujemy je i wyjaśniamy, zamiast pozwolić mu po cichu zniknąć.
docs/CONVENTIONS.md
Egzekwowalna zasada redakcyjna: żaden rok założenia, numer licencji, wolumen przetworzonych transakcji, liczba klientów, opinia ani logo partnera nie są na stałe wpisane w stronę. Dojrzałość musi wynikać z głębi treści, nigdy z wymyślonych dowodów.