Stripe is van plan om eind mei 2024 verbeteringen aan Radar-regels te verschepen om het gemakkelijker te maken om het gedrag te begrijpen en af te handelen wanneer kenmerkwaarden ontbreken.
Als je nu een regel schrijft als Block if :email_domain: != 'notfraud.com'
en :email_domain:
ontbrak, dan zou deze regel niet overeenkomen. Dit komt omdat Stripe != 'notfraud.com'
interpreteert als een kenmerk met een expliciete andere waarde dan 'notfraud.com'
, waaraan een ontbrekend kenmerk niet zou voldoen. Omgekeerd, als je een soortgelijke regel schreef als Block if NOT(:email_domain: = 'notfraud.com')
en :email_domain:
ontbrak, dan zou deze regel overeenkomen. Dit komt doordat de geneste instructie :email_domain: = 'notfraud.com'
zou evalueren als false, wat bij negatie door de NOT
-bewerking zou resulteren in true.
In de nieuwe interpreter zouden beide regels er echter toe leiden dat de regel niet overeenkomt. Dit komt doordat elke vergelijking (bijvoorbeeld =, !=, >, <, IN
) van een ontbrekend kenmerk met een andere statische waarde of kenmerk (ontbrekend of aanwezig) respecteert dat gegevens ontbreken. Op dezelfde manier resulteert elke logische bewerking (zoals AND, OR, NOT
) met ontbrekende waarden in een ontbrekend kenmerk, tenzij dit expliciet is gedefinieerd. Elke regel die resulteert in een ontbrekende waarde die door de hele evaluatie wordt gerespecteerd, zal niet overeenkomen.
Je kunt regels identificeren die worden beïnvloed door deze wijziging door predikaten te bekijken die een NOT
-negatie gebruiken met een genest kenmerk dat mogelijk kan ontbreken. Als je hetzelfde overeenkomende gedrag wilt behouden als Block if NOT(:email_domain: = 'notfraud.com')
, dan kan je dit doen door expliciet je regelpredicaat te wijzigen om ontbrekende waarden te verwerken: Block if is_missing(:email_domain:)OR NOT(:email_domain: = ‘notfraud.com’)
. Anders zal je regel automatisch het bijgewerkte gedrag overnemen zodra Stripe de verandering van mei 2024 implementeert.