> ## Documentation Index
> Fetch the complete documentation index at: https://docs.solya.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Règles de tagging — portée & propagation

> Restreindre les entités qu'une règle évalue et contrôler comment une étiquette se propage dans la hiérarchie.

La `scope` optionnelle d'une règle décide **quelles entités** elle évalue et **comment l'étiquette
se propage**.

```json theme={null}
"scope": {
  "entityType": "VARIANT",
  "propagationMode": "BUBBLE_UP",
  "brandIds": ["<uuid>"],
  "productIds": [],
  "taxonomies": [ { "type": "gender", "values": ["M"] } ],
  "collections": ["<uuid>"]
}
```

## Champs de portée

| Champ             | Signification                                                                                   |
| ----------------- | ----------------------------------------------------------------------------------------------- |
| `entityType`      | L'entité que la règle cible : `PRODUCT`, `BRAND`, `VARIANT`, `INVENTORY_ITEM`. Toujours défini. |
| `brandIds`        | Restreindre à ces marques.                                                                      |
| `productIds`      | Restreindre à ces produits.                                                                     |
| `taxonomies`      | Restreindre par dimension — chaque `{ type, values }` (p. ex. genre = M).                       |
| `collections`     | Restreindre à ces collections.                                                                  |
| `propagationMode` | Comment l'étiquette se propage dans la hiérarchie (ci-dessous).                                 |

Un filtre vide/absent signifie « pas de restriction sur cette dimension ». Les filtres se combinent pour affiner
la population évaluée.

## Modes de propagation

La hiérarchie est **Marque → Produit → Variante → Article d'inventaire**.

| Mode           | Effet                                                                                         |
| -------------- | --------------------------------------------------------------------------------------------- |
| `ENTITY_ONLY`  | Étiquetez uniquement l'entité correspondante (défaut — pas de propagation).                   |
| `CASCADE_DOWN` | Étiquetez aussi les descendants de l'entité (p. ex. marque → ses produits → leurs variantes). |
| `BUBBLE_UP`    | Étiquetez aussi les ancêtres de l'entité (p. ex. variante → son produit → sa marque).         |

Hiérarchie des entités et modes de propagation :

```mermaid theme={null}
graph TD
  B["Marque"]
  P1["Produit"]
  V1["Variante"]
  I1["Article d'Inventaire"]
  P2["Produit"]
  V2["Variante"]
  I2["Article d'Inventaire"]
  
  B -->|CASCADE_DOWN| P1
  P1 -->|CASCADE_DOWN| V1
  V1 -->|CASCADE_DOWN| I1
  B -->|CASCADE_DOWN| P2
  P2 -->|CASCADE_DOWN| V2
  V2 -->|CASCADE_DOWN| I2
  
  I1 -->|BUBBLE_UP| V1
  V1 -->|BUBBLE_UP| P1
  P1 -->|BUBBLE_UP| B
  
  V1 -.->|ENTITY_ONLY| V1
```

<Note>
  Le parcours de propagation exact s'exécute dans le moteur d'évaluation d'étiquettes de la plateforme données ; la
  règle ne déclare que le mode. Choisissez `CASCADE_DOWN` pour étiqueter un sous-arbre entier à partir d'un
  niveau supérieur, ou `BUBBLE_UP` pour marquer un parent parce que l'un de ses enfants a correspondu.
</Note>
