Ajoutez des commentaires aux enregistrements (tâches) dans Blue avec du contenu riche, des pièces jointes de fichiers et des @mentions.


Ajouter un commentaire

La mutation createComment vous permet d'ajouter des commentaires aux enregistrements dans Blue. Les commentaires prennent en charge le contenu HTML riche, les pièces jointes de fichiers, les @mentions, et sont automatiquement intégrés avec le fil d'activité et le système de notification.

Exemple de base

Ajoutez un simple commentaire texte à un enregistrement :

mutation AddComment {
  createComment(
    input: {
      html: "<p>This task is progressing well!</p>"
      text: "This task is progressing well!"
      category: TODO
      categoryId: "clm4n8qwx000008l0g4oxdqn7"
    }
  ) {
    id
    html
    text
    createdAt
    user {
      id
      name
    }
  }
}

Exemple avancé

Ajoutez un commentaire avec un formatage riche, des images et un traitement par l'éditeur TipTap :

mutation AddCommentAdvanced {
  createComment(
    input: {
      html: "<p>Here's my <strong>feedback</strong> on this task:</p><ul><li>Great progress on the design</li><li>Need to review the API integration</li></ul><p>Attaching screenshot:</p><img src='data:image/png;base64,iVBOR...' />"
      text: "Here's my feedback on this task: - Great progress on the design - Need to review the API integration Attaching screenshot:"
      category: TODO
      categoryId: "clm4n8qwx000008l0g4oxdqn7"
      tiptap: true
    }
  ) {
    id
    html
    text
    createdAt
    user {
      id
      name
      avatar
    }
    activity {
      id
    }
    isRead
    isSeen
  }
}

Paramètres d'entrée

CreateCommentInput

Paramètre Type Requis Description
html String! ✅ Oui Contenu HTML du commentaire (sera assaini pour la sécurité)
text String! ✅ Oui Version en texte brut du contenu du commentaire
category CommentCategory! ✅ Oui Type d'entité sur laquelle on commente (utilisez TODO pour les enregistrements)
categoryId String! ✅ Oui ID de l'entité (enregistrement) sur laquelle on commente
tiptap Boolean Non Activer l'assainissement et le traitement HTML spécifiques à l'éditeur TipTap

Valeurs de CommentCategory

Valeur Description
TODO Commentaire sur un enregistrement/élément de tâche
DISCUSSION Commentaire sur un fil de discussion
STATUS_UPDATE Commentaire sur une mise à jour de statut

Champs de réponse

La mutation renvoie un objet Comment avec des détails complets :

Champ Type Description
id ID! Identifiant unique pour le commentaire
uid String! Identifiant unique alternatif
html String! Contenu HTML du commentaire
text String! Version en texte brut du commentaire
category CommentCategory! Type d'entité commentée
createdAt DateTime! Date de création du commentaire
updatedAt DateTime! Date de dernière mise à jour du commentaire
deletedAt DateTime Date de suppression du commentaire (null si actif)
deletedBy User Utilisateur qui a supprimé le commentaire
user User! Utilisateur qui a créé le commentaire
activity Activity Enregistrement d'activité associé
discussion Discussion Discussion associée (si la catégorie est DISCUSSION)
statusUpdate StatusUpdate Mise à jour de statut associée (si la catégorie est STATUS_UPDATE)
todo Todo Enregistrement associé (si la catégorie est TODO)
isRead Boolean Si l'utilisateur actuel a lu ce commentaire
isSeen Boolean Si l'utilisateur actuel a vu ce commentaire
aiSummary Boolean Si ce commentaire a été généré par l'IA

Autorisations requises

Les utilisateurs doivent avoir un accès approprié au projet pour commenter les enregistrements :

Niveau d'accès Peut ajouter des commentaires
OWNER ✅ Oui
ADMIN ✅ Oui
MEMBER ✅ Oui
CLIENT ✅ Oui
COMMENT_ONLY ✅ Oui
VIEW_ONLY ❌ Non

Important : L'utilisateur doit être membre du projet contenant l'enregistrement et ne doit PAS avoir le niveau d'accès VIEW_ONLY.

