Pelapor
Bangun dengan AI Agent
Backend Whistleblower Internal

Templat Backend Aplikasi Whistleblower Internal
Log Kasus Anonim dan Pelacakan Penyidikan

Backend whistleblower internal siap produksi di Back4app dengan log anonim, pelacakan status kasus, dan catatan penyidikan. Termasuk diagram ER, kamus data, skema JSON, playground API, dan prompt AI Agent untuk bootstrap cepat.

Poin Penting

Template ini memberikan Anda backend whistleblower internal dengan log anonim, status kasus, dan catatan penyelidikan sehingga tim Anda dapat menjaga intake, triase, dan tindak lanjut dalam satu sistem.

  1. Intake log anonimSimpan laporan di WhistleblowerLog dengan bidang yang aman untuk kasus seperti reportChannel dan anonymityFlag.
  2. Pelacakan status kasusGunakan perubahan status CaseFile untuk menunjukkan apakah suatu masalah baru, dalam tinjauan, di eskalasi, atau ditutup.
  3. Catatan penyelidikan dalam konteksLampirkan entri InvestigationNote ke CaseFile sehingga penyelidik dapat mencatat tindakan, hasil, dan langkah selanjutnya.

Ikhtisar: Pengaduan Internal

Kebersihan pengaduan internal yang baik berarti peninjau dapat mengambil contoh catatan dan segera memahami ruang lingkup, status, dan tindakan yang diperlukan selanjutnya. Solusinya operasional, bukan motivasional. Gunakan Reporter, WhistleblowerLog, CaseFile, dan InvestigationNote sebagai prinsip kepatuhan yang terstruktur di Back4app sehingga alur kerja pengaduan internal tetap konsisten di seluruh lokasi dan shift. Skema mencakup Reporter (alias, contactMethod, consentToFollowUp), WhistleblowerLog (reportChannel, category, details, anonymityFlag), CaseFile (caseNumber, status, priority, assignedCoordinator), dan InvestigationNote (caseFile, noteText, noteType, createdBy) dengan otorisasi, penerimaan yang dianonimkan, dan penanganan kasus yang sudah terintegrasi. Hubungkan frontend yang Anda pilih dan kirim lebih cepat.

Terbaik untuk:

Portal pelaporan internalPenerimaan pengaduan anonimDasbor manajemen kasusTim kepatuhan dan penyelidikanPeluncuran MVPTim memilih BaaS untuk produk pelaporan sensitif

Tinjauan backend Pelapor Internal

Perubahan musiman paling mempengaruhi pelapor internal saat perubahan staf tetapi model data tidak fleksibel dengan SKU baru, situs, atau kebijakan.

Ringkasan ini mengarahkan tim di sekitar Pelapor, WhistleblowerLog, dan CaseFile sebelum siapa pun terjun ke diagram ER atau ekspor JSON.

Fitur Inti Pelapor

Setiap kartu teknologi di pusat ini menggunakan skema backend whistleblower yang sama dengan Reporter, WhistleblowerLog, CaseFile, dan InvestigationNote.

Penerimaan pelapor

Pelapor menyimpan alias, contactMethod, dan consentToFollowUp.

Log anonim

WhistleblowerLog mencatat reportChannel, kategori, detail, dan anonymityFlag.

Pelacakan status kasus

CaseFile menyimpan caseNumber, status, prioritas, dan assignedCoordinator.

Catatan investigasi

InvestigationNote menghubungkan caseFile, noteType, noteText, dan createdBy.

Mengapa Membangun Backend Pelapor Internal Anda dengan Back4app?

