Pular para o conteúdo principal

Status: Approved · v2 · SPEC-DOMAIN-REPORT-001

depends_on: SPEC-DOMAIN-AUTH-001, SPEC-DOMAIN-PERMISSION-001

used_by: IS-MVP-14.1, IS-MVP-14.2, IS-MVP-14.3

Denúncias, moderação e suporte

Registro estruturado para denúncias públicas, solicitações de revisão, reivindicação e privacidade, operado manualmente no MVP.

Objetivo e limites​

Esta especificação define o comportamento canônico do domínio Denúncias, moderação e suporte no RaizFC. Ela deve ser consultada antes de alterar contratos, mocks, endpoints, telas, permissões ou Increment Specifications relacionados.

Incluído no MVP​

  • Denúncia em páginas, posts, mídia e sponsors.
  • Login obrigatório.
  • Motivos padronizados e evidência opcional.
  • Conteúdo permanece visível até decisão, salvo gravidade.
  • Support requests para claim, correção, privacidade e revisão.
  • Operação manual com dados persistidos.

Fora do MVP​

  • Painel admin completo.
  • SLA automatizado.
  • Apelação multinível.
  • Moderação por IA.

Atores e responsabilidades​

AtorResponsabilidade
Usuário autenticadoDenuncia conteúdo/entidade.
SolicitanteAbre claim, revisão ou anonimização.
OperaçãoAnalisa, decide e aplica status.
Gestor afetadoPode receber aviso e responder quando apropriado.

Conceitos canônicos​

Report​

Denúncia sobre alvo público.

Support Request​

Solicitação administrativa do próprio interessado.

Severity​

Sinal de urgência, não decisão automática.

Resolution​

Decisão e ações aplicadas.

Entity Claim​

Pedido de assumir página abandoned/inativa.

Invariantes​

  • Denúncia exige usuário autenticado.
  • Denunciante não decide visibilidade do alvo.
  • Conteúdo grave pode ser ocultado preventivamente por operação.
  • Toda decisão possui actor, motivo e timestamps.
  • Denúncia duplicada do mesmo usuário/alvo/motivo pode ser agregada.
  • Dados do denunciante não são expostos ao denunciado por padrão.
  • Solicitação de privacidade recebe tratamento prioritário e minimização de dados.

Estados​

EstadoSignificadoVisibilidade/efeito
receivedRecebidaAguardando triagem.
under_reviewEm análiseOperação trabalhando.
resolvedResolvidaAção registrada.
rejectedSem procedênciaMotivo registrado.
cancelledCancelada pelo solicitante quando permitidoSem ação.

Transições permitidas​

OrigemAçãoDestinoAutoridadeEfeitos
—submitreceivedUsuárioCria protocolo.
receivedtriageunder_reviewOperaçãoDefine severidade.
under_reviewresolveresolvedOperaçãoAplica ações.
under_reviewrejectrejectedOperaçãoRegistra motivo.
receivedcancelcancelledSolicitanteSomente antes de análise e tipos permitidos.

Permissões​

Permission keyQuem recebe por padrãoAção protegidaAuditoria
report.createUsuário autenticadoDenunciarNão
support.createUsuário/contextualAbrir solicitaçãoNão
moderation.reviewOperaçãoAnalisar/decidirSim
moderation.applyStatusOperaçãoSuspender/mesclar/abandonarSim

Fluxos funcionais​

Denúncia​

  1. Usuário abre menu Denunciar.
  2. Seleciona motivo e descrição; anexa evidência opcional.
  3. Sistema cria protocol e confirma recebimento.
  4. Operação triage e decide.
  5. Alvo só é removido imediatamente em cenário grave por decisão operacional.

Claim de entidade​

  1. Solicitante abre pedido na página abandoned/inactive.
  2. Fornece vínculo e evidência.
  3. Operação verifica histórico e gestores atuais.
  4. Aprovação cria/transfere primary_owner e reativa quando aplicável.

