---
title: "Addins v2 — Compléments d'information (Livewire + Onyx)"
module: integrations
type: functional
status: active
updated: 2026-08-17
---

# Addins v2 — Compléments d'information (Livewire + Onyx)

> **Slug pivot** : `addins-v2` — lie cette doc fonctionnelle, la doc technique
> (`.claude/technical-docs/integrations/addins-v2.md`) et les tests Dusk
> (`tests/Browser/Features/addins-v2/`).

## Qu'est-ce qu'un addin ?

Un **addin** est un complément d'information rattaché à un élément de
l'application (un client, un ticket, une intervention, un contrat…). On retrouve
les addins un peu partout, sous forme de boutons : **Commentaires**, **Documents**,
**Images**, **Liens / URL**, **Factures**, **Contrats**.

Cette refonte (v2) modernise ces compléments :

- ouverture dans la **modale Livewire** unifiée de l'application (au lieu de
  l'ancienne fenêtre chargée par `/hook/crud_*`) ;
- interface **Onyx** cohérente avec le reste des écrans récents ;
- **compteur live** sur le bouton déclencheur, mis à jour sans rechargement.

La première brique livrée est l'addin **Commentaires**, qui sert de référence
pour la migration progressive des autres types.

## Commentaires — parcours utilisateur

1. Depuis un élément (ex. fiche client), cliquez sur le bouton **Commentaires**.
   Le badge bleu indique le nombre de commentaires **visibles par vous** : un
   commentaire privé d'autrui n'est ni affiché ni comptabilisé dans le badge
   (sauf pour son auteur ou un super-administrateur).
2. Une modale s'ouvre directement sur le **fil des commentaires** (du plus récent
   au plus ancien). Le **nombre** de commentaires figure dans le titre de la
   modale (« Gestion des commentaires (N) ») et un bouton **Ajouter un
   commentaire** est disponible en haut à gauche. Le temps que le fil se charge,
   un **squelette** s'affiche ; les **10 commentaires les plus récents** sont
   montrés, avec un bouton **« Voir les commentaires plus anciens »** pour
   charger les suivants par paliers de 10.
3. **Ajouter** : cliquez sur **Ajouter un commentaire** pour dérouler le
   formulaire. Le champ **Objet (optionnel)** s'ouvre **pré-rempli** avec un titre
   généré automatiquement (ex. *« Commentaire du 01/07/2026 »*) : vous pouvez le
   laisser tel quel, le modifier ou le vider (il sera alors régénéré). Rédigez
   ensuite le commentaire dans l'éditeur de texte enrichi, puis cliquez sur
   **Publier** (ou **Annuler** pour replier le formulaire). Après publication, le
   formulaire se referme et le compteur du bouton se met à jour immédiatement.
   Dans le fil, un objet laissé sur sa valeur automatique n'est pas réaffiché (la
   date figure déjà en tête du commentaire) ; un objet que vous avez saisi, si.
4. **Commentaire privé** : activez l'interrupteur *Commentaire privé* pour qu'un
   commentaire ne soit visible que de son auteur (et des super-administrateurs
   1 / 100). Un commentaire privé est exclu du fil **et du compteur** pour les
   autres utilisateurs — le badge correspond donc toujours à ce qui est affiché.
5. **Repérage de vos commentaires** : vos propres commentaires sont mis en avant
   par une **teinte bleue très claire** (liseré + fond léger) et la mention
   *(vous)* à côté de votre nom ; ceux des autres interlocuteurs restent neutres.
   Cela permet de distinguer d'un coup d'œil qui a écrit quoi dans le fil.
6. **Modifier / Supprimer** : le bouton *Modifier* n'apparaît que sur **vos
   propres** commentaires. Le bouton *Supprimer* est disponible sur **vos propres**
   commentaires (à tout moment) et, pour les **super-administrateurs** (profils
   1 / 100), sur **tous** les commentaires (modération) ; la suppression demande
   une confirmation et est définitive.

