举报者
与AI代理一起构建
内部吹哨者后端

内部吹哨者应用程序后端模板
匿名案件日志和调查跟踪

一个生产就绪的内部吹哨者后端,运行在Back4app上,具有匿名日志、案件状态跟踪和调查备注。包括ER图、数据字典、JSON模式、API实验室,以及一个AI代理提示,用于快速Bootstrap。

关键要点

此模板为您提供一个带有匿名日志、案件状态和调查笔记的内部举报人后端,以便您的团队可以在一个系统中进行初步接收、分类和后续跟进。

  1. 匿名日志接收将报告存储在WhistleblowerLog中,包含如reportChannel和anonymityFlag等案件安全字段。
  2. 案件状态跟踪使用CaseFile状态更改显示事项是新建、审查中、升级或已关闭。
  3. 上下文中的调查笔记将InvestigationNote条目附加到CaseFile,以便调查人员可以记录行动、结果和后续步骤。

概述:内部举报者

良好的内部举报者卫生意味着审查员可以抽样记录并立即了解范围、状态和下一个所需的行动。解决方案是操作性的,而不是激励性的。在Back4app上使用Reporter、WhistleblowerLog、CaseFile和InvestigationNote作为结构化合规基本元素,以保持内部举报者工作流程在不同地点和班次之间的一致性。该模式涵盖Reporter(别名、联系方法、同意后续跟进)、WhistleblowerLog(报告渠道、类别、详细信息、匿名标志)、CaseFile(案件编号、状态、优先级、指定协调员)和InvestigationNote(案件文件、备注文本、备注类型、创建者),并内置了授权、匿名接纳和案件处理。连接您首选的前端,快速交付。

最佳适用:

内部报告门户匿名举报者接纳案件管理仪表板合规和调查团队MVP发布团队选择 BaaS 进行敏感报告产品

内部举报者后端概述

当人员变动但数据模型无法适应新 SKU、站点或政策时,季节性波动对内部举报者的冲击最为严重。

此摘要帮助团队在任何人深入 ER 图或 JSON 导出之前,围绕 Reporter、WhistleblowerLog 和 CaseFile 进行定位。

核心举报人功能

此中心中的每个技术卡片都使用相同的举报人后端架构,包括举报人、举报日志、案例文件和调查笔记。

举报人录入

举报人存储别名、联系方法和同意后续联系。

匿名日志

WhistleblowerLog记录reportChannel、category、details和anonymityFlag。

案件状态跟踪

CaseFile保存caseNumber、status、priority和assignedCoordinator。

调查笔记

调查笔记链接案例文件、笔记类型、笔记文本和创建者。

为什么使用 Back4app 构建您的内部举报者后端?

Back4app 为您提供报告者、案件和备注原语,使您的团队可以专注于接收和调查工作流程,而不是基础设施。

  • CaseFile 和 WhistleblowerLog 在一个模型中: WhistleblowerLog 捕获匿名细节,而 CaseFile 持有调查团队的状态、优先级和分配信息。
  • 受控访问敏感笔记: 调查笔记条目可以通过 ACL 和 Cloud Code 验证限制为协调员和指定审阅者。
  • 实时加上 API 灵活性: 在保持 REST 和 GraphQL 可用于员工仪表板和审计工具的同时,使用 Live Queries 处理案件状态变更。

利用一个后端合同在每个平台上快速构建和迭代举报人录入。

核心优势

一个举报人后端,帮助您从匿名提交转向案例处理,而不失去记录的踪迹。

更快的接收设置

从完整的举报人、举报日志、案例文件和调查笔记架构开始,而不是从零设计案例表。

更干净的状态交接

使用案例文件状态和分配协调员字段,以便协调员知道哪些事项是新的、活跃的或已关闭的。

受保护的备注处理

限制调查备注的写入权限,仅限授权审查员和调查人员。

清除访问边界

将匿名日志内容与报告者联系数据分开,并通过 ACL/CLP 保护两者。

一个地方的案件历史

将举报者日志和调查备注存储在一起,以便审查团队可以跟随事件的顺序。

AI辅助引导

使用一个结构化提示快速生成后台脚手架和集成指导。

准备好发布您的举报者应用程序了吗?

让 Back4app AI 代理构建您的内部举报后端,并从一个提示生成匿名日志、案件状态和调查笔记。

免费启动 — 每月 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
    }

集成流程

进行身份验证、匿名日志接收、案件状态更新和调查笔记的典型运行流程。

查看图表源
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策略如何保护报告者、匿名日志、案卷和调查笔记。

报告者隐私控制

将报告者的联系方法和后续跟进的同意视为受限字段;只有获得批准的协调员可以查看后续详情。

匿名日志完整性

只有经过身份验证的工作人员可以创建或关闭案卷项,而举报者日志提交可以设计为匿名。

