@extends('layout') @section('title','Règles de recommandation') @section('content')
Chaque règle observe une portée (employé / groupe / campagne), teste une formule sur les indicateurs disponibles, et — si elle correspond — génère une recommandation avec la priorité et les textes définis ci-dessous. Pour un même sujet, les règles actives de sa portée sont essayées dans l'ordre (« Position ») et la première qui correspond l'emporte. Créer, modifier ou supprimer une règle relance immédiatement l'analyse.
Une règle observe une portée (qui/quoi elle juge), calcule des indicateurs
chiffrés pour chaque sujet de cette portée, et applique une formule booléenne dessus. Si la
formule est vraie (et que l'échantillon minimum est atteint), la règle génère une recommandation avec la
priorité et les textes (titre / détail / action) que tu as écrits — en
remplaçant {indicateur} par sa valeur réelle pour ce sujet.
| Portée | Indicateurs | Sens |
|---|---|---|
| Employé | sent, clicked, submitted, reported |
Nombre de campagnes envoyées / cliquées / avec identifiants saisis / signalées, pour cette personne. |
| Groupe (entité / projet / département) | sent, clicked, submitted, click_rate, submit_rate |
Comptes et taux (%) sur l'ensemble des mails envoyés au groupe. Une même règle « groupe » est rejouée automatiquement sur chaque entité, chaque projet et chaque département. |
| Campagne | sent, opened, clicked, submitted, open_rate, click_rate, submit_rate, tracking_works |
Comptes et taux (%) pour une campagne donnée. tracking_works vaut 1 si l'ouverture peut être mesurée (URL publique), 0 sinon (localhost) — utile pour ignorer un taux d'ouverture non fiable. |
Compare un indicateur à un nombre avec >= <= == !=
> <, combine plusieurs conditions avec AND / OR, et
groupe avec des parenthèses. Exemples : click_rate >= 30 ·
submitted >= 1 · click_rate >= 30 OR submit_rate >= 10 ·
tracking_works == 1 AND open_rate < 30. Le bouton 🧪 Tester ci-dessous te dit tout de suite
combien de sujets correspondent actuellement, sans rien enregistrer.
Dans les trois champs de texte, {label} insère le nom du sujet (employé, entité, campagne…),
chaque indicateur de la portée s'insère entre accolades (ex. {click_rate},
{submitted}), et pour une règle de portée « groupe », {scope} insère automatiquement
« Entité », « Projet » ou « Département » selon le cas.
| Portée | Formule | Priorité | Titre / Action (extrait) |
|---|---|---|---|
| Employé | submitted >= 1 |
Haute | « {label} doit suivre une session de sensibilisation » → action : changement de mot de passe et formation individuelle. |
| Groupe | click_rate >= 30 OR submit_rate >= 10 |
Haute | « Formation collective recommandée : {scope} {label} » → action : planifier une session pour {label}. |
| Campagne | tracking_works == 1 AND open_rate < 30 |
Moyenne | « Test peu consulté ({open_rate} % d'ouverture) » → action : vérifier la délivrabilité, relancer un test corrigé. |
Tu peux voir ces 8 règles telles quelles (et t'en inspirer) dans la liste « Règles existantes » plus bas.
| Nom | Portée | Formule | Priorité | Position | Actif | |
|---|---|---|---|---|---|---|
| {{ $r->name }} | {{ $scopes[$r->scope] ?? $r->scope }} | {{ $r->formula }} |
{{ $priorities[$r->priority] ?? $r->priority }} | {{ $r->position }} | {{ $r->active ? '✅' : '—' }} | Modifier |
| {{ ($q !== '' || $selectedScopes !== []) ? 'Aucune règle ne correspond à ces filtres.' : "Aucune règle pour l'instant : sans règle active, l'analyse ne génère plus aucune recommandation." }} | ||||||