Réponses d'erreur

UnauthorizedError

{
  "errors": [{
    "message": "You don't have permission to comment on this record",
    "extensions": {
      "code": "FORBIDDEN"
    }
  }]
}

Quand : L'utilisateur n'a pas la permission de commenter sur l'enregistrement/l'entité spécifié(e).

ValidationError

{
  "errors": [{
    "message": "Invalid input parameters",
    "extensions": {
      "code": "BAD_USER_INPUT"
    }
  }]
}

Quand : Des champs requis sont manquants ou contiennent des données invalides.

CommentNotFoundError

{
  "errors": [{
    "message": "Record not found",
    "extensions": {
      "code": "COMMENT_NOT_FOUND"
    }
  }]
}

Quand : Le categoryId spécifié ne correspond pas à un enregistrement existant.

UserInputError

{
  "errors": [{
    "message": "Content validation failed",
    "extensions": {
      "code": "BAD_USER_INPUT"
    }
  }]
}

Quand : Le contenu HTML échoue à l'assainissement ou contient du code malveillant.

Notes importantes

Traitement du contenu

  • Assainissement HTML : Tout le contenu HTML est automatiquement assaini pour prévenir les attaques XSS
  • Extraction de fichiers : Les images et pièces jointes intégrées dans le HTML sont extraites et stockées dans S3
  • Mode TipTap : Lorsque tiptap: true, utilise un assainissement spécialisé pour le contenu de l'éditeur TipTap
  • @Mentions : Les mentions d'utilisateurs dans les commentaires sont automatiquement traitées et déclenchent des notifications

Considérations de performance

  • Les commentaires sont indexés pour la recherche automatiquement
  • Les grandes pièces jointes d'images sont traitées de manière asynchrone
  • Chaque commentaire crée un enregistrement d'activité pour la chronologie du projet

Effets secondaires

Ajouter un commentaire déclenche plusieurs processus automatisés :

  • Création d'activité : Crée un enregistrement d'activité visible dans la chronologie du projet
  • Indexation de recherche : Le contenu du commentaire est ajouté à l'index de recherche du projet
  • Notifications : Envoie des notifications par e-mail, push et dans l'application aux utilisateurs concernés
  • Mises à jour en temps réel : Publie le commentaire dans les abonnements GraphQL pour des mises à jour en direct
  • Webhooks : Déclenche un webhook externe si configuré pour le projet
  • Traitement des @Mentions : Traite les mentions d'utilisateurs et envoie des notifications ciblées
  • Traitement des fichiers : Extrait et traite toutes les images ou fichiers intégrés du contenu HTML

Sécurité du contenu

  • Tout le HTML est assaini à l'aide de bibliothèques standard de l'industrie
  • Les téléchargements de fichiers sont validés pour le type et la taille
  • Le contenu malveillant est automatiquement supprimé
  • Le contenu généré par l'utilisateur est correctement échappé dans tous les contextes

Fonctionnalités d'intégration

  • Fil d'activité : Les commentaires apparaissent dans la chronologie d'activité du projet
  • Recherche : Le contenu des commentaires est consultable au sein du projet
  • Notifications : Préférences de notification configurables pour différents types de commentaires
  • Temps réel : Les commentaires apparaissent instantanément pour les autres utilisateurs visualisant le même enregistrement
  • Support mobile : Les commentaires sont entièrement pris en charge dans les applications mobiles

Points de terminaison associés

  • Lister les commentaires : Interroger les commentaires pour récupérer les commentaires existants sur les enregistrements
  • Mettre à jour le commentaire : Modifier le contenu d'un commentaire existant
  • Supprimer le commentaire : Supprimer des commentaires avec une autorisation appropriée
  • Lister les enregistrements : Interroger les tâches pour trouver des enregistrements sur lesquels on peut commenter

Assistant IA

Les réponses sont générées par l'IA et peuvent contenir des erreurs.

Comment puis-je vous aider ?

Posez-moi toutes vos questions sur Blue ou cette documentation.

Entrez pour envoyer • Maj+Entrée pour une nouvelle ligne • ⌘I pour ouvrir