Denunciante
Construir com Agente de IA
Backend de Denúncia Anônima Interno

Modelo de Backend de Aplicativo de Denúncia Anônima Interno
Registros de Casos Anônimos e Acompanhamento de Investigação

Um backend interno de denúncia anônima pronto para produção em Back4app com registros anônimos, acompanhamento de status de casos e notas de investigação. Inclui diagrama ER, dicionário de dados, esquema JSON, playground de API e um prompt de Agente de IA para inicialização rápida.

Principais Conclusões

Este modelo fornece a você um backend interno de denunciante com registros anônimos, status de casos e notas de investigação para que sua equipe possa manter o recebimento, triagem e acompanhamento em um único sistema.

  1. Recebimento de logs anônimosArmazene relatórios no WhistleblowerLog com campos seguros para o caso, como reportChannel e anonymityFlag.
  2. Rastreamento de status do casoUse as mudanças de status do CaseFile para mostrar se um assunto é novo, está em revisão, foi escalado ou está fechado.
  3. Notas de investigação em contextoAnexe entradas de InvestigationNote a um CaseFile para que os investigadores possam registrar ações, resultados e próximos passos.

Visão geral: Denunciante interno

Uma boa higiene de denunciante interno significa que os revisores podem amostrar um registro e entender imediatamente o escopo, status e a próxima ação necessária. A solução é operacional, não motivacional. Use Reporter, WhistleblowerLog, CaseFile e InvestigationNote como primitivas de conformidade estruturadas no Back4app para que os fluxos de trabalho de denunciantes internos permaneçam consistentes entre locais e turnos. O esquema cobre Reporter (alias, contactMethod, consentToFollowUp), WhistleblowerLog (reportChannel, category, details, anonymityFlag), CaseFile (caseNumber, status, priority, assignedCoordinator) e InvestigationNote (caseFile, noteText, noteType, createdBy) com autenticação, coleta anonimizada e gerenciamento de casos integrados. Conecte sua interface preferida e envie mais rápido.

Melhor para:

Portais de relatório internoColeta de denúncias anônimasPainéis de gerenciamento de casosEquipes de conformidade e investigaçõesLançamentos MVPEquipes selecionando BaaS para produtos de relatórios sensíveis

Visão geral do backend para Denunciante Interno

Mudanças sazonais atingem o denunciante interno com mais força quando há alterações na equipe, mas o modelo de dados não se adapta a novos SKUs, locais ou políticas.

Este resumo orienta as equipes sobre Reporter, WhistleblowerLog e CaseFile antes que alguém mergulhe em diagramas de ER ou exportações JSON.

Recursos principais para denunciantes

Cada cartão de tecnologia neste hub utiliza o mesmo esquema de backend para denunciantes com Reporter, WhistleblowerLog, CaseFile e InvestigationNote.

Coleta de denunciantes

O denunciante armazena alias, contactMethod e consentToFollowUp.

Registros anônimos

Os registros do WhistleblowerLog documentam canalDeRelato, categoria, detalhes e bandeiraDeAnonimato.

Acompanhamento de status do caso

O CaseFile mantém númeroDoCaso, status, prioridade e coordenadorAtribuído.

Notas de investigação

InvestigationNote vincula caseFile, noteType, noteText e createdBy.

Por que construir seu backend de Denunciante Interno com Back4app?

Back4app oferece primitivas de reporter, caso e nota para que sua equipe possa se concentrar no fluxo de trabalho de coleta e investigação em vez da infraestrutura.

  • CaseFile e WhistleblowerLog em um único modelo: WhistleblowerLog captura detalhes anônimos, enquanto CaseFile mantém status, prioridade e atribuição para a equipe de investigação.
  • Acesso controlado a notas sensíveis: As entradas da InvestigationNote podem ser limitadas a coordenadores e revisores designados usando validação de ACL e Cloud Code.
  • Flexibilidade da API em tempo real: Use Live Queries para mudanças de status de caso enquanto mantém REST e GraphQL disponíveis para dashboards de funcionários e ferramentas de auditoria.

Construa e itere rapidamente na coleta de denúncias com um único contrato de backend em todas as plataformas.

Benefícios principais

Um backend para denunciantes que ajuda você a passar da submissão anônima para o manuseio de casos sem perder o controle do registro.

Configuração de intake mais rápida

Comece a partir de um esquema completo de Reporter, WhistleblowerLog, CaseFile e InvestigationNote em vez de projetar tabelas de casos do zero.

Transferência de status mais limpa

Use os campos de status de CaseFile e assignedCoordinator para que os coordenadores saibam quais questões são novas, ativas ou fechadas.

Manutenção de notas protegidas

Mantenha as gravações de InvestigationNote limitadas a revisores e investigadores autorizados.