Back4app memberikan Anda primitif pelapor, kasus, dan catatan sehingga tim Anda dapat fokus pada alur kerja penerimaan dan investigasi alih-alih infrastruktur.

  • CaseFile dan WhistleblowerLog dalam satu model: WhistleblowerLog menangkap rincian anonim sementara CaseFile menyimpan status, prioritas, dan penugasan untuk tim investigasi.
  • Akses terkontrol ke catatan sensitif: Entri InvestigationNote dapat dibatasi hanya untuk koordinator dan peninjau yang ditugaskan menggunakan ACL dan validasi Cloud Code.
  • Realtime ditambah fleksibilitas API: Gunakan Live Queries untuk perubahan status kasus sambil menjaga REST dan GraphQL tersedia untuk dasbor staf dan alat audit.

Bangun dan iterasi penerimaan pelapor dengan cepat dengan satu kontrak backend di setiap platform.

Manfaat Utama

Backend whistleblower yang membantu Anda beralih dari pengajuan anonim ke penanganan kasus tanpa kehilangan jejak catatan.

Pengaturan intake lebih cepat

Mulai dari skema Reporter, WhistleblowerLog, CaseFile, dan InvestigationNote yang lengkap daripada merancang tabel kasus dari nol.

Serah terima status yang lebih bersih

Gunakan status CaseFile dan bidang assignedCoordinator sehingga koordinator tahu masalah mana yang baru, aktif, atau ditutup.

Penanganan catatan yang dilindungi

Batasi penulisan InvestigationNote hanya untuk pengulas dan penyelidik yang berwenang.

Jelas batas akses

Pisahkan konten log anonim dari data kontak pelapor dan lindungi keduanya dengan ACL/CLP.

Riwayat kasus dalam satu tempat

Simpan log pelapor dan catatan penyelidikan bersama agar tim tinjauan dapat mengikuti urutan kejadian.

Bootstrap dibantu AI

Hasilkan kerangka backend dan panduan integrasi dengan cepat dengan satu permintaan terstruktur.

Siap untuk meluncurkan aplikasi pelapor Anda?

Biarkan Agen AI Back4app membangun backend pelapor internal Anda dan menghasilkan log anonim, status kasus, dan catatan penyelidikan dari satu perintah.

Gratis untuk memulai — 50 perintah Agen AI/bulan, tanpa kartu kredit yang diperlukan

Tumpukan Teknis

Semua termasuk dalam template backend pelapor internal ini.

Frontend
13+ teknologi
Backend
Back4app
Basis Data
MongoDB
Otentikasi
Otentikasi bawaan + sesi
API
REST dan GraphQL
Realtime
Live Queries

Diagram ER

Model hubungan entitas untuk skema backend pelapor internal.

Lihat sumber diagram
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
    }

Alur Integrasi

Alur runtime tipikal untuk otentikasi, penerimaan log anonim, pembaruan status kasus, dan catatan penyelidikan.

Lihat sumber diagram
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

Kamus Data

Referensi tingkat bidang penuh untuk setiap kelas dalam skema pelapor.

BidangTipeDeskripsiDiperlukan
objectIdStringAuto-generated unique identifierOtomatis
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 timestampOtomatis
updatedAtDateAuto-generated last-update timestampOtomatis

8 bidang di User

Keamanan dan Izin

Bagaimana strategi ACL dan CLP mengamankan pelapor, log anonim, berkas kasus, dan catatan penyelidikan.

Kontrol privasi Pelapor

Anggap contactMethod Pelapor dan consentToFollowUp sebagai bidang yang dibatasi; hanya koordinator yang disetujui yang dapat melihat detail tindak lanjut.

Integritas log anonim

Hanya staf yang terautentikasi yang dapat membuat atau menutup item CaseFile, sementara pengiriman WhistleblowerLog dapat tetap anonim berdasarkan desain.

Akses penyelidikan terbatas

Batasi pembacaan dan penulisan pada InvestigationNote dan CaseFile kepada peninjau yang ditugaskan, pemimpin kepatuhan, atau koordinator.

Skema (JSON)

Definisi skema JSON mentah siap untuk disalin ke Back4app atau digunakan sebagai referensi implementasi.

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

