Risk motoru, confirm aşamasında rota kararından önce çalışır ve dört sonuçtan birini verir: Karar sırası bilinçlidir: Kara liste her kuralı ezer — açık bir insan kararıdır. Ve allow dahil her karar kaydedilir: “o gün hangi kural bakmıştı” sorusu, engellenmeyen ama sonradan ters ibraza dönüşen işlemde de sorulur.

Kural dili

Risk kuralları rota motoruyla aynı dili kullanır — işyeri iki sözlük öğrenmez. Rota olgularına ek risk sinyalleri: Hız sayaçları denemeler üzerinde sayılır, ödemeler değil: aynı kartla arka arkaya yenen 20 red, intent bazında tek işlem gibi görünürdü — oysa kart deneme saldırısının imzası tam olarak budur. Kimlik; müşteri referansı, IP ya da maskeli karttan herhangi biriyle kurulur. Hiçbiri yoksa sayaçlar sıfır döner — ve sıfır, “temiz” demek değildir; kuralınızı buna göre yazın. Örnek kural seti:
Kural setleri sürümlenir (POST /v1/risk/rules yenisini yayınlar, eskisi pasifleşir ama durur — “dün neden geçti” sorusu için). POST /v1/risk/test aday kuralı canlıya almadan dener: salt okur, kayıt açmaz. Bozuk bir aktif doküman tahsilatı durdurmaz — motor allow der ve loglar.

Kara liste

Tür bazında girilir: maskeli kart, e-posta, IP, müşteri referansı, BIN, ülke.
  • Süreli kayıt mümkündür: kart deneme saldırısında IP’yi kalıcı engellemek, aynı operatörün arkasındaki masum müşterileri de süresiz kaybetmektir.
  • Kayıt silinmez, kaldırıldığında damgalanır; kaldırma paneli onay kutusu ister.
  • Türkçe katlama bilinçlidir: İ katlanır (yoksa engel sessizce çalışmazdı), noktasız ı katlanmaz — ısparta@… ile isparta@… farklı adreslerdir.

İnceleme kuyruğu

review kararları ayrı bir kuyruk tablosunda değil, karar kayıtlarının süzülmüş görünümündedir: GET /v1/risk/assessments?outcome=review. Panelin Risk sayfası son kararları sonuç süzgeciyle gösterir; kural yayınlama onay kutusu ister, “kuralı dene” düğmesi ise onaysız çalışır çünkü hiçbir şeyi değiştirmez.