Règles — Catégorisation
BR-CAT-001 — Priorité des sources [APP]
CategorySource indique comment la catégorie a été attribuée. En cas de modification, la source est mise à jour en conséquence :
| Priorité | CategorySource | Déclencheur |
|---|---|---|
| 1 (plus forte) | MANUAL | Correction manuelle par l'utilisateur |
| 2 | RULE | Règle de catégorisation auto appliquée |
| 3 | AI | Catégorisation par Gemini |
| 4 (plus faible) | IMPORT | Champ category présent dans le CSV |
Une catégorie MANUAL ne doit jamais être écrasée par une règle automatique ou une relance d'IA.
BR-CAT-002 — Types de règles [APP]
Le modèle CategorizationRule supporte trois matchType :
matchType | Comportement |
|---|---|
MERCHANT_EXACT | merchantName de la transaction = matchValue (insensible à la casse) |
LABEL_CONTAINS | label de la transaction contient matchValue |
AMOUNT_RANGE | matchValue contient "min:max" (ex. "5:15") |
Les règles sont évaluées par ordre de priority décroissant (priorité haute = priorité forte). La première règle qui matche s'applique.
BR-CAT-003 — Scope d'une règle [APP]
Une CategorizationRule peut avoir un accountId optionnel :
accountId = null→ règle globale, s'applique à tous les comptes de l'utilisateuraccountId = <id>→ règle limitée à un compte spécifique
Les règles spécifiques à un compte ont priorité sur les règles globales à priority égale (à implémenter au niveau applicatif).
BR-CAT-004 — Catégorie parent [APP]
Chaque transaction a un champ categoryParent en plus de category. La hiérarchie est définie dans CategoryConfig :
CategoryConfig.parentName = null→ catégorie racineCategoryConfig.parentName = <name>→ sous-catégorie
L'affichage agrégé (ex. diagramme de répartition) peut utiliser categoryParent pour grouper les sous-catégories. La valeur par défaut lors d'un import sans catégorie est "À catégoriser" / "Inconnu".
BR-CAT-005 — Config catégories : système vs utilisateur [DB]
CategoryConfig @@unique([userId, name])
userId = null→ config système partagée (catégories par défaut)userId = <id>→ config personnalisée de l'utilisateur
Les mots-clés Gemini (geminiKeywords) permettent d'affiner la catégorisation IA par catégorie.
BR-CAT-006 — Valeur par défaut à l'import [APP]
Si le parser CSV ne fournit pas de catégorie, la transaction reçoit :
category = "À catégoriser"categoryParent = "Inconnu"categorySource = IMPORT
Ces valeurs servent de signal pour identifier les transactions à catégoriser manuellement.