Kural motoru

Kuralı yazan kişi, deseni gören kişi olsun.

Krino'da bir kural koşul ağacıdır: alanları seçersiniz, karşılaştırmayı kurarsınız, puanını verirsiniz. Kod yok, dağıtım yok — kural verinin üstünde yaşar.

Yapı

Senaryo, sürüm, kural.

Üç kavram var ve üçü de sizin kontrolünüzde. Karmaşıklık ürünün değil, işin karmaşıklığı kadar.

Senaryo

Bir olay tipine bağlanır — kredi başvurusu, sanal POS işlemi, para çekme. Hangi tabloyu okuyacağını ve kararın kime ait olduğunu belirler.

Sürüm

Kuralların o anki hâli. Taslak üzerinde çalışırsınız, canlı sürüm etkilenmez. Yayınladığınızda yenisi devreye girer, eskisi kayıtta kalır.

Kural

Bir koşul ağacı ve bir puan. Tetiklenirse puanı toplama eklenir; tetiklenmezse hiçbir şey olmaz. Toplam puan eşiklerle sonuca çevrilir.

Koşullar

Bir kural neye bakabilir?

Alan karşılaştırmaları

Kendi veri modelinizin alanları üzerinde eşitlik, aralık, içerir, boş mu, listede mi — ve bunların iç içe VE/VEYA birleşimleri. Alanlar sizin adlandırdığınız alanlar; başka bir şemaya çevirmek zorunda değilsiniz.

Hız kuralları

"Aynı cihaz son 24 saatte kaç farklı kart denedi", "aynı IP son 10 dakikada kaç başvuru yaptı" gibi zaman penceresine dayalı sayımlar. Ölçüt, pencere ve eşik ekrandan ayarlanır.

Listeler ve ağırlıkları

Beyaz ve kara listeler, ülke ve BIN listeleri, kendi tuttuğunuz özel listeler. Listeye eklemek için kural değiştirmek gerekmez — liste ayrı yaşar.

Risk her zaman evet ya da hayır değildir: kumar, elektronikten; elektronik, marketten risklidir. Liste kaydına bir ağırlık verir, kural da değerin kendisi yerine bu ağırlığı karşılaştırır. Her bant için ayrı liste tutmak ve zamanla birbirinden ayrışmalarını izlemek gerekmez.

Kendi kararlarınızın geçmişi

Diğer bütün koşullar müşterinin size gönderdiğine bakar. Bu, sizin ne yaptığınıza bakar: "bu kartı bu ay kaç kez incelemeye gönderdik".

Hiçbir işlem verisinde bulunmayan bir sinyaldir ve geri besleme döngüsünü kapatır. Yirmi kez karar verdiğiniz müşteri genelde sık müşteridir; dört kez incelemeye gönderdiğiniz müşteri değildir — ikisi ayrı ayrı sorulabilir.

Türetilmiş sinyaller

E-posta sağlayıcısının geçici olup olmadığı, IP'nin datacenter çıkışı olup olmadığı, telefonun hat tipi, isim listeye benziyor mu — hepsi kuralda normal bir alan gibi kullanılır.

Tipli listeler

Bir liste artık ne tuttuğunu söyleyebilir.

Özel bir listeye içinde ne olduğunu bildirirsiniz: IBAN, kripto cüzdan adresi, kart BIN'i, e-posta, telefon. Bunu bildirdiği andan itibaren boşluk, ayraç ve harf büyüklüğü farkları eşleşmeyi bozmaz.

Boşluk, ayraç, harf büyüklüğü

TR33 0006 1005 1978 6457 8413 26 tutan bir liste, aynı IBAN'ı boşluksuz taşıyan kaydı yakalar. Ethereum adresi tutan bir liste, adres hangi harf büyüklüğüyle gelirse gelsin eşleşir.

Base58'de harf büyüklüğü bilgidir

Bitcoin ve TRON adresleri tasarımın koruduğu istisnadır: harf büyüklükleri anlam taşır, o yüzden düzlenmez. Yalnızca harf büyüklüğüyle ayrılan iki adres iki ayrı adrestir ve tipli eşleştirme ikisini ayrı tutar.

Bozuk satır sessizce girmez

İçe aktarmada, bildirdiğiniz tipe göre hiçbir zaman eşleşemeyecek bir değer gerekçesiyle birlikte reddedilir; sağlam satırlar yine de girer.

Önceden hatalı bir IBAN sessizce kaydediliyor ve hiçbir zaman tetiklenmiyordu. Bir kara liste için bundan kötü sonuç yok: dolu görünür.

Alan ile liste birbirine bakar

Kuralda sınanan alan ile ona karşı sunulan liste eşleştirilir. Bir cüzdan alanına artık kart BIN listesi önerilmez.

Tip bildirmediğiniz liste her zamanki gibi davranır. Bunun söylenmesi gerekir: bugün kullandığınız listelerin hiçbirinde hiçbir şey değişmez.

Puandan karara

Dört sonuç, sizin belirlediğiniz eşiklerle.

