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/).
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 :
/hook/crud_*) ;La première brique livrée est l'addin Commentaires, qui sert de référence pour la migration progressive des autres types.
| 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, actionU).- 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
DdemanageAccessRightsn'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.
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 :
<x-addin.button> ;/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) ;/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 ;_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.).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 (droitD, 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.
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).
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.
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).
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.
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.
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).
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 :
.vcf groupé.À 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).
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, droitD; 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).
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.
ℹ️ 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).
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 »).
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.
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.
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.
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.
U) ne la retire que d'ici ; Supprimer
définitivement (droit D) la retire de tous les éléments puis l'efface.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 :
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).