Skip to content

Comentários de Revisão - Respostas e Resolver

Funcionalidades

Resolver Comentário

  • Toggle (pode marcar e desmarcar)
  • Apenas autor do comentário + revisores podem resolver
  • Card fica com opacidade reduzida quando resolvido
  • Tag "Resolvido" aparece no card

Respostas (Discussão)

  • Cada comentário pode ter respostas (thread)
  • Badge com contagem de respostas no card
  • Ao clicar, abre drawer por cima do drawer de comentários
  • Qualquer revisor pode responder
  • Respostas podem ser deletadas

Deletar Comentário

  • Ao deletar, cascade nas respostas (backend)
  • Apenas autor + revisores podem deletar
  • Confirmação via popconfirm

API

Endpoints

MétodoEndpointDescrição
DELETE/contracts/:id/review/:contractItemId/comments/:commentIdDeletar comentário (cascade replies)
PATCH/contracts/:id/review/:contractItemId/comments/:commentId/resolveToggle resolved
GET/contracts/:id/review/:contractItemId/comments/:commentId/repliesListar respostas
POST/contracts/:id/review/:contractItemId/comments/:commentId/repliesAdicionar resposta
DELETE/contracts/:id/review/:contractItemId/comments/:commentId/replies/:replyIdDeletar resposta

ReviewComment (atualizado)

json
{
  "id": "uuid",
  "reviewerId": "uuid",
  "name": "Nome",
  "email": "email@example.com",
  "content": "Texto do comentário",
  "selectedText": "Trecho selecionado",
  "resolved": false,
  "repliesCount": 2,
  "createdAt": "2026-03-16T10:00:00Z"
}

CommentReply

json
{
  "id": "uuid",
  "commentId": "uuid",
  "userId": "uuid",
  "name": "Nome",
  "email": "email@example.com",
  "content": "Texto da resposta",
  "createdAt": "2026-03-16T10:05:00Z"
}

Banco de Dados

Tabela: review_comment_replies

CampoTipoDescrição
idUUIDPK
comment_idUUIDFK → review_comments (ON DELETE CASCADE)
user_idUUIDFK → users
contentTEXTConteúdo da resposta
created_atTIMESTAMPData de criação

Alterar tabela review_comments:

sql
ALTER TABLE review_comments
  ADD COLUMN resolved BOOLEAN DEFAULT FALSE;

Permissões

AçãoQuem pode
Resolver/ReabrirAutor do comentário + Revisores
ResponderQualquer revisor
Deletar comentárioAutor do comentário + Revisores
Deletar respostaAutor da resposta