Geek Social — Documentação
Módulos

Reports

Denúncias de conteúdo abusivo em 5 superfícies (user, message, post, collection, conversation).

Visão geral

Sistema de denúncias do Geek Social. Cobre 5 superfícies:

  • user — perfil/comportamento de outro usuário
  • message — mensagem específica de chat
  • post — post no feed
  • collection — coleção (conteúdo inadequado, NSFW)
  • conversation — conversa inteira (chat de grupo abusivo)

Sem moderação automatizada — admin vê dashboard de pendentes e marca como reviewed ou dismissed manualmente. Pendência: integração com Linear/issue tracker.

Entidades principais

TabelaPapel
reportsDenúncia com targetType polimórfico

Endpoints

1 endpoint público:

EndpointResumo
POST /reportsCriar denúncia

Endpoints admin (não documentados aqui ainda — protegidos por flag de role admin no JWT, plano futuro).

Fluxos

Denunciar conteúdo

Validação polimórfica

Lifecycle

Eventos de socket

Sem eventos. Reports é fluxo silencioso (não notifica o reporter quando admin processa, hoje).

Edge cases e regras especiais

  • Unique por reporter+target — denúncia duplicada do mesmo user pro mesmo conteúdo retorna conflict; previne spam.
  • description opcional mas recomendado pra other (admin precisa entender contexto).
  • target_id polimórfico sem FK — ao apagar conteúdo, denúncia continua existindo com referência inválida. Admin lida na UI ("conteúdo já removido").
  • 5 superfícies fixas no enum — adicionar nova requer migration (ALTER TYPE report_target_type ADD VALUE).
  • 5 razões fixas: spam | harassment | nsfw | hate | other. Critério editorial — adicionar novas é mudança de produto.
  • Sem flow de notificação ao denunciado — preserva privacidade do reporter.
  • Self-report bloqueado? Não enforced. User pode denunciar a si mesmo (raro, sem efeito prático).

Dependências entre módulos

  • Polimorfismo via target_type/target_id — touches users, messages, posts, collections, conversations
  • Sem dependência outbound — reports não dispara nada além de INSERT

On this page