> ## 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 — conditions

> Conditions de métrique et de colonne, les ensembles d'opérateurs par type de données, et comment les conditions se combinent.

Les `conditions` d'une règle sont un groupe logique composé d'une ou plusieurs conditions :

```json theme={null}
"conditions": {
  "operator": "AND",
  "rules": [ { "type": "METRIC", … }, { "type": "COLUMN", … } ]
}
```

* `operator` — `AND` (tous doivent correspondre) ou `OR` (n'importe lequel).
* `rules` — une liste de conditions de **métrique** ou de **colonne**.

## Conditions de métrique

Comparez une métrique d'analyse à un seuil.

```json theme={null}
{
  "type": "METRIC",
  "metricId": "<uuid>",
  "conditionOperator": "LOWER_OR_EQUAL",
  "thresholdValue": 7,
  "periodFilter": { "type": "LAST_30_DAYS" }
}
```

| Champ               | Signification                                                                                                                  |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `metricId`          | Une métrique du catalogue (p. ex. jours de stock, rotation d'inventaire, ventes brutes, score de risque, tendance de vente %). |
| `conditionOperator` | Voir les opérateurs ci-dessous.                                                                                                |
| `thresholdValue`    | La valeur de comparaison.                                                                                                      |
| `periodFilter`      | Fenêtre de temps optionnelle (p. ex. `LAST_7_DAYS`, `LAST_30_DAYS`, `THIS_MONTH`, `ALL_TIME`).                                 |

**Opérateurs :** `LOWER_THAN`, `LOWER_OR_EQUAL`, `GREATER_THAN`, `GREATER_OR_EQUAL`,
`EQUAL`, `NOT_EQUAL`, `TOP_PERCENT`, `BOTTOM_PERCENT`.

<Note>
  Pour `TOP_PERCENT` / `BOTTOM_PERCENT`, `thresholdValue` est un seuil de centile dans
  `(0, 100]` évalué sur les entités en portée (p. ex. « top 10% par ventes »).
</Note>

## Conditions de colonne

Testez une valeur de colonne gold/silver directement.

```json theme={null}
{
  "type": "COLUMN",
  "columnId": "dim_products.gender_full_path_1",
  "columnOperator": "STARTS_WITH",
  "value": "M",
  "secondaryValue": null
}
```

| Champ            | Signification                                              |
| ---------------- | ---------------------------------------------------------- |
| `columnId`       | `"<table>.<column>"` (p. ex. `dim_products.name`).         |
| `columnOperator` | Dépend du type de données de la colonne — voir ci-dessous. |
| `value`          | La valeur de comparaison (chaîne / nombre / booléen).      |
| `secondaryValue` | Limite supérieure pour `BETWEEN` ; ignorée autrement.      |

### Opérateurs par type de données

<Tabs>
  <Tab title="Chaîne">
    `EQUALS`, `NOT_EQUALS`, `CONTAINS`, `NOT_CONTAINS`, `STARTS_WITH`, `ENDS_WITH`,
    `MATCHES_REGEX`, `IS_EMPTY`, `IS_NOT_EMPTY`.
  </Tab>

  <Tab title="Date">
    `BEFORE`, `AFTER`, `BETWEEN`, `ON_DATE`, `IS_EMPTY`, `IS_NOT_EMPTY`.
  </Tab>

  <Tab title="Booléen">
    `IS_TRUE`, `IS_FALSE`.
  </Tab>

  <Tab title="Numérique">
    `LOWER_THAN`, `LOWER_OR_EQUAL`, `GREATER_THAN`, `GREATER_OR_EQUAL`, `EQUAL`,
    `NOT_EQUAL`.
  </Tab>
</Tabs>

### Opérateurs sans valeur

`IS_EMPTY`, `IS_NOT_EMPTY`, `IS_TRUE`, `IS_FALSE` ne prennent **pas** de `value` — le constructeur masque
l'entrée de valeur pour eux. `BETWEEN` est le seul opérateur qui utilise `secondaryValue`.

<Note>
  Les conditions de métrique et de colonne peuvent être mélangées dans la même règle sous un seul `operator`
  (AND/OR), p. ex. *« jours de stock ≤ 7 **ET** genre commence par M »*.
</Note>
