Aggiungi commenti ai record (todo) in Blue con contenuti di testo ricco, allegati di file e @menzioni.
Aggiungi Commento
La mutazione createComment consente di aggiungere commenti ai record in Blue. I commenti supportano contenuti HTML ricchi, allegati di file, @menzioni e sono automaticamente integrati con il feed delle attività e il sistema di notifiche.
Esempio Base
Aggiungi un semplice commento di testo a un record:
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
}
}
}
Esempio Avanzato
Aggiungi un commento con formattazione ricca, immagini e elaborazione dell'editor 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
}
}
Parametri di Input
CreateCommentInput
Parametro | Tipo | Richiesto | Descrizione |
---|---|---|---|
html |
String! | ✅ Sì | Contenuto HTML del commento (verrà sanificato per motivi di sicurezza) |
text |
String! | ✅ Sì | Versione in testo semplice del contenuto del commento |
category |
CommentCategory! | ✅ Sì | Tipo di entità su cui si sta commentando (usa TODO per i record) |
categoryId |
String! | ✅ Sì | ID dell'entità (record) su cui si sta commentando |
tiptap |
Boolean | No | Abilita la sanificazione e l'elaborazione HTML specifiche per l'editor TipTap |
Valori CommentCategory
Valore | Descrizione |
---|---|
TODO |
Commento su un record/articolo todo |
DISCUSSION |
Commento su un thread di discussione |
STATUS_UPDATE |
Commento su un aggiornamento di stato |
Campi di Risposta
La mutazione restituisce un oggetto Comment con dettagli completi:
Campo | Tipo | Descrizione |
---|---|---|
id |
ID! | Identificatore unico per il commento |
uid |
String! | Identificatore unico alternativo |
html |
String! | Contenuto HTML del commento |
text |
String! | Versione in testo semplice del commento |
category |
CommentCategory! | Tipo di entità commentata |
createdAt |
DateTime! | Quando è stato creato il commento |
updatedAt |
DateTime! | Quando è stato aggiornato l'ultimo commento |
deletedAt |
DateTime | Quando è stato eliminato il commento (null se attivo) |
deletedBy |
User | Utente che ha eliminato il commento |
user |
User! | Utente che ha creato il commento |
activity |
Activity | Record di attività associato |
discussion |
Discussion | Discussione associata (se la categoria è DISCUSSIONE) |
statusUpdate |
StatusUpdate | Aggiornamento di stato associato (se la categoria è AGGIORNAMENTO_STATO) |
todo |
Todo | Record associato (se la categoria è TODO) |
isRead |
Boolean | Se l'utente corrente ha letto questo commento |
isSeen |
Boolean | Se l'utente corrente ha visto questo commento |
aiSummary |
Boolean | Se questo commento è stato generato da AI |
Permessi Richiesti
Gli utenti devono avere accesso appropriato al progetto per commentare i record:
Livello di Accesso | Può Aggiungere Commenti |
---|---|
OWNER |
✅ Sì |
ADMIN |
✅ Sì |
MEMBER |
✅ Sì |
CLIENT |
✅ Sì |
COMMENT_ONLY |
✅ Sì |
VIEW_ONLY |
❌ No |
Importante: L'utente deve essere un membro del progetto che contiene il record e NON deve avere il livello di accesso VIEW_ONLY
.
Risposte di Errore
UnauthorizedError
{
"errors": [{
"message": "You don't have permission to comment on this record",
"extensions": {
"code": "FORBIDDEN"
}
}]
}
Quando: L'utente non ha il permesso di commentare il record/entità specificato.
ValidationError
{
"errors": [{
"message": "Invalid input parameters",
"extensions": {
"code": "BAD_USER_INPUT"
}
}]
}
Quando: I campi richiesti mancano o contengono dati non validi.
CommentNotFoundError
{
"errors": [{
"message": "Record not found",
"extensions": {
"code": "COMMENT_NOT_FOUND"
}
}]
}
Quando: L'categoryId
specificato non corrisponde a un record esistente.
UserInputError
{
"errors": [{
"message": "Content validation failed",
"extensions": {
"code": "BAD_USER_INPUT"
}
}]
}
Quando: Il contenuto HTML non supera la sanificazione o contiene codice dannoso.
Note Importanti
Elaborazione dei Contenuti
- Sanificazione HTML: Tutti i contenuti HTML vengono automaticamente sanificati per prevenire attacchi XSS
- Estrazione di File: Immagini e allegati incorporati in HTML vengono estratti e memorizzati in S3
- Modalità TipTap: Quando
tiptap: true
, utilizza una sanificazione specializzata per i contenuti dell'editor TipTap - @Menzioni: Le menzioni degli utenti nei commenti vengono elaborate automaticamente e attivano notifiche
Considerazioni sulle Prestazioni
- I commenti vengono indicizzati per la ricerca automaticamente
- Gli allegati di immagini di grandi dimensioni vengono elaborati in modo asincrono
- Ogni commento crea un record di attività per la timeline del progetto
Effetti Collaterali
Aggiungere un commento attiva diversi processi automatizzati:
- Creazione di Attività: Crea un record di attività visibile nella timeline del progetto
- Indicizzazione della Ricerca: Il contenuto del commento viene aggiunto all'indice di ricerca del progetto
- Notifiche: Invia notifiche via email, push e nell'app agli utenti pertinenti
- Aggiornamenti in Tempo Reale: Pubblica il commento per le sottoscrizioni GraphQL per aggiornamenti dal vivo
- Webhook: Attiva un webhook esterno se configurato per il progetto
- Elaborazione @Menzioni: Elabora le menzioni degli utenti e invia notifiche mirate
- Elaborazione dei File: Estrae e elabora eventuali immagini o file incorporati dal contenuto HTML
Sicurezza dei Contenuti
- Tutto l'HTML è sanificato utilizzando librerie standard del settore
- I caricamenti di file vengono convalidati per tipo e dimensione
- I contenuti dannosi vengono automaticamente rimossi
- I contenuti generati dagli utenti vengono correttamente eseguiti in tutti i contesti
Caratteristiche di Integrazione
- Feed di Attività: I commenti appaiono nella timeline delle attività del progetto
- Ricerca: Il contenuto del commento è ricercabile all'interno del progetto
- Notifiche: Preferenze di notifica configurabili per diversi tipi di commenti
- In Tempo Reale: I commenti appaiono istantaneamente per altri utenti che visualizzano lo stesso record
- Supporto Mobile: I commenti sono completamente supportati nelle applicazioni mobili
Endpoint Correlati
- Elenca Commenti: Interroga i commenti per recuperare commenti esistenti sui record
- Aggiorna Commento: Modifica il contenuto di un commento esistente
- Elimina Commento: Rimuovi commenti con la corretta autorizzazione
- Elenca Record: Interroga i todo per trovare record su cui è possibile commentare