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