Privacidade de provider convidado​

  1. Pessoa informa contexto suficiente para localizar registro.
  2. Operação valida identidade por canal seguro.
  3. Pode corrigir, associar conta ou anonimizar dados públicos.

Casos-limite e erros​

CenárioComportamento esperadoCódigo/estado
Denúncia duplicadaAgregar/retornar protocolo existenteREPORT_DUPLICATE
Alvo removidoAceitar contexto e informar indisponibilidadeTARGET_NOT_AVAILABLE
Evidência inválidaRejeitar upload, manter denúncia textualINVALID_EVIDENCE
Usuário denuncia a si mesmoPermitir suporte/privacidade, não report genéricoINVALID_REPORT_TARGET
Pedido sem prova suficienteSolicitar complemento ou rejeitarINSUFFICIENT_EVIDENCE

Privacidade e exposição pública​

  • Identidade do denunciante é privada.
  • Evidências têm acesso restrito e retenção definida.
  • Protocolos públicos não expõem detalhes.
  • Solicitações de privacidade minimizam dados e não ficam em logs comuns.

Notificações e auditoria​

  • Confirmação de protocolo.
  • Mudança de status relevante.
  • Solicitação de complemento.
  • Decisão para gestor/solicitante quando permitido.
  • Audit log para toda ação operacional.

API relacionada​

MétodoRotaAcessoFinalidade
POST/api/v1/reportsAutenticadoDenunciar
GET/api/v1/reports/myAutenticadoMinhas denúncias
POST/api/v1/support-requestsContextualSolicitação
GET/api/v1/support-requests/myAutenticadoMinhas solicitações
GET/api/v1/support-requests/:idSolicitanteDetalhe
POST/api/v1/support-requests/:id/cancelSolicitanteCancelar quando permitido
GET/api/v1/admin/reportsOperaçãoPós-MVP/painel
POST/api/v1/admin/reports/:id/resolveOperaçãoDecidir

Contratos compartilhados​

  • ReportDto
  • ReportTargetType
  • ReportReason
  • ReportStatus
  • CreateReportRequest
  • SupportRequestDto
  • SupportRequestType
  • SupportRequestStatus
  • ModerationResolutionDto

Requisitos de UX​

  • Denúncia fica acessível em toda página pública/post/mídia/sponsor.
  • Fluxo curto, com explicação de que denúncia não remove automaticamente.
  • Minhas solicitações mostra protocolo, status e última atualização.
  • Páginas abandoned oferecem reivindicação separada de denúncia.

Comportamento dos mocks​

  • Reports received/under_review/resolved/rejected.
  • Support claim/privacy/correction.
  • Grave com suspensão preventiva.

Critérios de aceite​

  • Login para report.
  • Conteúdo continua visível salvo decisão grave.
  • Protocolo e status.
  • Identidade do denunciante privada.
  • Operação manual suportada.

Testes obrigatórios​

  • Duplicidade.
  • Tipos/alvos.
  • Privacidade.
  • State machine.
  • Claim approval effect.
  • Preventive suspension.

Pós-MVP​

  • Painel admin, SLA, appeal, automações e moderação assistida.

Decisões registradas​

  • MVP persiste dados para operação manual.
  • Abandoned e duplicidade são decisões manuais.
  • Denunciado continua visível até decisão por padrão.

Machine summary​

spec: SPEC-DOMAIN-REPORT-001
domain: Denúncias, moderação e suporte
must_preserve:
- Denúncia exige usuário autenticado.
- Denunciante não decide visibilidade do alvo.
- Conteúdo grave pode ser ocultado preventivamente por operação.
- Toda decisão possui actor, motivo e timestamps.
- Denúncia duplicada do mesmo usuário/alvo/motivo pode ser agregada.
- Dados do denunciante não são expostos ao denunciado por padrão.
- Solicitação de privacidade recebe tratamento prioritário e minimização de dados.
touches:
- contracts
- mocks
- api
- frontend
- backend
- tests
- documentation