Tetikleme koşulu
Senaryonun hangi olaylarda hiç çalışacağını belirleyen ön filtre. Örneğin yalnızca satış ve iptal işlemlerini değerlendirmek isterseniz, geri kalanı kural yazmadan burada elenir veUnknown sonucuyla döner.
Kural = koşul ağacı + puan
Her kural bir koşul ağacıdır: alanlar, karşılaştırmalar ve bunların iç içe VE/VEYA birleşimleri. Ağaç doğru sonuç verirse kuralın puanı toplama eklenir.Operatörler
Metin alanları
Metin alanları
equal, notequal, contains, notcontains, startswith, endswith,
isempty, isnotempty, in (listede), notin, similarity (benzerlik oranı).Sayısal alanlar
Sayısal alanlar
equal, notequal, lessthan, lessthanorequal, greaterthan,
greaterthanorequal, between, notbetween.Tarih alanları
Tarih alanları
Karşılaştırmaların yanında hazır pencereler:
last24hours, lastnhours,
last7days, last90days, lastndays, thismonth, lastmonth ve ileri
yöndeki karşılıkları.Desen eşleme
Desen eşleme
matchesregex, notmatchesregex — düzenli ifadeyle eşleme. Kart numarası şekli,
tek kullanımlık e-posta alan ailesi, telefon ön eki gibi contains ile
yazılamayan koşullar için.Her eşleme bir zaman sınırı altında koşar; sınırı aşan bir desen eşleşmemiş
sayılır ve sayaca yazılır. Yayın anında desenin geçerliliği kontrol edilir.Alanı başka bir alanla karşılaştırma
Alanı başka bir alanla karşılaştırma
Değer yerine başka bir alan seçebilirsiniz: fatura ülkesi ile teslimat ülkesi,
kart sahibi adı ile hesap adı, sipariş toplamı ile satır toplamı.Editörde değerin yanındaki geçiş düğmesiyle açılır. Referans edilen alan payload’da
yoksa koşul eşleşmez — olumsuz operatörlerde de eşleşmez, yani veri eksikken kural
tetiklenmez.
Türetilmiş sinyaller
Türetilmiş sinyaller
ipgeolocation, ipdatacenter, emaildisposable, emailfreeprovider,
emailnomx, phoneinvalid, phonecountry, phonelinetype, uabot,
uadevicetype, sslcertcheck, whoislookup, sanctionsmatch,
cryptoaddresssanctioned.cryptoaddresssanctioned, bir String alanın değeri yaptırım listesindeki bir kripto adresi
olduğunda tetiklenir. Değer almaz. Yanındaki sanctionsmatch’in aksine benzerliğe değil,
adresin standart biçimine tam eşitlik arar: ismin yazımları vardır, adresin ise tek bir
biçimi ve tek bir sahibi vardır — yani yakın bir eşleşme daha zayıf bir eşleşme değil,
başka bir adrestir.sanctionsmatch gibi bu da tarayamadığında kapalı tarafa düşer: liste o host’a
yüklenemediği için taranamayan bir adres eşleşme sayılır. Liste hiç gelmediği için
“listede değil” demek zayıflamış bir kontrol değil, kimsenin yapmadığı bir temize
çıkarmadır. Durumu /healthz/verbose bildirir; her işlem birden eşleşmeye başladığında
ilk bakılacak yer orasıdır.Kendi liste kayıtlarınız
Kendi liste kayıtlarınız
in, notin bir değerin listede olup olmadığını sorar ve tam eşitlik arar. Kart
BIN’i, IBAN, cihaz kimliği için doğru olan budur.watchlistmatch ise isim için vardır: aynı normalizasyon ve aynı benzerlik ölçüsüyle
çalışır, yani “Muhammet Yilmaz” ile “Muhammed Yılmaz” tek kişidir. Yalnızca kişi ya
da kurum adı taşıyor olarak işaretlenmiş listelere karşı kullanılır.Liste ağırlıkları
Üyelik tek bir soruyu iyi cevaplar: bu değer listede mi. Risk ise nadiren evet ya da hayırdır — kumar, elektronikten; elektronik, marketten risklidir. Bunu üyelikle anlatmak, her bant için ayrı liste tutmak demektir; üçünden ikisi güncellenir ve listeler birbirinden ayrışır. Liste kaydına isteğe bağlı bir ağırlık verilebilir, ve koşul değerin kendisi yerine bu ağırlığı karşılaştırır. Editörde agregatla aynı yerden seçilir — çünkü aynı işi yapar: karşılaştırmanın sol tarafını değiştirir, operatör ve değer aynen çalışır.Ağırlığı olmayan kayıt ile ağırlığı sıfır olan kayıt aynı şey değildir. Listede ağırlığı
bulunmayan bir değer sıfır kabul edilerek karşılaştırılır — atlansaydı “ağırlık < 10”
kuralı tam da yakalamak için yazıldığı bilinmeyen kitleyi kaçırırdı — ve karar kaydına
hangisi olduğu yazılır.
değer,ağırlık satırlarını kabul eder. Virgülsüz satırlar eskisi gibi
düz üyelik kaydı olarak eklenir.
Hız kuralları ve agregatlar
Bir koşul tek işleme değil, geçmişe bakabilir: aynı cihaz son 24 saatte kaç hesaba dokundu, aynı IBAN kaç farklı göndericiden tahsilat aldı. Alanın yanındaki Aggregate seçicisiyle açılır; alt filtreler hangi kayıtların sayılacağını belirler.Kendi kararlarımızın geçmişi
Diğer bütün agregatlar müşterinin bize gönderdiğini okur. Son ikisi bizim ne yaptığımızı okur, ve “bu kartı bu ay dört kez incelemeye gönderdik” hiçbir işlem verisinde bulunmayan bir sinyaldir. İkisi ayrı agregattır çünkü ayrı ifadelerdir: yirmi kez karar verdiğimiz müşteri genelde sık müşteridir, dört kez incelemeye gönderdiğimiz müşteri değildir. Sayım, kaydın pivot değeri üzerinden yapılır — karar zaten ait olduğu varlığa yazılır ve vakalar onunla gruplanır. Pivotu olmayan bir tabloda sayım sıfırdır.Pencere 30 gündür ve kuralda değiştirilemez. Şu anda verilen karar sayıma dahil değildir:
henüz kaydedilmemiştir, ve sayılsaydı kural yazarın kastettiğinden bir işlem önce
tetiklenirdi.
Karar verilen işlem kendi agregatına dahil edilir — ama yalnızca bunun kesin
yapılabildiği yerlerde (
COUNT, SUM, MIN, MAX). Böylece cevap, çağıranın olayı
karardan önce gönderip göndermediğine göre değişmez.İmkânsız seyahat
TIME_SINCE_LAST ve DISTANCE_FROM_LAST aynı senaryoda yan yana durunca tek bir alanın
üretemeyeceği bir sinyal çıkar: kart sahibinin o sürede varamayacağı bir yerden gelen
ödeme.
DISTANCE_FROM_LAST, "41.0082,28.9784" biçiminde bir metin alanı okur. Ondalık ayırıcı
noktadır ve sunucunun yerel ayarından etkilenmez.
Puanlama
Puan pozitif ya da negatif olabilir. Negatif puan, yanlış alarmı düşürmenin en doğrudan yoludur: “on ikiden fazla başarılı işlemi olan müşteri” kuralına-20 vermek, o
müşterilerin tek bir zayıf sinyalle eşiği aşmasını engeller.
Eşikler
Üç eşik, dört sonuç. Eşikler artan sırada olmalıdır — inceleme ≤ engelle-ve-incele ≤ red.Sürüm yayınlama
Kural değişiklikleri taslak sürümde birikir; canlı sürüm etkilenmez. Publish dediğinizde taslak canlı olur ve eskisi kayıtta kalır. Taslak, siz yayınlayana kadar hiçbir kararı etkilemez — yarım kalmış bir kural seti canlı trafiğe bakmaz.Yayın doğrulaması
Publish, senaryoyu canlıya almadan önce şunları kontrol eder ve sorunların hepsini birden raporlar:
Hepsi birden raporlanır, çünkü teker teker yayınlamak canlı trafiğe karşı deneme
yanılma demektir.
Yayında ikinci onay
Ayarlar → Organizasyon → Yayın kuralları ile açılır. Açıkken Publish yayınlamaz, bir talep kaydeder: taslak taslak kalır, başka biri inceleyip yayınlar. Talep eden kendi talebini onaylayamaz. Düzenlemeyi reddetmek yerine talebi geçersiz kılmak bilinçli bir tercihtir: inceleyen kişinin işi düzeltilmesi gerekeni bulmaktır, ve bulduğu için cezalandıran bir kontrol herkese okumadan onaylamayı öğretir. Varsayılan kapalıdır. Kontrol olduğu kadar maliyettir de, ve iki kişilik bir ekip bunu ödeyemez.Sürümleri karşılaştırma
Kurallar ekranındaki Compare versions iki sürüm arasında ne düzenlendiğini gösterir: eklenen, silinen ve değişen kurallar; değişen her alanın öncesi ve sonrası; eşikler, schedule ve tetikleme koşulu. Bu, gölge koşumun cevapladığı sorunun diğer yarısıdır. Gölge koşum iki sürümün canlı trafikte nasıl davrandığını ölçer; bu ekran birinin ne değiştirdiğini söyler. Ölçülebilir bir etkisi olmayan değişiklik de hesabı sorulabilecek bir değişikliktir. Kural koşulları JSON olarak değil, cümle olarak gösterilir — yan yana iki JSON bloğu, kimsenin gerçekten yapmadığı bir karşılaştırmadır; onaylanır ve geçilir.Kurallar isimle eşleştirilir. Taslak açılırken her kural yeni bir satıra kopyalanır, yani
sürümler arasında kalıcı bir kural kimliği yoktur. Bunun bedeli, bir kuralı yeniden
adlandırmanın “silindi + eklendi” olarak görünmesidir; ekran bunu açıkça yazar. Formülleri
eşleştirip yeniden adlandırma tahmin etmek, olmayan bir düzenlemeyi anlatmak olurdu.
Yayınlanan sürüm değişmez
Sürüm numarası yayın anında verilir ve o sürüm bir daha düzenlenemez. Düzenleme her zaman taslağa gider; taslak yoksa canlı sürümün kopyası olarak açılır.Her karar hangi sürümle verildiğini taşır ve o sürüm oynamaz. “Bu kararı hangi kurallar
verdi” sorusunun cevabı, karar altı ay önce verilmiş olsa da aynıdır — geri alma da ne
değiştiğini hatırlamaya çalışmak değil, önceki sürümü yayınlamaktır.