Gestion de l'arborescence des catégories et des filtres de leurs contenus
Sélectionnez une catégorie dans l'arborescence ou créez-en une nouvelle.
Sélectionnez une catégorie existante à ajouter en tant qu'enfant de .
Le système de filtres repose sur un Arbre de Syntaxe Abstraite (AST) sérialisé en JSON. Il permet de combiner des conditions simples et des blocs logiques imbriqués pour alimenter automatiquement vos rubriques.
Un filtre est soit un bloc logique (qui groupe plusieurs conditions), soit une condition finale (une feuille).
{
"logic": "AND" | "OR",
"conditions": [ ... ]
}
| Opérateur (`logic`) | Comportement |
|---|---|
"AND" |
La recette doit remplir toutes les conditions du tableau. |
"OR" |
La recette doit remplir au moins une des conditions du tableau. |
| Champ (`field`) | Opérateurs acceptés | Type de valeur (`value`) | Exemple |
|---|---|---|---|
difficulty |
<=, >=, == |
Entier (1 à 5) | {"field": "difficulty", "operator": ">=", "value": 3} |
global_search |
contains |
Chaîne de caractères | {"field": "global_search", "operator": "contains", "value": "chocolat"} |
tags |
contains, == |
Chaîne (nom) ou Entier (ID) | {"field": "tags", "operator": "contains", "value": "Noël"} |
ingredients |
contains |
Chaîne de caractères | {"field": "ingredients", "operator": "contains", "value": "Cannelle"} |
materiels |
contains, == |
Chaîne (nom) ou Entier (ID) | {"field": "materiels", "operator": "contains", "value": "Fouet"} |
temps_type |
<=, >= |
Objet {"type": "...", "duration": X} |
{"field": "temps_type", "operator": "<=", "value": {"type": "cuisson", "duration": 30}} |
temps_total |
<=, >= |
Entier (minutes) | {"field": "temps_total", "operator": "<=", "value": 60} |
portions |
==, >=, <= |
Entier ou Objet {"count": X, "unity": "..."} |
{"field": "portions", "operator": "==", "value": {"count": 4, "unity": "personnes"}} |
Exemple recherchant les recettes de difficulté supérieure ou égale à 3, contenant soit le tag "Noël", soit l'ingrédient "Cannelle" :
{
"logic": "AND",
"conditions": [
{
"field": "difficulty",
"value": 3,
"operator": ">="
},
{
"logic": "OR",
"conditions": [
{
"field": "tags",
"value": "Noël",
"operator": "contains"
},
{
"field": "ingredients",
"value": "Cannelle",
"operator": "contains"
}
]
}
]
}