Bangun dengan Agen AI

Gunakan Agen AI Back4app untuk menghasilkan aplikasi pelapor internal yang nyata dari template ini, termasuk frontend, backend, otentikasi, dan log anonim, status kasus, serta alur catatan investigasi.

Agen AI Back4app
Siap untuk membangun
Buat backend aplikasi pelapor internal di Back4app dengan skema dan perilaku yang tepat ini.

Skema:
1. Pengguna (gunakan bawaan Back4app): nama pengguna, email, kata sandi; objectId, createdAt, updatedAt (sistem).
2. Pelapor: alias (String, wajib), metodeKontak (String), persetujuanUntukTindakLanjut (Boolean, wajib); objectId, createdAt, updatedAt (sistem).
3. LogPelapor: pelapor (Pointer ke Pelapor, opsional), saluranLaporkan (String, wajib), kategori (String, wajib), rincian (String, wajib), tandaAnonimitas (Boolean, wajib), dikirimPada (Tanggal, wajib); objectId, createdAt, updatedAt (sistem).
4. BerkasKasus: nomorKasus (String, wajib), log (Pointer ke LogPelapor, wajib), status (String, wajib), prioritas (String, wajib), koordinatorYangDitugaskan (Pointer ke Pengguna, opsional), dibukaPada (Tanggal, wajib), ditutupPada (Tanggal); objectId, createdAt, updatedAt (sistem).
5. CatatanInvestigasi: berkasKasus (Pointer ke BerkasKasus, wajib), tipeCatatan (String, wajib), teksCatatan (String, wajib), dibuatOleh (Pointer ke Pengguna, wajib), dibuatPada (Tanggal, wajib); objectId, createdAt, updatedAt (sistem).

Keamanan:
- Lindungi metodeKontak Pelapor dan persetujuanUntukTindakLanjut. Gunakan ACL/CLP sehingga hanya koordinator yang disetujui dapat melihat detail yang dibatasi.
- Hanya staf yang terautentikasi yang dapat membuat atau menutup item BerkasKasus. Gunakan Cloud Code untuk validasi.
- Batasi baca dan tulis pada CatatanInvestigasi untuk peninjau dan koordinator yang ditugaskan.

Otentikasi:
- Daftar, masuk, keluar.

Perilaku:
- Kirim log anonim, daftar berkas kasus, perbarui status kasus, dan tambahkan catatan investigasi.

Kirim:
- Aplikasi Back4app dengan skema, ACL, CLP; frontend untuk penerimaan anonim, berkas kasus, dan catatan investigasi.

Tekan tombol di bawah ini untuk membuka Agen dengan prompt template ini yang sudah diisi sebelumnya.

Ini adalah prompt dasar tanpa akhiran teknologi. Anda dapat menyesuaikan tumpukan frontend yang dihasilkan setelahnya.

Terapkan dalam beberapa menit50 prompt gratis / bulanTidak diperlukan kartu kredit

API Playground

Cobalah endpoint REST dan GraphQL terhadap skema pelapor. Respons menggunakan data tiruan dan tidak memerlukan akun Back4app.

Memuat playground…

Menggunakan skema yang sama dengan template ini.

Pilih Teknologi Anda

Perluas setiap kartu untuk melihat cara mengintegrasikan Reporter, WhistleblowerLog, dan CaseFile dengan tumpukan pilihan Anda.

Flutter Backend Pelapor Internal

React Backend Pelapor Internal

React Native Backend Pelapor Internal

Next.js Backend Pelapor Internal

JavaScript Backend Pelapor Internal

Android Backend Pelapor Internal

iOS Backend Pelapor Internal

Vue Backend Pelapor Internal

Angular Backend Pelapor Internal

GraphQL Backend Pelapor Internal

REST API Backend Pelapor Internal

PHP Backend Pelapor Internal

.NET Backend Pelapor Internal