Toplam puan bir sonuca çevrilir. Eşikleri siz koyarsınız; hangi sonucun ne anlama geldiğini de siz tanımlarsınız.

Onay

İşlem geçer. Kayda alınır, ama kimseyi meşgul etmez.

İnceleme

İşlem geçer, ama bir vaka açılır — ekip sonradan bakar.

Engelle ve incele

İşlem durur ve vaka açılır. Karar insana bırakılır.

Red

İşlem reddedilir. Gerekçe kayıtta, itiraza cevap hazır.

Yayın öncesi

Bir kural yayına girmeden önce iki kez sınanır.

Yeni bir kuralın en pahalı hâli, canlıda beklenmedik davranmasıdır. Krino bunu iki ayrı yolla önden gösterir.

Örnek veriyle test

Örnek bir Excel indirir, kendi kayıtlarınızla doldurur, geri yüklersiniz. Her satır için hangi kuralın tetiklendiğini, kaç puan geldiğini ve sonucun ne olduğunu satır satır görürsünüz. Yayınlanmış hiçbir şeye dokunulmaz.

Kendi geçmişinize karşı deneme

Kuralı, geçen ayın gerçek işlemlerine karşı koşturursunuz — doğru cevabı zaten bilinen, teyit edilmiş vakalara karşı. Her kayıt geldiği ana göre değerlendirilir: hız kuralları o kaydın öncesindeki geçmişi sayar, bugünkü geçmişi değil.

Bu, "yeni kuralı geçen ayın dolandırıcılığında dene" isteğinin ay beklemeden cevabıdır. Hiçbir şey yazılmaz: karar, vaka, bildirim üretilmez.

Gerçek trafikle gölge koşum

Taslak sürüm, canlı trafiğin üstünde paralel olarak koşar ama hiçbir karara karışmaz. Süre dolduğunda elinizde şu vardır: kaç işlemde canlıyla aynı fikirdeydi, hangi durumlarda ayrıştı ve bu ayrışmalar hangi yönde. Sonra yayınlarsınız.

İki kişi bakmadan canlıya çıkmasın

İsteğe bağlı olarak yayınlama iki adıma bölünür: biri talep eder, başka biri inceleyip yayınlar. Talep eden kendi talebini onaylayamaz.

Talepten sonra taslakta yapılan her düzenleme talebi geçersiz kılar. Bu olmasaydı kontrol tek hamlede kırılırdı: biri talep eder, ikinci kişi kuralları değiştirir ve kendi değişikliğini onaylar — iki farklı isim, ama canlıya çıkanı bir kişi okumuş olur.

İki sürüm arasında ne değişti

Eklenen, silinen ve değişen kurallar; her alanın öncesi ve sonrası; eşikler ve tetikleme koşulu. Denetçinin "geçen ay ne değiştirdiniz" sorusunun doğrudan cevabı.

Kural koşulları JSON olarak değil cümle olarak gösterilir — yan yana iki JSON bloğu, kimsenin gerçekten okumadığı bir karşılaştırmadır.

Yayınlamak ayrı bir adım

Düzenleme taslak üzerinde yapılır; karar veren sürüme dokunulmaz. Analist kural setini kurarken yarım bir set canlı ödemelere bakmaz. Taslak, siz yayınlayana kadar hiçbir işlemi etkilemez.

Doğrulanmadan çıkmaz

Yayın anında eşik sıralaması, formülü olmayan aktif kurallar ve motorun tanımadığı operatörler kontrol edilir. Sorunların hepsi birden raporlanır — teker teker değil, çünkü yayınlamak canlı trafiğe karşı deneme yanılma olmamalı.

Yayınlanan sürüm değişmez

Sürüm numarası yayında verilir ve o sürüm bir daha düzenlenemez. "Bu kararı hangi kurallar verdi" sorusunun cevabı, karar altı ay önce verilmiş olsa da aynıdır — ve geri alma, ne değiştiğini hatırlamaya çalışmak değil, önceki sürümü yayınlamaktır.

Senaryo listesi: canlı sürüm, taslak durumu ve yayın doğrulamasının reddettiği sorunlar
Yayın kontrolü · taslak ve canlı ayrı, doğrulama sorunların hepsini birden söyler
Sonuç

Karar geldiğinde gerekçesi de gelir.

Kararın yanıtı yalnızca sonucu değil, o sonuca nasıl gelindiğini de taşır. Log'a bakmaya gerek kalmaz.

Yanıt (kısaltılmış)
{
  "decision": {
    "outcome": "Review",
    "score": 65,
    "scenario_name": "Sanal POS · yüksek tutar"
  },
  "rule_executions": [
    { "rule_name": "Geçici e-posta sağlayıcı",
      "outcome": "hit", "score": 40 },
    { "rule_name": "24 saatte 5+ farklı kart",
      "outcome": "hit", "score": 25 },
    { "rule_name": "Yaptırım listesi",
      "outcome": "no_hit", "score": 0 }
  ],
  "execution_time_ms": 28
}

Kendi kurallarınızı kuralım.

Bugün elle yaptığınız kontrolleri anlatın; bir demo ortamında kurup gösterelim.