---
title: "Centre de notifications"
module: comms
type: functional
status: active
updated: 2026-07-08
---

# Centre de notifications

## Vue d'ensemble

Le centre de notifications (`/notifications`, cloche dans la barre du haut) regroupe les notifications applicatives internes : création de contrats, alertes de cybersécurité (CERT-FR / CERT Santé), etc. Il permet de consulter, ouvrir, marquer comme lues et archiver ces notifications.

## Accès

- **Cloche** (barre du haut) : badge avec le nombre de notifications non lues, menu déroulant affichant les **5 dernières notifications non lues** (cliquer sur l'une d'elles la marque lue et ouvre la fiche de l'élément), le détail par type et un lien vers la page complète. Le nombre de non-lues est aussi affiché dans le **titre de l'onglet navigateur** — ex. « (3) Isi-APP ».
- **Page `/notifications`** : accessible à tout utilisateur connecté. Chacun ne voit que les notifications qui le ciblent (voir « Ciblage » ci-dessous).

## La page Notifications

### Onglets d'état

| Onglet | Contenu |
|--------|---------|
| **Non lues** | Notifications reçues et pas encore traitées (avec compteur) |
| **Lues** | Notifications marquées comme lues |
| **Archivées** | Notifications archivées (masquées des deux autres onglets) |

### Filtre par type et recherche

Pills « Tous / Sécurité / Contrats / Tickets / Projets » pour restreindre la liste à un type de notification. Le filtre s'applique aussi aux compteurs des onglets. Le menu de la cloche ouvre directement la page pré-filtrée sur le type cliqué. Un champ de **recherche texte** (titre + contenu) complète les filtres.

### Groupement temporel

La liste est découpée par séparateurs de période : **Aujourd'hui / Hier / Cette semaine / Ce mois-ci / Plus ancien**.

### Regroupement des notifications similaires (anti-spam)

À partir de **3 notifications consécutives identiques** (même type, même titre, même période — cas typique : une salve d'alertes CERT), la liste les replie en une seule ligne « N notifications — {titre} », dépliable, avec des actions groupées (tout marquer lu / tout archiver / tout restaurer selon l'onglet).

### Contenu d'une notification

Chaque notification affiche : une icône colorée par type, un titre, un texte descriptif, un badge de type et le temps écoulé (« Reçue il y a 2 jours »).

- **Contrats** : le texte contient l'intitulé du contrat et son fournisseur — ex. *« Le contrat « Maintenance CVC » (fournisseur Dalkia) a été créé. »* Pour les notifications antérieures à cette évolution (qui ne contenaient que `#id`), l'intitulé du contrat est résolu et affiché en dessous du texte.
- **Sécurité** : le texte reprend le titre de l'alerte CERT remontée selon les mots-clés définis dans les paramètres de sécurité.

### Ouvrir l'élément lié

Cliquer sur une notification **marque celle-ci comme lue et ouvre la fiche de l'élément** :

| Type | Destination |
|------|-------------|
| Contrat | Fiche du contrat (consultation) |
| Alerte cyber | Détail de l'alerte (module Sécurité) |
| Ticket | Fiche du ticket (`/ticketv4/show/…`) |

Les notifications sans élément lié connu ne sont pas cliquables.

### Actions

| Contexte | Actions disponibles (au survol de la ligne) |
|----------|---------------------------------------------|
| Non lue | Marquer comme lue · Archiver |
| Lue | Remettre en non lue · Archiver |
| Archivée | Restaurer (redevient non lue) |

Boutons d'action de masse (selon l'onglet, appliqués au filtre courant) :
- **« Tout marquer comme lu »** (onglet Non lues)
- **« Tout archiver »** (onglet Lues)

### Digest quotidien par email (opt-in)