Limitar acessos claramente

Separe o conteúdo do log anônimo dos dados de contato do repórter e proteja ambos com ACL/CLP.

Histórico do caso em um só lugar

Armazene logs de denunciantes e notas de investigação juntas para que as equipes de revisão possam acompanhar a sequência de eventos.

Bootstrap assistido por IA

Gere estruturas de backend e orientações de integração rapidamente com um único prompt estruturado.

Pronto para lançar seu aplicativo de denúncias?

Deixe o agente de IA Back4app criar a estrutura do seu backend de denunciante interno e gerar logs anônimos, status de casos e notas de investigação a partir de um único prompt.

Gratuito para começar — 50 prompts de Agente de IA/mês, sem necessidade de cartão de crédito

Stack Técnico

Tudo incluído neste modelo de backend de denunciante interno.

Frontend
13+ tecnologias
Backend
Back4app
Banco de dados
MongoDB
Autenticação
Autenticação integrada + sessões
API
REST e GraphQL
Tempo real
Live Queries

Diagrama ER

Modelo de relacionamento de entidades para o esquema de backend de denunciantes internos.

Ver fonte do diagrama
Mermaid
erDiagram
    User ||--o{ WhistleblowerCase : "reportedBy"
    User ||--o{ WhistleblowerCase : "assignedTo"
    User ||--o{ InvestigationNote : "author"
    User ||--o{ CaseStatusUpdate : "updatedBy"
    WhistleblowerCase ||--o{ AnonymousLog : "case"
    WhistleblowerCase ||--o{ InvestigationNote : "case"
    WhistleblowerCase ||--o{ CaseStatusUpdate : "case"

    User {
        String objectId PK
        String username
        String email
        String password
        String role
        String fullName
        Date createdAt
        Date updatedAt
    }

    WhistleblowerCase {
        String objectId PK
        String caseNumber
        String title
        String category
        String status
        String priority
        String reportedById FK
        String assignedToId FK
        String anonymousCode
        String summary
        Date createdAt
        Date updatedAt
    }

    AnonymousLog {
        String objectId PK
        String caseId FK
        String message
        String visibility
        Date submittedAt
        String authorCode
        Date createdAt
        Date updatedAt
    }

    InvestigationNote {
        String objectId PK
        String caseId FK
        String authorId FK
        String noteType
        String noteText
        Boolean isInternalOnly
        Date createdAt
        Date updatedAt
    }

    CaseStatusUpdate {
        String objectId PK
        String caseId FK
        String updatedById FK
        String fromStatus
        String toStatus
        String statusComment
        Date updatedAtTime
        Date createdAt
        Date updatedAt
    }

Fluxo de Integração

Fluxo típico de execução para autenticação, recebimento de registros anônimos, atualizações de status de casos e notas de investigação.

Ver fonte do diagrama
Mermaid
sequenceDiagram
  participant User
  participant App as Internal Whistleblower App
  participant Back4app as Back4app Cloud

  User->>App: Sign in as manager or coordinator
  App->>Back4app: POST /login
  Back4app-->>App: Session token

  User->>App: Open case queue
  App->>Back4app: GET /classes/WhistleblowerCase?include=reportedBy,assignedTo&order=-updatedAt
  Back4app-->>App: Case list with status and anonymousCode

  User->>App: Add anonymous log or investigation note
  App->>Back4app: POST /classes/AnonymousLog
  App->>Back4app: POST /classes/InvestigationNote
  Back4app-->>App: Log and note objectIds

  User->>App: Update case status
  App->>Back4app: POST /classes/CaseStatusUpdate
  App->>Back4app: PUT /classes/WhistleblowerCase/:objectId
  Back4app-->>App: Updated case status and timeline

Dicionário de Dados

Referência completa de nível de campo para cada classe no esquema do denunciante.

CampoTipoDescriçãoRequerido
objectIdStringAuto-generated unique identifierAuto
usernameStringUser login name
emailStringUser email address
passwordStringHashed password (write-only)
roleStringUser role such as manager, coordinator, or investigator
fullNameStringDisplay name for internal staff
createdAtDateAuto-generated creation timestampAuto
updatedAtDateAuto-generated last-update timestampAuto

8 campos em User

Segurança e Permissões

Como a estratégia ACL e CLP protege repórteres, logs anônimos, arquivos de caso e notas de investigação.

Controles de privacidade do repórter

Trate o contactMethod do repórter e o consentToFollowUp como campos restritos; apenas coordenadores aprovados podem visualizar os detalhes de acompanhamento.

Integridade do log anônimo

Apenas funcionários autenticados podem criar ou fechar itens de CaseFile, enquanto as submissões de WhistleblowerLog podem permanecer anônimas por design.

Acesso de investigação com escopo

Restringir leituras e gravações em InvestigationNote e CaseFile a revisores designados, líderes de conformidade ou coordenadores.

Esquema (JSON)

Definição de esquema JSON bruta pronta para copiar para Back4app ou usar como referência de implementação.

JSON
{
  "classes": [
    {
      "className": "User",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "username": {
          "type": "String",
          "required": true
        },
        "email": {
          "type": "String",
          "required": true
        },
        "password": {
          "type": "String",
          "required": true
        },
        "role": {
          "type": "String",
          "required": true
        },
        "fullName": {
          "type": "String",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "WhistleblowerCase",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "caseNumber": {
          "type": "String",
          "required": true
        },
        "title": {
          "type": "String",
          "required": true
        },
        "category": {
          "type": "String",
          "required": true
        },
        "status": {
          "type": "String",
          "required": true
        },
        "priority": {
          "type": "String",
          "required": true
        },
        "reportedBy": {
          "type": "Pointer",
          "required": false,
          "targetClass": "User"
        },
        "assignedTo": {
          "type": "Pointer",
          "required": false,
          "targetClass": "User"
        },
        "anonymousCode": {
          "type": "String",
          "required": true
        },
        "summary": {
          "type": "String",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "AnonymousLog",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "case": {
          "type": "Pointer",
          "required": true,
          "targetClass": "WhistleblowerCase"
        },
        "message": {
          "type": "String",
          "required": true
        },
        "visibility": {
          "type": "String",
          "required": true
        },
        "submittedAt": {
          "type": "Date",
          "required": true
        },
        "authorCode": {
          "type": "String",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "InvestigationNote",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "case": {
          "type": "Pointer",
          "required": true,
          "targetClass": "WhistleblowerCase"
        },
        "author": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "noteType": {
          "type": "String",
          "required": true
        },
        "noteText": {
          "type": "String",
          "required": true
        },
        "isInternalOnly": {
          "type": "Boolean",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "CaseStatusUpdate",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "case": {
          "type": "Pointer",
          "required": true,
          "targetClass": "WhistleblowerCase"
        },
        "updatedBy": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "fromStatus": {
          "type": "String",
          "required": true
        },
        "toStatus": {
          "type": "String",
          "required": true
        },
        "statusComment": {
          "type": "String",
          "required": true
        },
        "updatedAtTime": {
          "type": "Date",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    }
  ]
}

Construir com Agente de IA

Use o agente de IA Back4app para gerar um aplicativo interno de denunciantes real a partir deste modelo, incluindo frontend, backend, autenticação, e fluxos de log anônimo, status do caso e notas de investigação.

Agente de IA Back4app
Pronto para construir
Crie um backend de aplicativo interno de denunciantes no Back4app com este esquema e comportamento exatos.

Esquema:
1. Usuário (use o Back4app embutido): nome de usuário, e-mail, senha; objectId, createdAt, updatedAt (sistema).
2. Reporter: alias (String, obrigatório), contactMethod (String), consentToFollowUp (Boolean, obrigatório); objectId, createdAt, updatedAt (sistema).
3. WhistleblowerLog: reporter (Ponteiro para Reporter, opcional), reportChannel (String, obrigatório), category (String, obrigatório), details (String, obrigatório), anonymityFlag (Boolean, obrigatório), submittedAt (Data, obrigatório); objectId, createdAt, updatedAt (sistema).
4. CaseFile: caseNumber (String, obrigatório), log (Ponteiro para WhistleblowerLog, obrigatório), status (String, obrigatório), priority (String, obrigatório), assignedCoordinator (Ponteiro para Usuário, opcional), openedAt (Data, obrigatório), closedAt (Data); objectId, createdAt, updatedAt (sistema).
5. InvestigationNote: caseFile (Ponteiro para CaseFile, obrigatório), noteType (String, obrigatório), noteText (String, obrigatório), createdBy (Ponteiro para Usuário, obrigatório), createdAt (Data, obrigatório); objectId, createdAt, updatedAt (sistema).

Segurança:
- Proteja contactMethod e consentToFollowUp do Reporter. Use ACL/CLP para que apenas coordenadores aprovados possam visualizar detalhes restritos.
- Apenas funcionários autenticados podem criar ou fechar itens de CaseFile. Use Cloud Code para validação.
- Restringir leituras e escritos em InvestigationNote aos revisores e coordenadores designados.

Autenticação:
- Inscrever-se, fazer login, sair.

Comportamento:
- Enviar logs anônimos, listar arquivos de casos, atualizar status do caso e adicionar notas de investigação.

Entregar:
- Aplicativo Back4app com esquema, ACLs, CLPs; frontend para intake anônimo, arquivos de casos e notas de investigação.

Pressione o botão abaixo para abrir o Agente com este prompt de modelo pré-preenchido.

Este é o prompt base sem um sufixo de tecnologia. Você pode adaptar a pilha de frontend gerada depois.

Implante em minutos50 prompts gratuitos / mês Nenhum cartão de crédito necessário

API Playground

Experimente os endpoints REST e GraphQL com o esquema do denunciante. As respostas usam dados fictícios e não requerem uma conta Back4app.

Carregando playground…

Usa o mesmo esquema que este modelo.

Escolha Sua Tecnologia

Expanda cada cartão para ver como integrar Reporter, WhistleblowerLog e CaseFile com sua pilha escolhida.

Flutter Backend de Denunciante Interno

React Backend de Denunciante Interno

React Nativo Backend de Denunciante Interno

Next.js Backend de Denunciante Interno

JavaScript Backend de Denunciante Interno

Android Backend de Denunciante Interno

iOS Backend de Denunciante Interno

Vue Backend de Denunciante Interno

Angular Backend de Denunciante Interno

GraphQL Backend de Denunciante Interno

REST API Backend de Denunciante Interno

PHP Backend de Denunciante Interno

.NET Backend de Denunciante Interno

O que você ganha com cada tecnologia

Todo stack usa o mesmo esquema de backend e contratos de API para denunciantes.

Estrutura de dados unificada para denunciantes

Gerencie denunciantes, registros anônimos, arquivos de casos e anotações de investigação com um esquema consistente.

Recepção anônima para relatórios internos

Capturar reportChannel, categoria, detalhes e anonymityFlag em um fluxo de trabalho limpo.

Visibilidade do status do caso para coordenadores

Mantenha caseNumber, status e assignedCoordinator sincronizados em toda a equipe.

Acesso controlado a anotações para investigadores

Limite as visualizações de InvestigationNote para a equipe certa sem expor detalhes de acompanhamento.

Comparação de Tecnologia

Compare a velocidade de configuração, o estilo do SDK e o suporte a IA entre todas as tecnologias suportadas.

FrameworkTempo de ConfiguraçãoBenefício do App de DenuncianteTipo de SDKSuporte a IA
Cerca de 5 minBase de código única para coleta de denúncias em dispositivos móveis e na web.SDK DigitadoCompleto
Menos de 5 minutosPainel da web rápido para status e notas do caso.SDK DigitadoCompleto
~3–7 minAplicativo móvel multiplataforma para relatórios anônimos.SDK DigitadoCompleto
Configuração rápida (5 min)Painel de revisão de caso renderizado no servidor.SDK DigitadoCompleto
~3–5 minIntegração leve de relatório interno.SDK DigitadoCompleto
Cerca de 5 minAplicativo nativo Android para entrada de logs anônimos.SDK tipadoCompleto
Menos de 5 minutosAplicativo nativo iOS para revisão de casos.SDK tipadoCompleto
~3–7 minConsole de equipe Reactive para casos de denunciantes.SDK tipadoCompleto
Configuração rápida (5 min)Painel corporativo para investigações.SDK digitadoCompleto
Menos de 2 minAPI flexível GraphQL para casos de denunciantes.API GraphQLCompleto
Configuração rápida (2 min)Integração REST API para registros e casos anônimos.REST APICompleto
~3 minFluxo de trabalho do PHP no lado do servidor para tratamento de casos.REST APICompleto
~3–7 minBackend do .NET para operações de denúncia.SDK TipadoCompleto

O tempo de configuração reflete a duração esperada desde o início do projeto até o primeiro registro de denunciante ou consulta de caso usando este esquema de template.

Perguntas Frequentes

Perguntas comuns sobre como construir um backend interno de delação com este modelo.

Quais controles internos de denunciantes são mais importantes quando as operações abrangem vários locais?
Quais timestamps e atores são não-negociáveis para registros internos de denunciantes credíveis?
É prático exportar evidências internas de denunciantes para avaliadores externos de forma estruturada?
Como posso mostrar o status do caso no Flutter?
Como gerencio o acesso interno de denunciantes com Next.js Server Actions?
O React Native pode armazenar em cache os logs de denunciantes offline?
Como posso evitar o acesso não autorizado a notas de investigação?
Qual é a melhor maneira de exibir arquivos de casos no Android?

Confiado por desenvolvedores em todo o mundo

Junte-se a equipes que estão lançando produtos de relatórios internos mais rápido com os templates do Back4app

G2 Users Love Us Badge

Pronto para construir seu aplicativo interno de denúncias?

Inicie seu projeto interno de denúncias em minutos. Nenhum cartão de crédito necessário.

Escolha a Tecnologia