Информатор
Создайте с AI Agent
Внутренний бэкенд для информатора

Шаблон бэкенда внутреннего информатора
Анонимные журналы дел и отслеживание расследований

Готовый к производству внутренний бэкенд для информаторов на Back4app с анонимными журналами, отслеживанием статуса дел и заметками о расследовании. Включает диаграмму сущностей, словарь данных, схему JSON, тестовую среду API и AI Agent запрос для быстрого начала работы.

Ключевые выносы

Этот шаблон дает вам внутренний бэкэнд для информаторов с анонимными записями, статусом дел и заметками по расследованию, чтобы ваша команда могла вести прием, сортировку и последующее отслеживание в одной системе.

  1. Анонимный прием записейХраните отчеты в WhistleblowerLog с безопасными для дела полями, такими как reportChannel и anonymityFlag.
  2. Отслеживание статуса делИспользуйте изменения статуса CaseFile, чтобы показать, находится ли дело в новом состоянии, на рассмотрении, передано на повышение или закрыто.
  3. Заметки по расследованию в контекстеПрикрепляйте записи InvestigationNote к CaseFile, чтобы следователи могли фиксировать действия, результаты и следующие шаги.

Обзор: Внутренний информатор

Хорошая практика внутреннего информирования означает, что рецензенты могут ознакомиться с записью и сразу понять объем, статус и следующее необходимое действие. Решение носит операционный, а не мотивационный характер. Используйте Reporter, WhistleblowerLog, CaseFile и InvestigationNote как структурированные примитивы соблюдения на Back4app, чтобы рабочие процессы внутренних информаторов оставались последовательными на разных площадках и сменах. Схема охватывает Reporter (псевдоним, способ связи, согласие на последующие контакты), WhistleblowerLog (канал сообщения, категория, детали, флаг анонимности), CaseFile (номер дела, статус, приоритет, назначенный координатор) и InvestigationNote (дело, текст заметки, тип заметки, создано) с авторизацией, анонимным вводом и обработкой дела "встроенными". Подключите ваш предпочтительный фронтенд и отправляйте быстрее.

Лучше всего для:

Порталы внутренней отчетностиАнонимный ввод сообщений работниковПанели управления деламиКоманды соблюдения и расследованийЗапуски MVPКоманды выбирают BaaS для продуктов с чувственной отчетностью

Обзор внутреннего бэкэнда для информаторов

Сезонные колебания сильно ударяют по внутренним информаторам, когда изменяется кадровая ситуация, но модель данных не адаптируется к новым SKU, сайтам или политикам.

Этот обзор ориентирует команды на Reporter, WhistleblowerLog, и CaseFile, прежде чем кто-то углубится в диаграммы ER или экспорт JSON.

Основные функции для сообщателей о нарушениях

Каждая карточка технологии в этом хабе использует одинаковую схему бэкенда для информаторов с Reporter, WhistleblowerLog, CaseFile и InvestigationNote.

Прием информации о сообщателях

Сообщатель хранит псевдоним, контактный метод и согласие на обратную связь.

Анонимные журналы

WhistleblowerLog регистрирует reportChannel, категорию, детали и anonymityFlag.

Отслеживание статуса дела

CaseFile содержит caseNumber, статус, приоритет и assignedCoordinator.

Записи расследования

InvestigationNote связывает caseFile, noteType, noteText и createdBy.

Почему стоит создать ваш внутренний бэкэнд для информаторов с Back4app?

Back4app предоставляет вам примитивы для репортера, дела и заметки, чтобы ваша команда могла сосредоточиться на потоке приема и расследования, а не на инфраструктуре.

  • CaseFile и WhistleblowerLog в одной модели: WhistleblowerLog фиксирует анонимные детали, в то время как CaseFile содержит статус, приоритет и назначения для команды расследования.
  • Контролируемый доступ к конфиденциальным заметкам: Записи InvestigationNote могут быть ограничены только координаторами и назначенными проверяющими с использованием ACL и валидации Cloud Code.
  • Realtime плюс гибкость API: Используйте Live Queries для изменения статуса дела, сохраняя REST и GraphQL доступными для панелей управления и инструментов аудита.

Быстро создавайте и дорабатывайте процессы приема жалоб с помощью одного контракта для всех платформ.

Основные преимущества

Бэкэнд для информаторов, который помогает вам перейти от анонимной подачи заявлений к обработке дел, не теряя из виду записи.

Быстрая настройка приема

Начните с полной схемы Reporter, WhistleblowerLog, CaseFile и InvestigationNote, а не проектируйте таблицы дел с нуля.

Чистая передача статуса

Используйте поля статуса CaseFile и assignedCoordinator, чтобы координаторы знали, какие дела новые, активные или закрыты.

Обработка защищённых заметок

