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

Assistente de IA

As respostas são geradas usando IA e podem conter erros.

Como posso ajudá-lo?

Pergunte-me qualquer coisa sobre o Blue ou esta documentação.

Digite para enviar • Shift+Enter para nova linha • ⌘I para abrir