Tous les cas d'usage

scan.is_first

Ce colis, la première fois

Le même code répond autrement la première fois que la suivante. is_first est vrai par code, pas par personne : exactement une fois dans la vie de cette étiquette, peu importe qui scanne. L'axe convient donc là où un code correspond à un exemplaire — sur une étiquette d'expédition. Sur un autocollant de porte, la même règle serait absurde : un seul passant au monde verrait la première branche.

Où c'est accroché
Étiquette de colis, intérieur du couvercle, étiquette de retour.
Pourquoi le papier reste
Deux codes QR sur une étiquette, et le destinataire scanne le mauvais.

Résolution en direct

scan.is_first = true
geo.country = USdevice.os = ioslang.primary = en
  1. 1Ce colis, premier scan
  2. 2Ce colis, déjà scanné
  3. alwaysSinon
https://acme.com/setup

Premier scan de cette étiquette ?

Un carton avec une étiquette d'expédition portant le code
Le même code sur chaque visuel.Étiquette de colis, intérieur du couvercle, étiquette de retour.

Le jeu de règles

Valide, enregistrable, règle obligatoire à la fin.

Pas une description de ce que le moteur saurait faire — c'est le texte que porte un code. La première règle qui correspond gagne, et la dernière correspond toujours.

ruleset · version 1

{
  "rules": [
    {
      "when": { "scan.is_first": { "eq": true } },
      "then": { "type": "redirect", "url": "https://acme.com/setup" }
    },
    {
      "when": { "scan.is_first": { "eq": false } },
      "then": { "type": "redirect", "url": "https://acme.com/support" }
    },
    {
      "when": "always",
      "then": { "type": "redirect", "url": "https://acme.com/product" }
    }
  ]
}

La troisième règle attrape le cas où le compteur n'a pas pu être déterminé. Un scan ne finit malgré tout pas dans le vide.

C'est la réimpression qui coûte. Arrêtez.