## Règles d'accès

| Action | Qui ? |
|--------|-------|
| Lire les commentaires non privés | Tout utilisateur ayant accès à l'élément |
| Lire un commentaire privé | Son auteur, ou un **super-administrateur** (profils 1 / 100) |
| Ajouter un commentaire | Tout utilisateur ayant accès à l'élément **et** disposant du droit de création |
| **Modifier** un commentaire | **Son auteur uniquement** (un administrateur ne peut pas modifier le commentaire d'autrui : le contenu lui reste attribué) **et** disposant du droit de modification |
| **Supprimer** un commentaire | **Son auteur** (sur ses propres commentaires, sans limite de temps) **ou** un **super-administrateur** (profils 1 / 100, pour n'importe quel commentaire) |

> **Super-administrateur** = profil courant **1** (super-admin développeur ISI-APP)
> ou **100** (super-admin côté client). C'est volontairement **plus restrictif**
> que la notion d'« administrateur standard » de l'application
> (`isAdminLocalUser` : {100, 110, 150} ou < 50) : un admin 110 / 150 **ne peut ni
> supprimer le commentaire d'autrui ni lire les commentaires privés d'autrui**.
>
> - **Modification** : réservée à l'auteur, et passe en plus par la gestion des
>   droits spécifiques (`manageAccessRights`, action `U`).
> - **Suppression** : l'auteur peut supprimer **ses propres** commentaires à tout
>   moment ; un **super-administrateur** (1 / 100) peut supprimer **n'importe quel**
>   commentaire (modération). Le droit `D` de `manageAccessRights` n'entre pas en
>   compte.

> ℹ️ Les commentaires de la v2 cohabitent avec ceux créés par l'ancien système
> (mêmes tables `_com_comment` / `_com_acl`) : l'historique reste visible et
> éditable.

## Disponibilité

Types d'addins déjà migrés en v2 : **Commentaires**, **Images**, **Liens**,
**Documents**, **Factures**, **Contrats**, **Configurations**, **Contacts**,
**Documentation**, **Évaluations**, **Échanges**, **Interventions**,
**Base de connaissance** et **Tâches**. Leur bouton ouvre la modale v2 :

- sur la **fiche client allégée** (CRM light), via le composant `<x-addin.button>` ;
- sur la **page d'un évènement** (`/events/{id}`) : les **Commentaires** sont
  rendus **directement dans la page** (composant `addin.comment-manager` en inline,
  sans modale), puis un bloc « Compléments » regroupe les addins **Images**,
  **Liens** et **Documents** sous forme de boutons (module `12190101`, rattachés
  à l'`idcevent`) ;
- sur la **page d'un ticket support** (`/ticketv4/sav/{id}`) : mise en page façon
  outil de ticketing (Zendesk/Freshdesk) — un **fil « Conversation »** au centre
  (demande, réponse, puis commentaires) et une **sidebar** à droite regroupant les
  propriétés du ticket (dont la **priorité** et une **carte demandeur**
  e-mail / téléphone / organisation) ainsi que les **Images** et **Documents** en
  panneaux repliables. Les **notes internes** (commentaires privés) s'affichent
  sur **fond jaune** ;
- **génériquement** sur toutes les fiches d'un module dont le paramétrage
  (`_modelement.txcommon`) contient la lettre correspondante (`C` commentaires,
  `I` images, `L` liens, `D` documents, `F` factures, `Z` contrats, `P`
  configurations, `E` contacts, `W` documentation, `V` évaluations, `M` échanges,
  `R` interventions, `K` base de connaissance, `T` tâches) — c.-à-d. partout où
  apparaît le menu d'addins standard (fiches réunion, équipements, etc.).

### Images

Le bouton **Images** ouvre une **galerie** : vignettes des images rattachées à
l'élément. Bouton **Ajouter des images** (déroulant) → sélection de **plusieurs
fichiers** d'un coup (JPG/PNG/GIF/WEBP, 5 Mo max), avec aperçu. Les **grandes
images sont automatiquement réduites** (côté navigateur) avant l'envoi — plus
rapide et plus léger. On peut leur donner des **étiquettes** (chips, communes au
lot) et une **description** commune en **texte enrichi**. Pour un ajout **unitaire**,
un champ **Titre** permet de nommer l'image ; en **lot**, chaque image reprend son
**nom de fichier** (renommable ensuite via *Modifier*).

Au survol d'une vignette : **Télécharger**, **Modifier** (titre/étiquettes/
description), **Détacher** et **Supprimer définitivement**. Un clic ouvre l'image
en grand dans une **visionneuse** avec **navigation ◀ ▶**, **légende** (titre /
description) et **téléchargement**. Un bouton **Rattacher une existante** permet
de réutiliser une image déjà chargée pour l'entité **sans la re-téléverser** ; si
une image est sur plusieurs fiches, sa vignette l'indique (badge « N »). Quand la
galerie est fournie, un champ de **recherche** (titre / description / étiquette)
la filtre.

> Comme une image peut figurer sur plusieurs fiches : **Détacher** la retire
> **seulement de cette fiche** (fichier conservé — droit `U`) ; **Supprimer
> définitivement** la retire **partout** et efface le fichier (droit `D`, avec
> avertissement si elle est sur plusieurs fiches).

L'ajout, la modification, le détachement et la suppression sont soumis à
`manageAccessRights` (`C`/`U`/`D`) sur le module maître : selon la configuration,
un utilisateur peut ne voir la galerie qu'en lecture. Contrairement aux
commentaires, les images n'ont pas de notion d'auteur (galerie partagée), donc
ces droits sont la seule autorisation.

### Liens / URL

Le bouton **Liens / url** ouvre la liste des liens rattachés à l'élément. Bouton
**Ajouter un lien** (déroulant) → **URL** (requise) et **titre** sur une même
ligne, puis une **description** optionnelle en **texte enrichi** (mise en forme,
listes…). Seules les URL **http / https** sont acceptées ; si vous saisissez
`exemple.com` sans `https://`, le préfixe est **ajouté automatiquement**. Chaque
lien s'affiche sous forme de **carte « bookmark » entièrement cliquable**
(ouverture dans un nouvel onglet) : une **pastille à l'initiale du domaine**
(couleur stable propre à chaque domaine), le **titre**, le **domaine** (ex.
`docs.editeur.com`), la description et l'auteur/date. Si le lien est **rattaché à
plusieurs fiches**, la carte l'indique (« N fiches »). Au survol, la carte se
surligne et les actions apparaissent. Comme les images, les liens sont partagés
(pas de notion d'auteur) et soumis à `manageAccessRights` (`C`/`U`/`D`).

Quand l'élément compte de **nombreux liens**, un champ de **recherche** (par
titre ou URL) s'affiche en haut de la liste pour filtrer en direct.

À côté d'**Ajouter un lien**, un bouton **Rattacher un existant** permet de
réutiliser un lien déjà créé pour l'entité (recherche par titre / domaine) :
il est **rattaché à cette fiche sans être dupliqué** (le même lien peut ainsi
figurer sur plusieurs fiches). Seuls les liens de l'entité **non déjà rattachés
ici** sont proposés.

Comme un lien peut être présent sur plusieurs fiches, deux actions distinctes
sont proposées au survol : **Détacher** (le retire **seulement de cette fiche** ;
il reste disponible pour l'entité et sur les autres fiches) et **Supprimer
définitivement** (efface le lien **partout**, irréversible — un avertissement
indique le nombre de fiches concernées le cas échéant). Cela corrige le piège où
supprimer un lien rattaché l'effaçait des autres fiches. **Détacher** ne requiert
que le droit de **modification** (`U`) ; **Supprimer définitivement** exige le
droit de **suppression** (`D`).

### Documents

Le bouton **Documents** ouvre la liste des fichiers rattachés à l'élément. Bouton
**Ajouter un document** (déroulant) → fichier **PDF, Word, Excel, PowerPoint,
OpenDocument ou texte** (5 Mo max ; images et archives exclues — sécurité), titre,
**étiquette** optionnelle et **description** en **texte enrichi**. Chaque document
affiche une icône selon son type, sa taille, son étiquette et un lien de
**téléchargement**. Un bouton **Rattacher un existant** permet de réutiliser un
fichier déjà chargé pour l'entité **sans le re-téléverser**. Si le document est
rattaché à plusieurs fiches, la carte l'indique (« N fiches »). Les documents sont
partagés (pas de notion d'auteur) et soumis à `manageAccessRights` (`C`/`U`/`D`).

Comme un document peut figurer sur plusieurs fiches, deux actions distinctes au
survol : **Détacher** (le retire **seulement de cette fiche**, fichier conservé —
droit `U`) et **Supprimer définitivement** (le retire **partout** et efface le
fichier, irréversible — droit `D` ; un avertissement indique le nombre de fiches
concernées). Quand l'élément compte de nombreux documents, un champ de
**recherche** (titre, description ou étiquette) filtre la liste en direct.

### Factures

Le bouton **Factures** ouvre la liste des factures rattachées à l'élément, avec
fournisseur, montants et statut. Bouton **Ajouter une facture** (déroulant) →
libellé, **fournisseur** (liste recherchable), **montant HT / TTC**, **type**
(OPEX/CAPEX), **date de facture / de paiement**, **justificatif** PDF ou image
(optionnel, 5 Mo max). Chaque facture affiche le montant TTC, le type, et un
statut **« Payée le … »** (si une date de paiement est renseignée) ou
**« À régler »**. Comme les autres addins partagés, soumis à `manageAccessRights`
(`C`/`U`/`D`).

### Contrats

Le bouton **Contrats** ouvre la liste des contrats rattachés à l'élément, dans un
affichage **visuel et parlant** : chaque contrat est présenté sous forme de carte
avec un **liseré coloré à gauche** reflétant son urgence (rouge = échu, orange =
échéance proche, gris = à jour). Bouton **Ajouter un contrat** (déroulant) →
intitulé, **fournisseur** (liste recherchable, fournisseurs partagés inclus),
**statut** (En cours / En projet / Terminé / Non concerné), **action à mener**
(à renouveler, tacite reconduction, à résilier, ne pas reconduire, à renégocier),
**dates** (début, fin / échéance, signature), **montant annuel** et **montant
total**, **description / objet**, et **contrat signé** PDF ou image (optionnel,
5 Mo max).

Chaque carte affiche : le statut et l'action sous forme de badges, le fournisseur,
la période (début → fin), la date de signature, un **badge d'échéance** calculé
automatiquement (« Échu le … », « Échéance dans N j », « Échéance le … »), les
montants (€/an et total) et un lien de **téléchargement** du contrat signé. Au
survol : actions **Modifier** / **Archiver**.

> ⚠️ Contrairement aux autres addins v2 (suppression définitive), la suppression
> d'un contrat est un **archivage** : le contrat est marqué `dtdel` (récupérable)
> et **détaché** de l'élément, mais n'est pas effacé de la base. Le compteur du
> bouton exclut les contrats archivés.

Comme les autres addins partagés, l'ajout / la modification / l'archivage sont
soumis à `manageAccessRights` (`C`/`U`/`D`) sur le module maître.

### Configurations

Le bouton **Configurations** ouvre la liste des fiches de configuration technique
rattachées à l'élément. Bouton **Ajouter une configuration** (déroulant) →
**intitulé** (requis), **étiquettes** multiples (chips, ex. « Réseau »,
« Sécurité ») et **contenu** en texte enrichi (mise en forme, listes…). Chaque
fiche affiche son intitulé, ses étiquettes (badges), l'auteur, la date de mise à
jour et le contenu mis en forme. Le contenu long est **replié** (« Afficher tout »)
et un lien **Copier** — affiché sur la ligne d'informations (auteur · date ·
nombre de fiches) — copie le contenu dans le presse-papier (pratique pour des
paramétrages techniques). Au survol : actions **Modifier** / **Détacher** /
**Supprimer**.

- **Recherche** : au-delà de quelques fiches, un champ permet de filtrer par
  intitulé, étiquette ou contenu. La liste est triée par **ordre alphabétique**.
- **Rattacher une existante** : une configuration déjà créée pour l'entité peut
  être rattachée à plusieurs fiches **sans duplication** (un seul enregistrement,
  plusieurs liens).
- **Détacher vs Supprimer** : *Détacher* (droit `U`) ne retire la configuration que
  de **cette** fiche (les autres rattachements restent) ; *Supprimer définitivement*
  (droit `D`) la retire de **toutes** les fiches puis l'efface. Un avertissement
  signale quand une configuration est rattachée à plusieurs fiches.

Comme les autres addins partagés (images, liens, documents, factures), les
configurations n'ont pas de notion d'auteur agissant et sont soumises à
`manageAccessRights` (`C`/`U`/`D`).

### Contacts

Le bouton **Contacts** ouvre la liste des contacts rattachés à l'élément, sous
forme de fiches. Bouton **Ajouter un contact** (déroulant) → **nom** (requis),
**fonction**, **mobile**, **téléphone**, **e-mail**, **référence** interne et
**lien**. Les champs sont **contrôlés et normalisés** : l'e-mail et les **numéros de
téléphone** (format français, ex. `06 12 34 56 78`) doivent être valides, et le
**lien** doit être une URL (le préfixe `https://` est ajouté automatiquement s'il
manque). À l'enregistrement, le **nom est mis en majuscules** et l'**e-mail en
minuscules** automatiquement (cohérent avec l'existant). Les contacts sont triés
par **ordre alphabétique**. Chaque fiche affiche un avatar à initiales, le nom, la
fonction, et des coordonnées **cliquables** (mobile et téléphone en `tel:`, e-mail
en `mailto:`, lien dans un nouvel onglet) ; si le contact figure sur plusieurs
fiches, un badge « N fiches » l'indique. Au survol : **Exporter** (vCard),
**Modifier**, **Détacher**, **Supprimer**. Comme les autres addins partagés, les
contacts n'ont pas de notion d'auteur et sont soumis à `manageAccessRights`
(`C`/`U`/`D`).

**Export des contacts** : chaque contact peut être exporté individuellement en
vCard (bouton carte de visite). En haut, deux boutons exportent **tous** les
contacts de la fiche :

- **Exporter (.csv)** : fichier tabulaire (UTF-8) **importable en masse dans
  Outlook / Excel**. À privilégier sous Outlook, qui n'importe que le premier
  contact d'un `.vcf` groupé.
- **Exporter (.vcf)** : carnet vCard unique, idéal pour **Google Contacts,
  Apple Contacts, Thunderbird** et la plupart des téléphones (qui importent bien
  toutes les fiches d'un vCard multi-contacts).

À côté d'**Ajouter un contact**, un bouton **Rattacher un existant** permet de
réutiliser un contact déjà saisi pour l'entité (recherche par nom / fonction) :
il est **rattaché à cette fiche sans être dupliqué**. Seuls les contacts de
l'entité **non déjà rattachés ici** sont proposés. Quand il y a beaucoup de
contacts, un champ de **recherche** (nom / fonction / e-mail / téléphone /
référence) filtre la liste.

Comme pour les liens, deux actions distinctes : **Détacher** (retire le contact
**de cette fiche uniquement**, le conserve ailleurs — droit `U`) et **Supprimer
définitivement** (l'efface **partout**, droit `D`, avec avertissement si rattaché à
plusieurs fiches).

### Documentation

Le bouton **Documentation** ouvre la liste des fiches de documentation /
connaissance rattachées à l'élément. Bouton **Ajouter une documentation**
(déroulant) → **intitulé** (requis), **étiquettes** (plusieurs possibles, saisies
sous forme de **chips** : on tape le tag puis **Entrée**) et **contenu** (requis)
en **texte enrichi**. Chaque fiche s'affiche de façon **allégée** :
avatar de l'auteur, intitulé, étiquettes, auteur, date, **temps de lecture** estimé
et **nombre de vues** — le contenu n'est **pas** affiché en ligne (il alourdirait la
liste). Un bouton **Ouvrir** (icône ↗) affiche la **documentation complète** dans le
module Documentation (nouvel onglet). Un bouton **Rattacher une existante** permet de
réutiliser une documentation déjà créée pour l'entité **sans la dupliquer** ; la
liste proposée est **triée par ordre alphabétique** et **exclut les livrets**.

Quand l'élément compte de nombreuses documentations, un champ de **recherche**
(intitulé, étiquette ou contenu) filtre la liste en direct.

> Seules les documentations **publiées** sont visibles dans l'addin : les
> **brouillons** et les docs **en attente de validation** (gérés dans le module
> Documentation) n'apparaissent ni dans la liste, ni dans le compteur, ni dans la
> liste « Rattacher une existante » ; les documentations archivées non plus.

> ⚠️ La documentation est une **entité du module Documentation** (Wiki) :
> elle peut donc apparaître ailleurs que sur cette fiche. Deux actions distinctes
> au survol : **Détacher** (la retire **seulement de cette fiche**, le document
> reste dans le module et sur les autres fiches — droit `U`) et **Archiver** (la
> retire **partout**, module Documentation inclus — récupérable, droit `D` ; un
> avertissement indique le nombre de fiches concernées). Création / modification /
> détachement sont soumis à `manageAccessRights` (`C`/`U`), l'archivage à `D` ;
> l'auteur est affiché mais ne restreint pas les droits (documentation collaborative).

### Évaluations / Notes

Le bouton **Évaluations** ouvre les avis donnés sur l'élément. En **en‑tête**, la
**moyenne** est affichée en étoiles avec le **nombre d'avis**. Chaque utilisateur a
**une seule note** : un encart **« Votre note »** propose un sélecteur d'étoiles
(1 à 5) et un commentaire optionnel — **revoter met à jour votre note** (pas de
doublon ; le bouton devient « Mettre à jour mon avis »). En dessous, la liste des
avis (auteur, note, commentaire, date) ; le vôtre est mis en avant.

- **Ajouter / modifier** : tout utilisateur ayant accès à l'élément (droit de
  création), **chacun ne pouvant gérer que sa propre note** (la modification passe
  en plus par le droit de modification).
- **Supprimer** : **l'auteur** de l'avis, ou un **super‑administrateur** (profils
  1 / 100) pour la modération.
- **Délai de modification (24 h)** : une note n'est **plus modifiable** par son
  auteur passé **24 heures après sa publication** — l'avis est alors *figé* (le
  formulaire affiche « Avis figé »). Tant qu'on est dans le délai, l'échéance
  (« Modifiable jusqu'au … ») est rappelée. Pour que ce verrou ait du sens, **la
  suppression par l'auteur se ferme aussi** passé ce délai (sinon supprimer puis
  recréer le contournerait). Un **super‑administrateur** peut toujours supprimer
  (modération), sans limite de temps.

> ℹ️ Sur les **tickets**, l'addin Évaluations ne s'affiche que si l'option
> correspondante est activée dans le paramétrage DSI (comme dans l'ancien système).

### Échanges / Messages

Le bouton **Échanges** ouvre une **messagerie interne** rattachée à l'élément,
présentée comme un **fil de discussion** moderne (façon Gmail/Front). Chaque message
affiche l'**avatar** et le nom de l'expéditeur, les **destinataires** (« À : … »), le
**sujet**, le **corps** (texte enrichi, replié au-delà d'une certaine hauteur), une
éventuelle **pièce jointe** téléchargeable et l'**horodatage** relatif (« il y a 2 h »).

- **Non-lus en évidence** : les messages reçus non lus sont surlignés (liseré bleu,
  pastille « Nouveau ») ; un compteur **« N non lus »** et un bouton **« Tout marquer
  comme lu »** apparaissent en en-tête. Chaque message reçu peut être basculé
  **lu / non lu**.
- **Accusé de lecture** : sur **vos propres envois**, un indicateur montre **✓ Envoyé**
  puis **✓✓ Lu** une fois lu par le destinataire.
- **Nouveau message** : composer avec **destinataires** (multi-sélection parmi
  **toutes** les personnes de l'entité, sans limite de nombre — tapez les premières
  lettres pour filtrer), **sujet**, **corps** en texte enrichi et **pièce jointe**
  optionnelle (5 Mo max).
- **Pré-remplissage sur un ticket** : à l'ouverture du composer depuis un ticket, les
  destinataires sont déjà renseignés — le **demandeur** et la **personne affectée** au
  ticket (vous-même toujours exclu) — et le **sujet** reprend la référence du ticket
  (« Ticket #123 - Imprimante en panne »). Le gestionnaire n'a donc que son message à
  écrire, comme dans l'ancienne version. Le demandeur reste sélectionnable **même s'il
  dépend d'une autre entité** (tickets SAV / prestataire-client). Si le demandeur n'est
  pas un utilisateur ISI (ticket créé par e-mail entrant), aucun destinataire ne peut
  être pré-rempli.
- Le **sujet est facultatif** : laissé vide, il reprend automatiquement la référence du
  ticket, ou « Nouveau message » hors contexte ticket.
- **Notification e-mail** : à l'envoi, **chaque destinataire reçoit un e-mail**
  « Nouveau message » (comme dans l'ancien système). Sur un **ticket**, le
  destinataire est en plus **ajouté aux demandeurs du ticket** (s'il n'y figure pas)
  et le compteur de messages du ticket est mis à jour.
- **Répondre** : pré-remplit le destinataire (expéditeur d'origine) et le sujet
  (« Re: … »).
- **Recherche** (sujet / contenu / expéditeur) au-delà de quelques messages.
- **Suppression** : par l'**auteur** du message ou un détenteur du droit `D`. Un
  message **ne se modifie pas** après envoi (sémantique e-mail).

> ℹ️ Sur les **tickets**, l'accès aux échanges suit les droits du module
> (`manageAccessRights`), comme les autres addins.

### Interventions

Le bouton **Interventions** (affiché si l'option DSI `blinterv` est active et le module
GMAO disponible) ouvre la liste des **interventions terrain** rattachées à l'élément.
Chaque carte affiche le **statut** coloré (Planifiée / À finaliser / Terminé / Reporté /
Annulé), le **type** (préventive, curative, remplacement…), la **date / heure / durée**,
l'**intervenant** (nom, société, téléphone et e-mail cliquables), l'**équipement**
concerné, l'**objet**, le **rapport** (replié au-delà d'une certaine hauteur) et un
éventuel **fichier joint** téléchargeable.

- **Nouvelle intervention / modification** : composer complet — intitulé, type, date,
  heure, durée, statut, équipement, objet, coordonnées de l'intervenant, rapport (texte
  enrichi) et fichier joint (5 Mo max).
- **Demander le rapport** : envoie à l'intervenant un **e-mail** contenant un **lien
  externe sécurisé** de saisie du rapport ; l'intervention est alors marquée « Demande
  envoyée ». (Bouton « Relancer » si une demande a déjà été faite.)
- **Ouvrir la fiche** : accès à la fiche intervention complète (avec ses propres
  commentaires, documents, images…).
- **Recherche** (intitulé / objet / rapport / intervenant) et **suppression** (par le
  demandeur ou un détenteur du droit `D`).

> **Droits requis** : ceux du **module Interventions**, et non ceux de la fiche hôte.
> Concrètement, un utilisateur autorisé à créer/modifier des interventions le reste
> même si ses droits sur les **tickets** sont restreints (lecture seule, par exemple).
> Seule exception, inchangée : sur un ticket **clos ou supprimé**, l'ajout est
> désactivé pour tout le monde.

### Base de connaissance

Le bouton **Connaissance** (affiché pour les profils internes, `idcurrent_profile < 900`)
ouvre les fiches de connaissance rattachées à l'élément. Chaque fiche suit la structure
**Problème → Action → Solution** et affiche un **type** (catégorie ITIL : incident,
problème, changement, requête d'accès…), des **tags**, un indicateur **actif/inactive**,
l'auteur et la date. **Un clic sur la fiche la déplie** (même fonctionnement que l'addin
Tâches) pour afficher le détail problème / action menée / solution en blocs colorés.

- **Nouvelle fiche / modification** : intitulé, tags, type, statut actif, et les trois
  blocs **Problème** (requis), **Action menée** et **Solution** en texte enrichi.
- **Activer / désactiver** une fiche, **rechercher** (intitulé / contenu / tags).
- **Rattacher une existante** : une fiche réutilisable peut être rattachée à plusieurs
  éléments **sans duplication**.
- **Détacher vs Supprimer** : *Détacher* (droit `U`) ne la retire que d'ici ; *Supprimer
  définitivement* (droit `D`) la retire de **tous** les éléments puis l'efface.

### Tâches

Le bouton **Tâches** (profils internes, `idcurrent_profile < 900`) ouvre une **liste
de tâches légère, façon Microsoft To Do**. En haut, un champ **« Ajouter une tâche… »**
(+ échéance optionnelle) crée une tâche d'un simple Entrée. Chaque ligne propose :

- une **coche ronde** à gauche pour marquer **fait / à faire** (titre barré quand c'est fait) ;
- une **étoile** pour marquer la tâche **importante** (remontée en tête de liste) ;
- une **échéance** (date), affichée en rouge si elle est dépassée, modifiable d'un clic ;
- la **suppression** (au survol).

Un **clic sur une tâche la déplie** (carte) pour afficher ses détails et
l'**assigner à un autre utilisateur** de l'entité (sélecteur **recherchable**),
ainsi que l'avancement, le créateur, l'estimation et les tags. Les tâches
**terminées** sont regroupées dans une section repliable « Terminées (N) ».

Ce n'est volontairement **pas** le formulaire complet du module Tâches : juste l'essentiel,
rapide et visuel. Création = droit `C`, coche/étoile/échéance/assignation = droit `U`,
suppression = créateur de la tâche ou droit `D`. Réassigner une tâche à quelqu'un d'autre
le notifie par e-mail.

> **Droits requis** : comme pour les Interventions, ceux du **module Tâches**, et non
> ceux de la fiche hôte — des droits restreints sur les **tickets** ne bloquent pas la
> gestion des tâches d'un ticket. Sur un ticket **clos ou supprimé**, l'ajout reste
> désactivé pour tout le monde.

Les autres types d'addins (livrables…) conservent pour l'instant l'ancien système
(`/hook/crud_*`) et seront migrés au fil de l'eau ; tant qu'un type n'est pas migré, son
bouton continue de fonctionner normalement. Les addins v2 cohabitent avec ceux créés par
l'ancien système (mêmes tables `_com_*` / `_com_acl`).
