告発者
AIエージェントで構築
内部通報者バックエンド

内部通報者アプリバックエンドテンプレート
匿名ケースログと調査追跡

生産準備が整った内部通報者バックエンドがBack4appで利用可能で、匿名ログ、ケースステータスの追跡、調査ノートを含みます。ERダイアグラム、データ辞書、JSONスキーマ、APIプレイグラウンド、および迅速なブートストラップのためのAIエージェントプロンプトが含まれています。

主なポイント

このテンプレートでは、匿名ログ、ケース状況、および調査ノートを備えた内部告発者バックエンドを提供し、チームが1つのシステムでインテーク、トリアージ、フォローアップを維持できます。

  1. 匿名ログのインテークreportChannelやanonymityFlagなどのケースセーフフィールドを使用してWhistleblowerLogに報告を保存します。
  2. ケース状況の追跡CaseFileの状況変更を使用して、問題が新しいか、レビュー中か、エスカレーションされているか、または閉じられているかを示します。
  3. 文脈内の調査ノート調査者がアクション、結果、次のステップを記録できるように、InvestigationNoteエントリーをCaseFileに添付します。

概要:内部告発者

内部告発者の良好な管理は、レビュアーが記録をサンプリングし、範囲、ステータス、次に必要なアクションを即座に理解できることを意味します。解決策は運用上のものであり、動機付けではありません。Back4appで内部告発者のワークフローがサイトやシフト全体で一貫性を保つために、Reporter、WhistleblowerLog、CaseFile、InvestigationNoteを構造化されたコンプライアンスの要素として使用してください。このスキーマは、Reporter(エイリアス、連絡方法、フォローアップへの同意)、WhistleblowerLog(報告チャネル、カテゴリ、詳細、匿名フラグ)、CaseFile(ケース番号、ステータス、優先度、割り当てられたコーディネーター)、InvestigationNote(ケースファイル、ノートテキスト、ノートタイプ、作成者)をカバーしており、認証、匿名化された情報収集、ケース処理が組み込まれています。お好みのフロントエンドを接続して、より迅速に出荷してください。

ベスト:

内部報告ポータル匿名の内部告発者情報の収集ケース管理ダッシュボードコンプライアンスおよび調査チームMVPの立ち上げ機密報告製品のために BaaS を選択するチーム

内部告発者バックエンドの概要

季節の変動は、スタッフの変更時に内部告発者に最も影響を与えますが、データモデルは新しい SKU、サイト、またはポリシーに合わせて柔軟に変更されません。

この要約は、チームが Reporter、WhistleblowerLog、CaseFile の周りを理解するのを助け、生の ER 図や JSON エクスポートに飛び込む前にサポートします。

コアのWhistleblower機能

このハブ内のすべてのテクノロジーカードは、Reporter、WhistleblowerLog、CaseFile、及びInvestigationNoteを使用した同じ内部告発者バックエンドスキーマを使用しています。

報告者の受け入れ

報告者は、エイリアス、連絡方法、フォローアップへの同意を保存します。

匿名ログ

WhistleblowerLog は reportChannel、category、details、及び anonymityFlag を記録します。

ケースステータストラッキング

CaseFile は caseNumber、status、priority、及び assignedCoordinator を保持します。

調査ノート

InvestigationNoteはcaseFile、noteType、noteText、そしてcreatedByをリンクします。

Back4app で内部告発者バックエンドを構築する理由は?

Back4app は、レポーター、ケース、メモのプリミティブを提供するため、チームはインフラストラクチャではなく、取り込みと調査のワークフローに集中できます。

  • 1 つのモデルの中の CaseFile と WhistleblowerLog: WhistleblowerLog は匿名の詳細をキャプチャし、CaseFile は調査チームのためのステータス、優先度、および割り当てを保持します。
  • 機密ノートへの制御されたアクセス: InvestigationNoteのエントリは、ACLとCloud Code検証を使用してコーディネーターと割り当てられたレビュアーに制限できます。
  • Realtime plus APIの柔軟性: ケースステータスの変更にはLive Queriesを使用し、スタッフダッシュボードや監査ツールのためにRESTとGraphQLを利用可能にします。

すべてのプラットフォームで1つのバックエンド契約を使って、 whistleblower intakeを迅速に構築し、反復します。

主な利点

匿名の提出からケース処理に移行するのを助ける内部告発者バックエンドで、記録を失うことはありません。

より迅速な受付設定

