Adicione comentários a registros (tarefas) no Blue com conteúdo de texto rico, anexos de arquivos e @menções.
Adicionar Comentário
A mutação createComment permite que você adicione comentários a registros no Blue. Os comentários suportam conteúdo HTML rico, anexos de arquivos, @menções e são integrados automaticamente com o feed de atividades e o sistema de notificações.
Exemplo Básico
Adicione um comentário de texto simples a um registro:
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
}
}
}
Exemplo Avançado
Adicione um comentário com formatação rica, imagens e processamento do 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
}
}
Parâmetros de Entrada
CreateCommentInput
Parâmetro | Tipo | Necessário | Descrição |
---|---|---|---|
html |
String! | ✅ Sim | Conteúdo HTML do comentário (será sanitizado para segurança) |
text |
String! | ✅ Sim | Versão em texto simples do conteúdo do comentário |
category |
CommentCategory! | ✅ Sim | Tipo de entidade comentada (use TODO para registros) |
categoryId |
String! | ✅ Sim | ID da entidade (registro) comentada |
tiptap |
Boolean | Não | Ativar sanitização e processamento HTML específicos do editor TipTap |
Valores de CommentCategory
Valor | Descrição |
---|---|
TODO |
Comentário sobre um item de registro/tarefa |
DISCUSSION |
Comentário sobre um tópico de discussão |
STATUS_UPDATE |
Comentário sobre uma atualização de status |
Campos de Resposta
A mutação retorna um objeto Comment com detalhes abrangentes:
Campo | Tipo | Descrição |
---|---|---|
id |
ID! | Identificador único para o comentário |
uid |
String! | Identificador único alternativo |
html |
String! | Conteúdo HTML do comentário |
text |
String! | Versão em texto simples do comentário |
category |
CommentCategory! | Tipo de entidade comentada |
createdAt |
DateTime! | Quando o comentário foi criado |
updatedAt |
DateTime! | Quando o comentário foi atualizado pela última vez |
deletedAt |
DateTime | Quando o comentário foi excluído (nulo se ativo) |
deletedBy |
User | Usuário que excluiu o comentário |
user |
User! | Usuário que criou o comentário |
activity |
Activity | Registro de atividade associado |
discussion |
Discussion | Discussão associada (se a categoria for DISCUSSÃO) |
statusUpdate |
StatusUpdate | Atualização de status associada (se a categoria for ATUALIZAÇÃO_DE_STATUS) |
todo |
Todo | Registro associado (se a categoria for TAREFA) |
isRead |
Boolean | Se o usuário atual leu este comentário |
isSeen |
Boolean | Se o usuário atual viu este comentário |
aiSummary |
Boolean | Se este comentário foi gerado por IA |
Permissões Necessárias
Os usuários devem ter acesso apropriado ao projeto para comentar em registros:
Nível de Acesso | Pode Adicionar Comentários |
---|---|
OWNER |
✅ Sim |
ADMIN |
✅ Sim |
MEMBER |
✅ Sim |
CLIENT |
✅ Sim |
COMMENT_ONLY |
✅ Sim |
VIEW_ONLY |
❌ Não |
Importante: O usuário deve ser membro do projeto que contém o registro e NÃO deve ter nível de acesso VIEW_ONLY
.
Respostas de Erro
UnauthorizedError
{
"errors": [{
"message": "You don't have permission to comment on this record",
"extensions": {
"code": "FORBIDDEN"
}
}]
}
Quando: O usuário não tem permissão para comentar no registro/entidade especificado.
ValidationError
{
"errors": [{
"message": "Invalid input parameters",
"extensions": {
"code": "BAD_USER_INPUT"
}
}]
}
Quando: Campos obrigatórios estão ausentes ou contêm dados inválidos.
CommentNotFoundError
{
"errors": [{
"message": "Record not found",
"extensions": {
"code": "COMMENT_NOT_FOUND"
}
}]
}
Quando: O categoryId
especificado não corresponde a um registro existente.
UserInputError
{
"errors": [{
"message": "Content validation failed",
"extensions": {
"code": "BAD_USER_INPUT"
}
}]
}
Quando: O conteúdo HTML falha na sanitização ou contém código malicioso.
Notas Importantes
Processamento de Conteúdo
- Sanitização de HTML: Todo o conteúdo HTML é automaticamente sanitizado para prevenir ataques XSS
- Extração de Arquivos: Imagens e anexos incorporados em HTML são extraídos e armazenados no S3
- Modo TipTap: Quando
tiptap: true
, usa sanitização especializada para conteúdo do editor TipTap - @Menções: Menções de usuários em comentários são processadas automaticamente e acionam notificações
Considerações de Desempenho
- Comentários são indexados para pesquisa automaticamente
- Anexos de imagem grandes são processados de forma assíncrona
- Cada comentário cria um registro de atividade para a linha do tempo do projeto
Efeitos Colaterais
Adicionar um comentário aciona vários processos automatizados:
- Criação de Atividade: Cria um registro de atividade visível na linha do tempo do projeto
- Indexação de Pesquisa: O conteúdo do comentário é adicionado ao índice de pesquisa do projeto
- Notificações: Envia notificações por e-mail, push e no aplicativo para usuários relevantes
- Atualizações em Tempo Real: Publica o comentário para assinaturas GraphQL para atualizações ao vivo
- Webhooks: Aciona webhook externo se configurado para o projeto
- Processamento de @Menção: Processa menções de usuários e envia notificações direcionadas
- Processamento de Arquivos: Extrai e processa quaisquer imagens ou arquivos incorporados do conteúdo HTML
Segurança do Conteúdo
- Todo HTML é sanitizado usando bibliotecas padrão da indústria
- Uploads de arquivos são validados quanto ao tipo e tamanho
- Conteúdo malicioso é automaticamente removido
- Conteúdo gerado pelo usuário é escapado corretamente em todos os contextos
Recursos de Integração
- Feed de Atividades: Comentários aparecem na linha do tempo de atividades do projeto
- Pesquisa: O conteúdo do comentário é pesquisável dentro do projeto
- Notificações: Preferências de notificação configuráveis para diferentes tipos de comentários
- Tempo Real: Comentários aparecem instantaneamente para outros usuários visualizando o mesmo registro
- Suporte Móvel: Comentários são totalmente suportados em aplicativos móveis
Endpoints Relacionados
- Listar Comentários: Consultar comentários para recuperar comentários existentes em registros
- Atualizar Comentário: Modificar o conteúdo de um comentário existente
- Excluir Comentário: Remover comentários com autorização adequada
- Listar Registros: Consultar tarefas para encontrar registros que podem ser comentados