Ограничьте записи InvestigationNote только авторизованным рецензентам и investigatiuon.

Очистить границы доступа

Отделите анонимный контент журналов от контактных данных репортёра и защитите оба с помощью ACL/CLP.

История дел в одном месте

Храните журналы о разоблачителях и записки расследований вместе, чтобы команды проверки могли отслеживать последовательность событий.

AI-ассистируемый начальный этап

Быстро создавайте бэкенд с помощью одного структурированного запроса и получайте инструкции по интеграции.

Готовы запустить ваше приложение для разоблачителей?

Позвольте AI-агенту Back4app создать вашу внутреннюю систему для сообщения о нарушениях и генерировать анонимные журналы, статус дела и заметки по расследованию с одной команды.

Бесплатно для начала — 50 команд для AI-агента в месяц, без необходимости ввода данных кредитной карты

Технический стек

Все включено в этот шаблон внутренней системы для сообщения о нарушениях.

Фронтенд
более 13 технологий
Бэкенд
Back4app
База данных
MongoDB
Аутентификация
Встроенная аутентификация + сессии
API
REST и GraphQL
В реальном времени
Live Queries

ER-диаграмма

Модель взаимосвязей сущностей для внутренней схемы для информаторов.

Смотреть источник диаграммы
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
    }

Поток интеграции

Типичный поток выполнения для аутентификации, intake анонимных журналов, обновлений статуса дел и записей расследования.

Просмотреть источник диаграммы
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

Словарь данных

Полное справочное руководство по каждому полю в схеме информатора.

ПолеТипОписаниеОбязательно
objectIdStringAuto-generated unique identifierАвто
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 timestampАвто
updatedAtDateAuto-generated last-update timestampАвто

8 поля в User

Безопасность и разрешения

Как стратегия ACL и CLP защищает репортеров, анонимные журналы, досье дел и записи расследований.

Контроль конфиденциальности репортера

Обрабатывать contactMethod и consentToFollowUp репортера как ограниченные поля; только утвержденные координаторы могут видеть детали последующих действий.

Целостность анонимного журнала

Только аутентифицированный персонал может создавать или закрывать элементы CaseFile, в то время как заявки WhistleblowerLog могут оставаться анонимными по замыслу.

Ограниченный доступ к расследованию

Ограничить чтение и запись на InvestigationNote и CaseFile для назначенных рецензентов, руководителей по соблюдению норм или координаторов.

Схема (JSON)

Сырая схема JSON, готовая к копированию в Back4app или в качестве ссылочного материала для реализации.

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
        }
      }
    }
  ]
}

Создать с помощью AI-агента

Используйте AI-агента Back4app для создания настоящего внутреннего приложения для информаторов на основе этого шаблона, включая фронтенд, бэкенд, авторизацию и анонимные журналы, статусы дел и потоки заметок об расследованиях.

AI-агент Back4app
Готовы к созданию
Создайте бэкенд внутреннего приложения для информаторов на Back4app с этой точной схемой и поведением.

Схема:
1. Пользователь (используйте встроенный Back4app): имя пользователя, электронная почта, пароль; objectId, createdAt, updatedAt (система).
2. Информатор: псевдоним (строка, обязательно), способ связи (строка), согласие на обратную связь (логическое, обязательно); objectId, createdAt, updatedAt (система).
3. Журнал информатора: информатор (указатель на информатора, необязательно), канал сообщения (строка, обязательно), категория (строка, обязательно), детали (строка, обязательно), признак анонимности (логическое, обязательно), отправлено (дата, обязательно); objectId, createdAt, updatedAt (система).
4. Дело: номер дела (строка, обязательно), журнал (указатель на журнал информатора, обязательно), статус (строка, обязательно), приоритет (строка, обязательно), назначенный координатор (указатель на пользователя, необязательно), открыто (дата, обязательно), закрыто (дата); objectId, createdAt, updatedAt (система).
5. Заметка о расследовании: дело (указатель на дело, обязательно), тип заметки (строка, обязательно), текст заметки (строка, обязательно), создано (указатель на пользователя, обязательно), создано (дата, обязательно); objectId, createdAt, updatedAt (система).

Безопасность:
- Защитите способ связи информатора и согласие на обратную связь. Используйте ACL/CLP, чтобы только утвержденные координаторы могли видеть ограниченные детали.
- Только аутентифицированный персонал может создавать или закрывать элементы дела. Используйте Cloud Code для проверки.
- Ограничьте чтение и записи заметок о расследовании для назначенных рецензентов и координаторов.

Авторизация:
- Регистрация, вход, выход.

Поведение:
- Отправляйте анонимные журналы, просматривайте дела, обновляйте статусы дел и добавляйте заметки о расследованиях.

Доставка:
- Приложение Back4app с схемой, ACL, CLP; фронтенд для анонимного приема, дел и заметок о расследованиях.