ケーステーブルをゼロから設計するのではなく、完全なReporter、WhistleblowerLog、CaseFile、及びInvestigationNoteスキーマから始めます。

よりクリーンなステータス引き継ぎ

CaseFileステータスとassignedCoordinatorフィールドを使用して、コーディネーターがどの案件が新しい、アクティブ、または終了しているかを把握できます。

保護されたノートの取り扱い

調査ノートの記述は、承認されたレビューアと調査者のみに制限しておく。

アクセス境界を明確に

匿名のログ内容を報告者の連絡データから分離し、両方ともACL/CLPで保護する。

1か所にケース履歴を

内部告発者のログと調査ノートを一緒に保存し、レビュー チームが出来事の流れを追えるようにする。

AI支援のブートストラップ

1つの構造化されたプロンプトで、バックエンドのスキャフォールディングと統合ガイダンスを迅速に生成する。

内部告発者アプリを起動する準備はできましたか?

あなたの内部告発者バックエンドを構築し、1つのプロンプトから匿名のログ、ケースの状況、調査ノートを生成するために 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戦略が報告者、匿名ログ、ケースファイル、調査ノートをどのように保護するか。

報告者プライバシーコントロール

報告者のcontactMethodとconsentToFollowUpを制限フィールドとして扱います; 承認されたコーディネーターのみがフォローアップの詳細を表示できます。

匿名ログの完全性

認証されたスタッフのみがCaseFile項目を作成または閉じることができ、WhistleblowerLogの提出はデザイン上匿名のままにできます。

スコープ化された調査アクセス

InvestigationNoteとCaseFileへの読み書きを割り当てられた審査者、コンプライアンスリード、またはコーディネーターに制限します。

スキーマ(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を使用して、承認されたコーディネーターのみが制限された詳細を表示できるようにします。
- 認証されたスタッフのみがケースファイル項目を作成または閉じることができます。バリデーションにはCloud Codeを使用します。
- 調査ノートへの読み取りおよび書き込みを割り当てられたレビュワーとコーディネーターに制限します。

認証:
- サインアップ、ログイン、ログアウト。

動作:
- 匿名ログの提出、ケースファイルの一覧、ケースステータスの更新、調査ノートの追加。

提供:
- スキーマ、ACL、CLPを持つBack4appアプリ;匿名の intake、ケースファイル、調査ノート用のフロントエンド。

以下のボタンを押して、このテンプレートプロンプトが事前に入力された状態でエージェントを開いてください。

これはテクノロジーサフィックスのない基本プロンプトです。生成されたフロントエンドスタックは後で適応できます。

数分でデプロイ月に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、category、details、およびanonymityFlagをキャプチャします。

コーディネーターのためのケースステータスの可視性

ケース番号、ステータス、および割り当てられたコーディネーターをチーム全体で同期させます。

調査者のための制御されたノートアクセス

調査ノートの表示を適切なスタッフに制限し、フォローアップの詳細を公開しません。

テクノロジー比較

すべてのサポートされているテクノロジーにわたって、セットアップ速度、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分ケース処理のためのサーバーサイド PHP ワークフロー。REST APIフル
約3–7分内部告発操作のための .NET バックエンド。型指定されたSDKフル

設定時間は、このテンプレートスキーマを使用したプロジェクトのブートストラップから初めての内部告発者ログまたはケースクエリまでの予想される期間を反映しています。

よくある質問

このテンプレートを使用して内部告発者バックエンドを構築する際の一般的な質問。

複数のサイトにまたがるオペレーションの際、どの内部告発者の管理が最も重要ですか?
信頼性のある内部告発者記録に対して、どのタイムスタンプとアクターが譲れませんか?
内部告発者の証拠を外部のレビュアー向けに構造化された方法でエクスポートすることは実用的ですか?
どのようにして Flutter でケースの状態を表示しますか?
Next.js Server Actions で内部の内部告発者のアクセスを管理するにはどうすればよいですか?
React ネイティブはオフラインで内部告発者のログをキャッシュできますか?
無許可の調査ノートへのアクセスを防ぐにはどうすればよいですか?
Android でケースファイルを表示する最良の方法は何ですか?

世界中の開発者に信頼されています

Back4app テンプレートを使用して、内部報告製品をより迅速に出荷するチームに参加しましょう。

G2 Users Love Us Badge

内部告発アプリの構築を始める準備はできましたか?

数分で内部告発プロジェクトを開始できます。クレジットカードは必要ありません。

技術を選択する