Rapports d'Activites
Cette page documente la gestion des rapports d'activites des Community Workers.
Vue d'ensemble
Les rapports d'activite permettent aux Community Workers de documenter leurs interventions sur le terrain. Chaque rapport est soumis pour validation par un superviseur.
Modele de donnees (CWRapportActivite)
| Champ | Type | Description |
|---|---|---|
id | UUID | Identifiant unique |
communityWorker | object | CW concerne |
typeActivite | string | Type d'activite |
dateActivite | date | Date de l'activite |
quantite | string | Quantite/Nombre (contextuel) |
nbBeneficiairesHommes | int | Nombre de beneficiaires hommes |
nbBeneficiairesFemmes | int | Nombre de beneficiaires femmes |
nbBeneficiairesTotal | int | Total beneficiaires (calcule) |
observations | text | Notes et observations |
piecesJointes | array | Liste des fichiers joints |
localite | object | Localite de l'activite |
source | string | Source de la donnee |
koboSubmissionId | string | ID soumission KoBoToolbox |
statut | string | Statut du rapport |
validePar | object | Utilisateur qui a valide |
dateValidation | datetime | Date de validation |
motifRejet | text | Motif en cas de rejet |
createdAt | datetime | Date de creation |
Types d'activites
| Type | Description |
|---|---|
enregistrement_menages | Enregistrement de nouveaux menages |
sensibilisation | Sessions de sensibilisation communautaire |
verification | Verification des conditionnalites |
collecte_grm | Collecte de plaintes (GRM) |
suivi_vulnerables | Suivi des menages vulnerables |
Statuts de rapport
| Statut | Description |
|---|---|
en_attente | Rapport soumis, en attente de validation |
valide | Rapport valide par le superviseur |
rejete | Rapport rejete (motif obligatoire) |
Sources de donnees
| Source | Description |
|---|---|
web | Saisi via l'interface web |
mobile | Saisi via l'application mobile |
kobo | Collecte via KoBoToolbox |
Endpoints API
| Endpoint | Methode | Description |
|---|---|---|
/api/cw-rapports | GET | Liste paginée (page, limit ; filtres search, statut, typeActivite, communityWorker, localite, dateDebut, dateFin) |
/api/cw-rapports | POST | Creer un rapport |
/api/cw-rapports/{id} | GET | Detail d'un rapport |
/api/cw-rapports/{id} | DELETE | Supprimer un rapport en brouillon ou en attente |
/api/cw-rapports/en-attente | GET | Rapports en attente de validation (limit, 50 par défaut) |
/api/cw-rapports/stats | GET | Statistiques globales |
/api/cw-rapports/{id}/valider | POST | Valider un rapport |
/api/cw-rapports/{id}/rejeter | POST | Rejeter un rapport |
/api/community-workers/{id}/activites | GET | Rapports d'un CW |
Il n'existe pas de route de modification d'un rapport. Valider ou rejeter un rapport qui n'est pas en attente renvoie 400.
Liste des rapports d'un CW
Endpoint
GET /api/community-workers/{id}/activites
Parametres
| Parametre | Type | Requis | Description |
|---|---|---|---|
limit | int | Non | Nombre de rapports (defaut: 20) |
Reponse
{
"success": true,
"data": {
"rapports": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"typeActivite": "sensibilisation",
"dateActivite": "2026-06-10",
"quantite": "1 session",
"nbBeneficiaires": 45,
"localite": "Farim Centro",
"statut": "valide",
"createdAt": "2026-06-10T16:30:00+00:00"
},
{
"id": "...",
"typeActivite": "enregistrement_menages",
"dateActivite": "2026-06-08",
"quantite": "12 menages",
"nbBeneficiaires": 12,
"localite": "Farim Centro",
"statut": "en_attente",
"createdAt": "2026-06-08T14:00:00+00:00"
}
],
"stats": {
"total": 45,
"valides": 40,
"enAttente": 3,
"rejetes": 2,
"tauxValidation": 88.9,
"parType": {
"enregistrement_menages": 15,
"sensibilisation": 20,
"verification": 5,
"collecte_grm": 3,
"suivi_vulnerables": 2
}
}
}
}
Creer un rapport d'activite
Endpoint
POST /api/cw-rapports
Corps de la requete
{
"communityWorkerId": "550e8400-e29b-41d4-a716-446655440000",
"typeActivite": "sensibilisation",
"dateActivite": "2026-06-10",
"quantite": "1 session",
"nbBeneficiairesHommes": 15,
"nbBeneficiairesFemmes": 30,
"observations": "Session sur l'importance de la scolarisation des filles. Bonne participation de la communaute.",
"localiteId": "...",
"piecesJointes": ["photos/session_2026-06-10.jpg"]
}
Reponse (201 Created)
{
"success": true,
"data": {
"id": "...",
"typeActivite": "sensibilisation",
"dateActivite": "2026-06-10",
"nbBeneficiairesTotal": 45,
"statut": "en_attente",
"source": "web"
},
"message": "Rapport créé avec succès"
}
Valider un rapport
Endpoint
POST /api/cw-rapports/{id}/valider
Reponse
{
"success": true,
"message": "Rapport valide",
"data": {
"id": "...",
"statut": "valide",
"validePar": {
"id": "...",
"nom": "Superviseur Regional"
},
"dateValidation": "2026-06-11T09:15:00+00:00"
}
}
Rejeter un rapport
Endpoint
POST /api/cw-rapports/{id}/rejeter
Corps de la requete
{
"motif": "Nombre de beneficiaires incoherent avec les photos jointes"
}
Reponse
{
"success": true,
"message": "Rapport rejete",
"data": {
"id": "...",
"statut": "rejete",
"motifRejet": "Nombre de beneficiaires incoherent avec les photos jointes",
"dateValidation": "2026-06-11T09:20:00+00:00"
}
}
Workflow de validation
┌──────────────┐ ┌─────────┐
│ Soumission │ -------> │ Valide │
│ (en_attente) │ └─────────┘
└──────────────┘
│
│ (motif requis)
▼
┌──────────────┐
│ Rejete │
└──────────────┘
Integration KoBoToolbox
Les rapports d'activite peuvent etre collectes via KoBoToolbox sur le terrain :
- Le CW remplit le formulaire sur tablette/telephone
- Les donnees sont synchronisees avec le serveur KoBo
- Un webhook declenche l'import dans PCH-SIG
- Le rapport est cree avec
source: "kobo"et lekoboSubmissionId
Identificateur KoBo
Le champ koboSubmissionId permet de :
- Eviter les doublons lors de la synchronisation
- Tracer l'origine de la donnee
- Faciliter la reconciliation en cas de probleme