Нажмите кнопку ниже, чтобы открыть агента с предварительно заполненным шаблоном.

Это базовый запрос без суффикса технологии. Вы можете адаптировать сгенерированный стек фронтенда позже.

Развертывание за минуты50 бесплатных подсказок в месяцКредитная карта не требуется

API Площадка

Попробуйте REST и GraphQL конечные пункты против схемы информатора. Ответы используют фиктивные данные и не требуют учетной записи Back4app.

Загрузка площадки…

Использует ту же схему, что и этот шаблон.

Выберите вашу технологию

Разверните каждую карточку, чтобы увидеть, как интегрировать Reporter, WhistleblowerLog и CaseFile с вашим выбранным стеком.

Flutter Внутренний информатор Бэкенд

React Внутренний информатор Бэкенд

React Native Внутренний информатор Бэкенд

Next.js Внутренний информатор Бэкенд

JavaScript Внутренний информатор Бэкенд

Android Внутренний информатор Бэкенд

iOS Внутренний информатор Бэкенд

Vue Внутренний информатор Бэкенд

Angular Внутренний информатор Бэкенд

GraphQL Внутренний информатор Бэкенд

REST API Внутренний информатор Бэкенд

PHP Внутренний информатор Бэкенд

.NET Внутренний информатор Бэкенд

Что вы получаете с каждой технологией

Каждый стек использует одну и ту же схему бэкенда и API-контракты для информаторов.

Унифицированная структура данных информаторов

Управляйте репортерами, анонимными записями, делами и заметками по расследованиям с помощью одной консистентной схемы.

Анонимный прием для внутренней отчетности

Запишите reportChannel, категорию, детали и anonymityFlag в чистом рабочем процессе.

Видимость статуса дела для координаторов

Синхронизируйте caseNumber, статус и assignedCoordinator по команде.

Контролируемый доступ к заметкам для расследователей

Ограничьте просмотры InvestigationNote для нужного персонала, не раскрывая детали последующих действий.

Сравнение технологий

Сравните скорость настройки, стиль SDK и поддержку ИИ среди всех поддерживаемых технологий.

ФреймворкВремя настройкиПольза приложения для информаторовТип SDKПоддержка ИИ
Около 5 минутЕдиная кодовая база для приема сообщений информаторов на мобильных и веб-платформах.Набранный SDKПолный
Менее 5 минутБыстрая веб-панель для статуса дел и заметок.Написанный SDKПолный
~3–7 минКросс-платформенное мобильное приложение для анонимных отчетов.Написанный SDKПолный
Быстрая настройка (5 мин)Панель обзора дел, отображаемая на сервере.Написанный SDKПолный
~3–5 минЛегкая интеграция внутренней отчетности.Написанный SDKПолный
Около 5 минНативное приложение Android для анонимного ввода данных.Типизированный SDKПолный
Менее 5 минутНативное приложение iOS для анализа случаев.Типизированный SDKПолный
~3–7 минReact-консоль для сотрудников по делам о негласных информаторах.Типизированный SDKПолный
Быстрая настройка (5 мин)Корпоративная панель управления для расследований.Набранный SDKПолный
Менее 2 минутГибкий GraphQL API для дел о раскрытии информации.GraphQL APIПолный
Быстрая настройка (2 мин)Интеграция REST API для анонимных логов и дел.REST APIПолный
~3 минСерверная сторона PHP рабочего процесса для обработки случаев.REST APIПолный
~3–7 минБэкенд .NET для операций с информаторами.Типизированный SDKПолный

Время настройки отражает ожидаемую продолжительность от начальной настройки проекта до первого журнала информатора или запроса по делу с использованием этой схемы шаблона.

Часто задаваемые вопросы

Общие вопросы о создании внутреннего бекенда для информаторов с помощью этого шаблона.

Какие внутренние контроллирующие механизмы для информаторов наиболее важны, когда операции охватывают несколько мест?
Какие временные метки и участники являются обязательными для достоверных внутренних записей для информаторов?
Практично ли экспортировать внутренние доказательства для внешних экспертов структурированным образом?
Как показать статус дела в Flutter?
Как мне управлять внутренним доступом к информаторам с Next.js Server Actions?
Может ли React Native кэшировать журналы информаторов офлайн?
Как мне предотвратить несанкционированный доступ к заметкам расследования?
Какой лучший способ отображения файлов дел в Android?

Доверяют разработчикам по всему миру

Присоединяйтесь к командам, которые быстрее поставляют внутренние отчётные продукты с помощью шаблонов Back4app

G2 Users Love Us Badge

Готовы создать своё внутреннее приложение для информаторов?

Начните свой внутренний проект для информаторов за считанные минуты. Кредитная карта не требуется.

Выберите технологию