Modèle de backend de l'application de lanceur d'alerte interne
Journaux de cas anonymes et Suivi d'enquête
Un backend de lanceur d'alerte interne prêt pour la production sur Back4app avec journaux anonymes, suivi du statut des cas, et notes d'enquête. Comprend un diagramme ER, un dictionnaire de données, un schéma JSON, une aire de jeu API, et une invite Agent IA pour un démarrage rapide.
Principaux points à retenir
Ce modèle vous offre un backend de lanceur d'alerte interne avec des journaux anonymes, un statut de cas et des notes d'enquête afin que votre équipe puisse gérer l'admission, le triage et le suivi dans un seul système.
- Admission de journaux anonymes — Stockez les rapports dans WhistleblowerLog avec des champs sécurisés tels que reportChannel et anonymityFlag.
- Suivi du statut du cas — Utilisez les changements de statut de CaseFile pour indiquer si une affaire est nouvelle, en cours d'examen, escaladée ou fermée.
- Notes d'enquête dans le contexte — Attachez des entrées InvestigationNote à un CaseFile afin que les enquêteurs puissent enregistrer les actions, les résultats et les prochaines étapes.
Aperçu : Lanceur d'alerte interne
Une bonne hygiène des lanceurs d'alerte internes signifie que les examinateurs peuvent évaluer un dossier et comprendre immédiatement la portée, le statut et l'action requise suivante. La solution est opérationnelle, pas motivationnelle. Utilisez Reporter, WhistleblowerLog, CaseFile et InvestigationNote en tant que primitives de conformité structurées sur Back4app afin que les flux de travail des lanceurs d'alerte internes restent cohérents à travers les sites et les équipes. Le schéma couvre Reporter (alias, contactMethod, consentToFollowUp), WhistleblowerLog (reportChannel, category, details, anonymityFlag), CaseFile (caseNumber, status, priority, assignedCoordinator) et InvestigationNote (caseFile, noteText, noteType, createdBy) avec auth, ingestion anonymisée et gestion de cas intégrées. Connectez votre frontend préféré et expédiez plus rapidement.
Meilleur pour :
Aperçu du backend interne des lanceurs d'alerte
Les fluctuations saisonnières frappent le lanceur d'alerte interne le plus durement lorsque le personnel change, mais le modèle de données ne s'adapte pas aux nouveaux SKU, sites ou politiques.
Ce résumé oriente les équipes autour de Reporter, WhistleblowerLog et CaseFile avant que quiconque ne plonge dans les diagrammes ER ou les exports JSON.
Fonctionnalités principales des lanceurs d'alerte
Chaque fiche technologique dans ce hub utilise le même schéma de backend pour les lanceurs d'alerte avec Reporter, WhistleblowerLog, CaseFile et InvestigationNote.
Accueil des rapporteurs
Le rapporteur stocke l'alias, le contact, et le consentement pour le suivi.
Journaux anonymes
Le registre WhistleblowerLog enregistre reportChannel, category, details, et anonymityFlag.
Suivi du statut des cas
CaseFile garde caseNumber, status, priority, et assignedCoordinator.
Notes d'enquête
InvestigationNote relie caseFile, noteType, noteText et createdBy.
Pourquoi construire votre backend interne de lanceur d'alerte avec Back4app ?
Back4app vous offre des primitives de reporter, de dossier et de note afin que votre équipe puisse se concentrer sur le flux de travail d'admission et d'enquête plutôt que sur l'infrastructure.
- •CaseFile et WhistleblowerLog dans un seul modèle: WhistleblowerLog capture des détails anonymes tandis que CaseFile conserve le statut, la priorité et l'attribution pour l'équipe d'enquête.
- •Accès contrôlé aux notes sensibles: Les entrées InvestigationNote peuvent être limitées aux coordinateurs et aux examinateurs assignés utilisant l'ACL et la validation du Cloud Code.
- •Flexibilité API Realtime plus: Utilisez Live Queries pour les changements de statut du cas tout en gardant REST et GraphQL disponibles pour les tableaux de bord du personnel et les outils d'audit.
Construisez et itérez rapidement sur l'accueil des lanceurs d'alerte avec un contrat backend unique sur chaque plateforme.
Avantages principaux
Un backend pour lanceurs d'alerte qui vous aide à passer de la soumission anonyme à la gestion des cas sans perdre de vue l'enregistrement.
Configuration de réception plus rapide
Commencez à partir d'un schéma complet de Reporter, WhistleblowerLog, CaseFile et InvestigationNote plutôt que de concevoir des tables de cas à partir de zéro.
Transmission de statut plus claire
Utilisez les champs CaseFile status et assignedCoordinator pour que les coordinateurs sachent quels dossiers sont nouveaux, actifs ou clôturés.
Gestion des notes protégées
Limitez les écritures des InvestigationNotes aux examinateurs et enquêteurs autorisés.
Clair des limites d'accès
Séparez le contenu des journaux anonymes des données de contact des reporters et protégez les deux avec ACL/CLP.
Historique des cas en un seul endroit
Stockez les journaux des lanceurs d'alerte et les notes d'enquête ensemble pour que les équipes de révision puissent suivre le déroulement des événements.
Bootstrap assisté par IA
Générez rapidement des structures backend et des conseils d'intégration avec une invite structurée.
Prêt à lancer votre application de lanceur d'alerte ?
Laissez l'agent AI Back4app créer votre backend interne de lanceur d'alerte et générer des journaux anonymes, des statuts de cas et des notes d'enquête à partir d'un seul prompt.
Gratuit pour commencer - 50 prompts de l'agent AI/mois, pas de carte de crédit requise
Pile technique
Tout est inclus dans ce modèle de backend interne de lanceur d'alerte.
Diagramme ER
Modèle de relation d'entité pour le schéma backend interne des lanceurs d'alerte.
Schéma couvrant les rapporteurs, les journaux anonymes, les dossiers de cas et les notes d'enquête.
Voir la source du diagramme
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
}
Flux d'intégration
Flux d'exécution typique pour l'authentification, la réception des journaux anonymes, les mises à jour de statut de cas, et les notes d'enquête.
Voir la source du diagramme
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 timelineDictionnaire de données
Référence complète au niveau des champs pour chaque classe dans le schéma de dénonciateur.
| Champ | Type | Description | Requis |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | Automatique |
| username | String | User login name | |
| String | User email address | ||
| password | String | Hashed password (write-only) | |
| role | String | User role such as manager, coordinator, or investigator | |
| fullName | String | Display name for internal staff | — |
| createdAt | Date | Auto-generated creation timestamp | Automatique |
| updatedAt | Date | Auto-generated last-update timestamp | Automatique |
8 champs dans User
Sécurité et autorisations
Comment la stratégie ACL et CLP sécurise les reporters, les journaux anonymes, les dossiers d'affaires et les notes d'enquête.
Contrôles de confidentialité des reporters
Traitez contactMethod et consentToFollowUp du reporter comme des champs restreints ; seuls les coordonnateurs approuvés peuvent voir les détails de suivi.
Intégrité des journaux anonymes
Seul le personnel authentifié peut créer ou fermer des éléments CaseFile, tandis que les soumissions de WhistleblowerLog peuvent rester anonymes par conception.
Accès à l'enquête limité
Restreindre les lectures et écritures sur InvestigationNote et CaseFile aux évaluateurs assignés, aux responsables de la conformité ou aux coordonnateurs.
Schéma (JSON)
Définition de schéma JSON brute prête à être copiée dans Back4app ou utilisée comme référence d'implémentation.
{
"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
}
}
}
]
}Construire avec l'agent IA
Utilisez l'agent IA Back4app pour générer une véritable application interne de lanceur d'alerte à partir de ce modèle, y compris le frontend, le backend, l'authentification et les flux de log anonyme, d'état de dossier et de notes d'enquête.
Créez un backend d'application interne de lanceur d'alerte sur Back4app avec ce schéma et ce comportement exact. Schéma: 1. Utilisateur (utiliser Back4app intégré) : nom d'utilisateur, e-mail, mot de passe ; objectId, createdAt, updatedAt (système). 2. Reporter : alias (Chaîne, requis), méthodeDeContact (Chaîne), consentementPourSuivi (Boolean, requis) ; objectId, createdAt, updatedAt (système). 3. JournalDeLanceurDalerte : reporter (Pointeur vers Reporter, optionnel), canalDeRapport (Chaîne, requis), catégorie (Chaîne, requis), détails (Chaîne, requis), anonymatFlag (Boolean, requis), soumisÀ (Date, requis) ; objectId, createdAt, updatedAt (système). 4. Dossier : numéroDeDossier (Chaîne, requis), log (Pointeur vers JournalDeLanceurDalerte, requis), statut (Chaîne, requis), priorité (Chaîne, requis), coordinateurAssigné (Pointeur vers Utilisateur, optionnel), ouvertÀ (Date, requis), ferméÀ (Date) ; objectId, createdAt, updatedAt (système). 5. NoteDEnquête : dossier (Pointeur vers Dossier, requis), typeDeNote (Chaîne, requis), texteDeNote (Chaîne, requis), crééPar (Pointeur vers Utilisateur, requis), crééÀ (Date, requis) ; objectId, createdAt, updatedAt (système). Sécurité: - Protéger la méthodeDeContact du Reporter et le consentementPourSuivi. Utiliser ACL/CLP pour que seuls les coordinateurs approuvés puissent voir les détails restreints. - Seuls le personnel authentifié peut créer ou fermer des éléments de Dossier. Utiliser le Cloud Code pour la validation. - Restreindre les lectures et écritures sur NoteDEnquête aux examinateurs et coordinateurs assignés. Auth: - Inscription, connexion, déconnexion. Comportement: - Soumettre des logs anonymes, lister les dossiers de cas, mettre à jour le statut des cas et ajouter des notes d'enquête. Livrer: - Application Back4app avec schéma, ACL, CLP ; frontend pour saisie anonyme, dossiers de cas et notes d'enquête.
Appuyez sur le bouton ci-dessous pour ouvrir l'Agent avec cette invite de modèle pré-remplie.
Ceci est l'invite de base sans suffixe technologique. Vous pouvez adapter la pile frontend générée par la suite.
Espace de test API
Essayez les points de terminaison REST et GraphQL contre le schéma du lanceur d'alerte. Les réponses utilisent des données fictives et ne nécessitent pas de compte Back4app.
Utilise le même schéma que ce modèle.
Choisissez votre technologie
Développez chaque carte pour voir comment intégrer Reporter, WhistleblowerLog et CaseFile avec votre pile choisie.
Flutter Backend de lanceur d'alerte interne
React Backend de lanceur d'alerte interne
React Native Backend de lanceur d'alerte interne
Next.js Backend de lanceur d'alerte interne
JavaScript Backend de lanceur d'alerte interne
Android Backend de lanceur d'alerte interne
iOS Backend de lanceur d'alerte interne
Vue Backend de lanceur d'alerte interne
Angular Backend de lanceur d'alerte interne
GraphQL Backend de lanceur d'alerte interne
REST API Backend de lanceur d'alerte interne
PHP Backend de lanceur d'alerte interne
.NET Backend de lanceur d'alerte interne
Ce que vous obtenez avec chaque technologie
Chaque pile utilise le même schéma backend pour les lanceurs d'alerte et les contrats API.
Structure de données unifiée pour les lanceurs d'alerte
Gérez les reporters, les journaux anonymes, les dossiers d'affaire et les notes d'enquête avec un schéma cohérent.
Dépôt anonyme pour les signalements internes
Capturez reportChannel, catégorie, détails et anonymityFlag dans un flux de travail clair.
Visibilité du statut de l'affaire pour les coordinateurs
Maintenez caseNumber, statut et assignedCoordinator synchronisés au sein de l'équipe.
Accès contrôlé aux notes pour les enquêteurs
Limitez les vues des InvestigationNote au personnel approprié sans exposer les détails de suivi.
Comparaison des technologies
Comparez la vitesse de configuration, le style SDK et le support de l'IA entre toutes les technologies prises en charge.
| Cadre | Temps de configuration | Avantage de l'application de lanceur d'alerte | Type de SDK | Support AI |
|---|---|---|---|---|
| Environ 5 min | Base de code unique pour l'accueil des lanceurs d'alerte sur mobile et web. | SDK tapé | Complet | |
| Moins de 5 minutes | Tableau de bord web rapide pour l'état des cas et les notes. | SDK tapé | Complet | |
| ~3 à 7 min | Application mobile multiplateforme pour un signalement anonyme. | SDK tapé | Complet | |
| Configuration rapide (5 min) | Tableau de bord de révision des cas rendu sur serveur. | SDK tapé | Complet | |
| ~3 à 5 min | Intégration de reporting interne légère. | SDK tapé | Complet | |
| Environ 5 min | Application native Android pour la collecte anonyme de journaux. | SDK tapé | Complet | |
| Moins de 5 minutes | Application native iOS pour la révision des cas. | SDK tapé | Complet | |
| ~3–7 min | Console pour le personnel React pour les cas de lanceurs d'alerte. | SDK tapé | Complet | |
| Configuration rapide (5 min) | Tableau de bord d'entreprise pour les enquêtes. | SDK tapé | Complet | |
| Moins de 2 min | API GraphQL flexible pour les cas de lanceurs d'alerte. | API GraphQL | Complet | |
| Configuration rapide (2 min) | Intégration de REST API pour les journaux et cas anonymes. | REST API | Complet | |
| ~3 min | Flux de travail côté serveur __MARQUE0__ pour le traitement des cas. | __MARQUE0__ | Complet | |
| ~3–7 min | Backend __MARQUE0__ pour les opérations de lanceur d'alerte. | SDK tapé | Complet |
Le temps de configuration reflète la durée prévue depuis le démarrage du projet jusqu'à la première journalisation ou requête de cas de lanceur d'alerte utilisant ce schéma de modèle.
Questions Fréquemment Posées
Questions courantes concernant la création d'un backend de lanceur d'alerte interne avec ce modèle.
Prêt à créer votre application interne de lanceur d'alerte ?
Démarrez votre projet interne de lanceur d'alerte en quelques minutes. Aucune carte de crédit requise.