Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AnadoluPay Data

AnadoluPay paketlerinin paylaştığı, dile bağlı olmayan verinin tek kaynağı. Kod içermez.

Aynı ödeme kütüphanesi üç dilde yaşıyor — PHP, Node.js, Go. Bir sağlayıcının durum kodu eşlemesi değiştiğinde bunun üç yerde birlikte değişmesi gerekiyor. Üç kopyayı elle senkron tutmak sürdürülebilir değil: sapma sessizce olur ve ödeme yolunda sessiz sapmanın bedeli, yanlış eşlenmiş bir durumun "başarılı" sanılmasıdır.

Ne var

Dosya İçerik
data/currencies.json ISO 4217 alfabetik → sayısal para birimi kodları
data/order-status.json Sağlayıcı durum kodlarının ortak duruma eşlenmesi
schema/*.schema.json Editör ve dış araçlar için JSON Schema
tools/validate.py Değişmez denetimi; bağımlılık gerektirmez

Ne yok

Uç adresleri. Banka ve sağlayıcı adresleri kullanıcı yapılandırmasından gelir, paketlerde gömülü değildir; paylaşılan veri değil.

Test kartları. Ayrı repoda tutulur: Voxyfy/test-kartlari.

İmza kuralları ve alan adları. Bunlar veri gibi görünse de koddur: hangi alanın imzaya hangi sırayla girdiği, sağlayıcının protokolüne gömülü bir davranıştır ve dilden bağımsız bir tabloya indirgenmesi yanlış bir soyutlama olur.

Tüketiciler bunu nasıl kullanıyor

Her paket data/ dosyalarının bir kopyasını kendi deposunda taşıyor ve uygunluk testiyle kendi yerel tablosunu bu kopyaya karşı doğruluyor. Kod üretimi (codegen) kullanılmıyor.

Bunun nedeni, üretilen kodun taşıyamayacağı bir şeyin var olması: sözlüklerdeki açıklamalar. PARATIKA.MR'ın neden kasıtlı olarak pending olduğunu, MOKA kodunun tek başına neden yetmediğini anlatan yorumlar, o kodun okunduğu yerde durmalı. Üretilen bir dosya bunları ya kaybeder ya da JSON'a taşıyıp okunmaz hâle getirir.

Uygunluk testi bu bedeli ödemeden aynı garantiyi veriyor: yerel tablo JSON'dan saparsa test kırılır, sapma sessizce birleştirilemez.

Bir dil bir sözlüğü tamamen atlayabilir — Go ve Node sürümleri PARAM'ı taşımaz çünkü o sürücü onlarda yok. Atlama, testte gerekçesi yazılmış açık bir listeyle bildirilir; böylece eksiklik kaza ile karışmaz.

Sürüm ve güncelleme

Her iki dosya aynı version alanını taşır ve birlikte ilerler. Tüketiciler beklediği sürümü testinde sabit olarak tutar.

Bir değişikliği uçtan uca geçirmek:

  1. Bu repoda veriyi düzenle, version'ı yükselt, tools/validate.py çalıştır.
  2. Üç tüketici repoya data/ dosyalarını kopyala.
  3. Her repoda uygunluk testi kırılacak; yerel tabloyu ve beklenen sürüm sabitini güncelle.

Üçüncü adım atlanırsa o paketin testi kırık kalır — istenen davranış budur. Sürüm alanlarının repolar arasında karşılaştırılması, hangi paketin geride kaldığını görmenin yoludur.

Doğrulama

python3 tools/validate.py

Şemanın ifade edemediği kuralları da denetler: aynı sayısal para birimi kodunun iki alfabetik koda düşmemesi, hiçbir kodun unknown'a eşlenmemesi (o bir eşleme hedefi değil, eşlenemeyen kodun yedeğidir) ve iki dosyanın sürümlerinin aynı olması.

Lisans

MIT. Bkz. LICENSE.md.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages