告密者
使用AI代理構建
內部舉報人後端

內部舉報人應用程式後端模板
匿名案件日誌和調查追蹤

一個可投入生產的內部舉報人後端 在 Back4app ,具備匿名日誌、案件狀態追蹤和調查筆記。包括 ER 圖、數據字典、JSON 架構、API 遊樂場和一個AI 代理提示以快速啟動。

主要要點

這個模板提供一個內部吹哨者後端,包括匿名日誌、案件狀態和調查筆記,讓您的團隊能在一個系統中保持受理、分類和跟進。

  1. 匿名日誌受理將報告存儲在 WhistleblowerLog 中,並使用如 reportChannel 和 anonymityFlag 的案件安全字段。
  2. 案件狀態追蹤使用 CaseFile 狀態變更來顯示事項是否為新案件、審查中、升級或已關閉。
  3. 上下文中的調查筆記將 InvestigationNote 條目附加到 CaseFile,以便調查員可以記錄行動、結果和下一步。

概述:內部檢舉人

良好的內部檢舉人衛生意味著審查者可以取樣記錄並立即了解範圍、狀態和下一個必要行動。解決方案是操作性的,不是動機性的。在 Back4app 上使用 Reporter、WhistleblowerLog、CaseFile 和 InvestigationNote 作為結構化合規原語,以便內部檢舉人工作流程在不同地點和班次間保持一致。該架構涵蓋了 Reporter(別名、聯絡方式、後續同意)、WhistleblowerLog(報告渠道、類別、詳情、匿名標誌)、CaseFile(案例編號、狀態、優先級、指派協調人)和 InvestigationNote(案例檔案、備註文本、備註類型、創建者),其中內置身份驗證、匿名接收和案例處理功能。連接您首選的前端,快速交付。

最佳用於:

內部報告平台匿名檢舉人接收案例管理儀表板合規性與調查團隊MVP 發佈團隊選擇 BaaS 以用於敏感報告產品

內部舉報者後端概覽

季節性波動在員工變動時對內部舉報者的影響最大,但數據模型不會隨著新的 SKU、網站或政策而調整。

這個總結幫助團隊圍繞 Reporter、WhistleblowerLog 和 CaseFile 進行定位,讓任何人都可以深入了解 ER 圖或 JSON 匯出。

核心舉報者功能

這個中心中的每一個技術卡片都使用相同的舉報者後端架構,包括 Reporter、WhistleblowerLog、CaseFile 和 InvestigationNote。

舉報者召集

舉報者存儲別名、聯繫方式和後續同意。

匿名日誌

舉報者日誌記錄報告頻道、類別、詳細信息和匿名標誌。

案例狀態追踪

案例檔案保持案例編號、狀態、優先級和指定協調員。

調查筆記

InvestigatingNote 連結 caseFile、noteType、noteText 和 createdBy。

為什麼要使用 Back4app 構建您的內部舉報者後端?

Back4app 為您提供報告者、案例和筆記原語,以便您的團隊可以專注於接收和調查工作流程,而不是基礎設施。

  • CaseFile 和 WhistleblowerLog 在一個模型中: WhistleblowerLog 捕捉匿名詳細信息,而 CaseFile 則持有調查團隊的狀態、優先級和分配。
  • 對敏感筆記進行控制訪問: 可以使用 ACL 和 Cloud Code 驗證將 InvestigationNote 項目限制為協調員和指派的審查員。
  • 即時加上 API 靈活性: 在保持 REST 和 GraphQL 可用於工作人員儀表板和審計工具的同時,使用 Live Queries 處理案件狀態變更。

快速構建並迭代舉報者召集,跨所有平台使用一個後端合同。

核心優勢

一個幫助您從匿名提交轉向案件處理的舉報者後端,而不會失去記錄的踪跡。

更快的接收設定

從完整的 Reporter、WhistleblowerLog、CaseFile 和 InvestigationNote 架構開始,而不是從零開始設計案件表格。

更清晰的狀態交接

使用 CaseFile 狀態和 assignedCoordinator 欄位,讓協調者知道哪些事項是新的、活動的或已關閉的。

受保護的備註處理

限制調查備註的寫入權限給授權的審核人員和調查員。

清除訪問邊界

將匿名日誌內容與報告者聯繫數據分開,並用 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)

準備好複製到 Back4app 或用作實施參考的原始 JSON 模式定義。

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 以便只有批准的協調員能查看限制性細節。
- 只有經過身份驗證的工作人員才能創建或關閉案件檔案項目。使用雲端代碼進行驗證。
- 限制調查備註的讀和寫僅限於指定的審核者和協調員。

身份驗證:
- 註冊、登錄、登出。

行為:
- 提交匿名日誌、列出案件檔案、更新案件狀態,並添加調查備註。

交付:
- Back4app 應用程序,帶有架構、ACL、CLP;用於匿名收集、案件檔案和調查備註的前端。

按下面的按鈕以開放具有此模板提示預填內容的代理。

這是沒有技術後綴的基本提示。您可以之後調整生成的前端堆疊。

幾分鐘內部署每月50段免費提示不需要信用卡

API 遊樂場

對 whistleblower 結構嘗試 REST 和 GraphQL 端點。響應使用模擬數據,並不需要 Back4app 帳戶。

載入遊樂場…

使用與此模板相同的結構。

選擇您的技術

展開每張卡片以查看如何將 Reporter、WhistleblowerLog 和 CaseFile 與您選擇的技術堆疊進行整合。

Flutter 內部舉報者後端

React 內部舉報者後端

React 原生 內部舉報者後端

Next.js 內部舉報者後端

JavaScript 內部舉報者後端

Android 內部舉報者後端

iOS 內部舉報者後端

Vue 內部舉報者後端

Angular 內部舉報者後端

GraphQL 內部舉報者後端

REST API 內部舉報者後端

PHP 內部舉報者後端

.NET 內部舉報者後端

您從每個技術中獲得的內容

每個堆疊都使用相同的舉報者後端架構和 API 合約。

統一的舉報者數據結構

使用一致的架構管理舉報者、匿名日誌、案例文件和調查筆記。

內部舉報的匿名接收

在一個清晰的工作流程中捕獲 reportChannel、類別、詳細信息和匿名標誌。

協調員的案件狀態可見性

保持 caseNumber、狀態和 assignedCoordinator 在團隊中的同步。

對調查員的受控筆記訪問

限制 InvestigationNote 的查看權限給合適的員工,而不暴露後續的詳細信息。

技術比較

比較所有支持的技術的設置速度、SDK 風格和人工智能支持。

框架設置時間舉報人應用程式的好處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 分鐘伺服器端 PHP 工作流程以處理案例。REST API完整
大約 3–7 分鐘.NET 後端用於舉報者操作。類型化 SDK完整

設置時間反映從專案啟動到第一次舉報人日誌或案例查詢使用此模板架構的預期持續時間。

常見問題

有關使用此模板構建內部舉報人後端的常見問題。

當運營跨越多個地點時,哪些內部舉報者控制最重要?
對於可信的內部舉報者記錄,哪些時間戳和參與者是不可談判的?
以結構化的方式為外部審查者導出內部舉報者證據是否可行?
我如何在 Flutter 中顯示案例狀態?
我如何管理 Next.js Server Actions 的內部舉報者訪問?
React Native 能離線快取舉報者日誌嗎?
我如何防止未授權的調查筆記訪問?
在 Android 上顯示案例檔案的最佳方法是什麼?

全球開發者信賴的選擇

加入團隊更快地發佈內部報告產品,使用 Back4app 模板

G2 Users Love Us Badge

準備好建立您的內部舉報者應用程式了嗎?

幾分鐘內開始您的內部舉報者專案。無需信用卡。

選擇技術