Apa yang Anda Dapatkan dengan Setiap Teknologi

Setiap stack menggunakan skema backend whistleblower dan kontrak API yang sama.

Struktur data whistleblower yang terintegrasi

Kelola pelapor, log anonim, berkas kasus, dan catatan investigasi dengan satu skema yang konsisten.

Penerimaan anonim untuk pelaporan internal

Tangkap reportChannel, kategori, detail, dan anonymityFlag dalam alur kerja yang bersih.

Visibilitas status kasus untuk koordinator

Jaga agar caseNumber, status, dan assignedCoordinator tetap sinkron di seluruh tim.

Akses catatan yang terkendali untuk penyelidik

Batasi tampilan InvestigationNote hanya untuk staf yang tepat tanpa mengekspos detail tindak lanjut.

Perbandingan Teknologi

Bandingkan kecepatan pengaturan, gaya SDK, dan dukungan AI di semua teknologi yang didukung.

Kerangka kerjaWaktu SetupManfaat Aplikasi PelaporJenis SDKDukungan AI
Sekitar 5 menitSatu basis kode untuk penerimaan pelapor di mobile dan web.SDK Tipe TerketikPenuh
Kurang dari 5 menitDasbor web cepat untuk status kasus dan catatan.SDK DiketikPenuh
~3–7 menitAplikasi mobile lintas platform untuk pelaporan anonim.SDK DiketikPenuh
Pengaturan cepat (5 menit)Dasbor tinjauan kasus yang dirender di server.SDK DiketikPenuh
~3–5 menitIntegrasi pelaporan internal ringan.SDK DiketikPenuh
Sekitar 5 menitAplikasi Android asli untuk pengambilan log anonim.SDK tertulisPenuh
Kurang dari 5 menitAplikasi iOS asli untuk tinjauan kasus.SDK tertulisPenuh
~3–7 menitKonsol staf Reactive untuk kasus pelapor.SDK tertulisPenuh
Pengaturan cepat (5 menit)Dasbor perusahaan untuk investigasi.SDK yang diketikPenuh
Kurang dari 2 menitAPI GraphQL yang fleksibel untuk kasus pelapor rahasia.API GraphQLPenuh
Pengaturan cepat (2 menit)Integrasi REST API untuk log dan kasus anonim.REST APIPenuh
~3 menitAlur kerja PHP sisi server untuk penanganan kasus.REST APIPenuh
~3–7 menitBackend .NET untuk operasi pelapor.SDK yang DiketikPenuh

Waktu setup mencerminkan durasi yang diharapkan dari bootstrap proyek hingga log pelapor pertama atau permintaan kasus menggunakan skema template ini.

Pertanyaan yang Sering Diajukan

Pertanyaan umum tentang membangun backend pelapor internal dengan template ini.

Kontrol pelapor internal mana yang paling penting ketika operasi mencakup banyak lokasi?
Timestamp dan aktor mana yang tidak bisa dinegosiasikan untuk catatan pelapor internal yang kredibel?
Apakah praktis untuk mengekspor bukti pelapor internal untuk peninjau eksternal dengan cara yang terstruktur?
Bagaimana cara saya menampilkan status kasus di Flutter?
Bagaimana cara saya mengelola akses pelapor internal dengan Next.js Server Actions?
Dapatkah React Native menyimpan log pelapor secara offline?
Bagaimana cara saya mencegah akses catatan investigasi yang tidak sah?
Apa cara terbaik untuk menampilkan file kasus di Android?

Dipercaya oleh pengembang di seluruh dunia

Bergabunglah dengan tim yang mengirimkan produk pelaporan internal lebih cepat dengan template Back4app

G2 Users Love Us Badge

Siap untuk Membangun Aplikasi Pelapor Internal Anda?

Mulai proyek pelapor internal Anda dalam hitungan menit. Tidak perlu kartu kredit.

Pilih Teknologi