Un interrupteur **« Digest quotidien par email »** (barre d'outils de la page, désactivé par défaut) permet de recevoir chaque matin (7h30) un email récapitulatif de ses notifications non lues. Aucun email n'est envoyé s'il n'y a rien de non lu. L'option se désactive au même endroit.

### Rétention

Chaque nuit : les notifications **lues depuis plus de 30 jours sont archivées automatiquement**, et les **archivées depuis plus de 6 mois sont purgées définitivement**.

## Ciblage et visibilité

Une notification cible **une entité**, **un utilisateur** ou **un groupe** :

| Ciblage | Qui la voit | Exemple |
|---------|-------------|---------|
| Entité (`idc`) | Tous les utilisateurs de l'entité | Création de contrat |
| Groupe | Tous les membres du groupe | Alertes CERT (groupe configuré dans les paramètres de sécurité) |
| Utilisateur | Uniquement l'utilisateur ciblé | — |

### ⚠️ État lu/archivé partagé

L'état « lue » / « archivée » est porté par **la notification elle-même**, pas par utilisateur. Conséquence : pour une notification ciblée entité ou groupe (cas des alertes CERT et des contrats), **marquer comme lue ou archiver la masque pour tous les destinataires**, pas seulement pour soi. Seules les notifications ciblées utilisateur ont un comportement réellement personnel.

C'est un comportement historique du système ; un état par utilisateur nécessiterait une évolution dédiée (table d'états individuels).

## Types de notifications actuels

| Type | Déclencheur | Destinataire |
|------|-------------|--------------|
| **Contrats** | Création d'un contrat (formulaire ou remplissage IA) | Entité |
| **Sécurité** | Détection d'alertes CERT-FR / CERT Santé correspondant aux mots-clés de l'entité | Groupe configuré |
| **Tickets** — affectation | Un ticket est affecté à un gestionnaire (sauf auto-affectation) | Gestionnaire affecté (personnel) |
| **Tickets** — clôture | Un ticket est clôturé (sauf par le demandeur lui-même) | Demandeur (personnel) |
| **Tickets** — réouverture | Un ticket clôturé est réouvert | Gestionnaire qui le traitait (personnel) |
| **Tickets** — réponse email | Une réponse email entrante est acceptée en commentaire | Demandeur + gestionnaire, hors expéditeur (personnel) |
| **Tickets** — commentaire | Un commentaire public est ajouté depuis la fiche ticket | Demandeur + gestionnaire, hors auteur (personnel) |
| **Contrats** — échéance | Chaque matin (6h30) : contrats actifs dont la date d'alerte est atteinte (rattrapage 7 jours) ou, sans date d'alerte, dont l'échéance tombe sous 30 jours. Les contrats **confidentiels ou restreints (SL)** sont exclus | Entité |
| **Projets** — livré en production | Un backlog passe au statut « Prod » (kanban, édition ou bouton Notifier) | Créateur du backlog + demandeurs des tickets liés, hors acteur (personnel) |
| **Projets** — ajout au projet | Ajout à une équipe projet ou partage d'un rôle | L'utilisateur ajouté (personnel) |
| **Projets** — réunion créée | Création d'une réunion **non privée** sur le projet | Membres du projet (rôles + équipes), hors créateur (personnel) |
| **Projets** — météo publiée | Ajout d'une météo projet | Membres du projet, hors auteur (personnel) |
| **Tickets** — escalade | Un ticket est escaladé au niveau supérieur | Gestionnaires des systèmes du nouveau niveau, hors acteur (personnel) |
| **CRM** — action du jour | Cron 6h00 : actions commerciales planifiées aujourd'hui (en plus du mail existant) | Responsable de l'action (personnel) |
| **CRM** — échéance d'affaire | Cron 6h45 : affaires ouvertes dont la deadline tombe sous 7 jours (anti-doublon 30 j) | Responsable de l'affaire (personnel) |
| **Matériel** — fin de garantie | Cron 6h40 : matériels actifs dont la garantie expire sous 30 jours (anti-doublon 60 j) | Entité |

> Les notifications tickets sont **ciblées utilisateur** : les marquer lues/archivées n'affecte que soi.
> Les commentaires privés ne génèrent jamais de notification.
