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