限制调查访问

限制对调查笔记和案卷的读取和写入,仅限于指定的审阅者、合规负责人或协调员。

架构(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代理一起构建

使用Back4app AI代理从此模板生成真实的内部举报者应用,包括前端、后端、认证、匿名日志、案件状态和调查备注流程。

Back4app AI代理
准备好构建
在Back4app上创建一个内部举报者应用后端,使用此确切的架构和行为。

架构:
1. 用户(使用Back4app内置):用户名,电子邮件,密码;objectId,createdAt,updatedAt(系统)。
2. 举报人:别名(字符串,必填),联系方式(字符串),同意跟进(布尔,必填);objectId,createdAt,updatedAt(系统)。
3. 举报日志:举报人(指向举报人的指针,可选),报告渠道(字符串,必填),类别(字符串,必填),详情(字符串,必填),匿名标志(布尔,必填),提交时间(日期,必填);objectId,createdAt,updatedAt(系统)。
4. 案件档案:案件编号(字符串,必填),日志(指向举报日志的指针,必填),状态(字符串,必填),优先级(字符串,必填),指定协调员(指向用户的指针,可选),开启时间(日期,必填),关闭时间(日期);objectId,createdAt,updatedAt(系统)。
5. 调查备注:案件档案(指向案件档案的指针,必填),备注类型(字符串,必填),备注文本(字符串,必填),创建者(指向用户的指针,必填),创建时间(日期,必填);objectId,createdAt,updatedAt(系统)。

安全:
- 保护举报人的联系方式和同意跟进。使用ACL/CLP,只有获得批准的协调员才能查看限制性细节。
- 只有经过身份验证的工作人员可以创建或关闭案件档案项。使用云代码进行验证。
- 限制对调查备注的读取和写入,仅限于指定的审阅者和协调员。

认证:
- 注册、登录、注销。

行为:
- 提交匿名日志、列出案件档案、更新案件状态和添加调查备注。

交付:
- 带架构、ACL、CLP的Back4app应用;用于匿名处理、案件档案和调查备注的前端。

按下面的按钮打开带有此模板提示预填充的代理。

这是没有技术后缀的基本提示。您可以在之后调整生成的前端堆栈。

在几分钟内部署每月50个免费提示无需信用卡

API 演示

尝试 REST 和 GraphQL 端点,与举报者架构进行交互。响应使用模拟数据,不需要 Back4app 账户。

加载游乐场…

使用与此模板相同的架构。

选择您的技术

展开每个卡片以查看如何将 Reporter、WhistleblowerLog 和 CaseFile 集成到您选择的技术栈中。

Flutter 内部举报人后台

React 内部举报人后台

React 原生 内部举报人后台

Next.js 内部举报人后台

JavaScript 内部举报人后台

Android 内部举报人后台

iOS 内部举报人后台

Vue 内部举报人后台

Angular 内部举报人后台

GraphQL 内部举报人后台

REST API 内部举报人后台

PHP 内部举报人后台

.NET 内部举报人后台

每种技术都可以获得的内容

每个堆栈都使用相同的举报者后端架构和 API 合同。

统一的举报者数据结构

通过一个一致的架构管理举报者、匿名日志、案件文件和调查备注。

用于内部举报的匿名接收

在一个简洁的工作流程中捕获 reportChannel、类别、详细信息和 anonymityFlag。

协调员的案件状态可见性

保持 caseNumber、状态和 assignedCoordinator 在团队中的同步。

对调查员的受控备注访问

限制调查备注的查看权限,只向合适的工作人员展示,而不暴露后续细节。

技术比较

比较所有支持的技术的设置速度、SDK 风格和 AI 支持。

框架设置时间举报者应用优势SDK 类型AI 支持
大约 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分钟服务器端 __品牌0__ 案件处理工作流。__品牌0__完整
~3–7分钟__品牌0__ 用于举报操作的后端。输入型SDK完整

设置时间反映了从项目启动到使用此模板架构的第一个举报日志或案例查询的预期持续时间。

常见问题

关于使用此模板构建内部举报人后端的常见问题。

在运营跨多个站点时,哪些内部举报人控制最重要?
哪些时间戳和行为者对于可信的内部举报人记录是不可谈判的?
以结构化方式将内部举报人证据导出给外部审阅者是否实用?
我如何在 Flutter 中显示案例状态?
我如何使用 Next.js Server Actions 管理内部举报者访问?
React Native 可以离线缓存举报者日志吗?
我如何防止未经授权的调查备注访问?
在 Android 上显示案例文件的最佳方法是什么?

受到全球开发者的信任

通过 __品牌0__ 模板加入更快推出内部报告产品的团队

G2 Users Love Us Badge

准备好构建您的内部举报应用程序了吗?

在几分钟内启动您的内部举报项目。无需信用卡。

选择技术