API Graduation
L'API Graduation permet de gérer le processus de sortie des bénéficiaires du programme (graduation).
Vue d'ensemble
| Endpoint | Méthode | Description |
|---|---|---|
/api/graduations | GET | Liste des graduations |
/api/graduations/{id} | GET | Détail d'une graduation |
/api/graduations | POST | Proposer une graduation |
/api/graduations/{id}/evaluate | PUT | Évaluer une proposition |
/api/graduations/{id}/decide | PUT | Approuver ou rejeter |
/api/graduations/{id}/cancel | PUT | Annuler une graduation |
/api/graduations/candidates/{programmeId} | GET | Candidats à la graduation |
/api/graduations/stats/{programmeId} | GET | Statistiques |
/api/programmes/{programmeId}/graduation-criteria | GET | Liste des critères |
/api/programmes/{programmeId}/graduation-criteria | POST | Créer un critère |
/api/graduation-criteria/{id} | PUT | Modifier un critère |
/api/graduation-criteria/{id} | DELETE | Supprimer un critère |
Permissions requises
ROLE_USER: ConsultationROLE_TM_SPECIALIST: Proposition et évaluationROLE_ADMIN: Décision et annulation
Liste des graduations
Endpoint
GET /api/graduations
Paramètres de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
page | int | Non | Numéro de page (défaut: 1) |
limit | int | Non | Éléments par page (défaut: 20, max: 100) |
programme | UUID | Non | Filtrer par programme |
statut | string | Non | Filtrer par statut |
Statuts de graduation
| Statut | Description |
|---|---|
proposee | Graduation proposée, en attente d'évaluation |
evaluee | Évaluée, en attente de décision |
approuvee | Graduation approuvée |
rejetee | Graduation rejetée |
annulee | Graduation annulée |
Réponse
{
"success": true,
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"beneficiaire": {
"id": "...",
"nomComplet": "Mamadou Diallo",
"codeMenage": "MEN-OIO-001"
},
"programme": {
"id": "...",
"nom": "PCH Guinée-Bissau"
},
"statut": "proposee",
"typeGraduation": "positive",
"motif": "Amélioration conditions de vie",
"scorePmtFinal": 0.65,
"dateProposition": "2025-03-01",
"dateEvaluation": null,
"dateDecision": null,
"dateEffective": null,
"suiviPostGraduationActif": false,
"finPostSuivi": null
}
],
"meta": {
"total": 45,
"page": 1,
"limit": 20,
"pages": 3
}
}
Détail d'une graduation
Endpoint
GET /api/graduations/{id}
Réponse
{
"success": true,
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"beneficiaire": {
"id": "...",
"nomComplet": "Mamadou Diallo",
"codeMenage": "MEN-OIO-001"
},
"programme": {
"id": "...",
"nom": "PCH Guinée-Bissau"
},
"statut": "approuvee",
"typeGraduation": "positive",
"motif": "Amélioration conditions de vie",
"commentaire": "Score PMT amélioré de 0.35 à 0.65 sur 2 ans",
"scorePmtFinal": 0.65,
"dateProposition": "2025-03-01",
"dateEvaluation": "2025-03-10",
"dateDecision": "2025-03-15",
"dateEffective": "2025-04-01",
"suiviPostGraduationActif": true,
"dureePostSuiviMois": 6,
"finPostSuivi": "2025-10-01",
"donneesEvaluation": {
"criteresValides": 5,
"criteresTotal": 6,
"scoreGlobal": 85
},
"proposePar": {
"id": "...",
"nom": "Agent Terrain"
},
"evaluePar": {
"id": "...",
"nom": "Superviseur"
},
"decidePar": {
"id": "...",
"nom": "Administrateur"
},
"createdAt": "2025-03-01 10:00:00"
}
}
Proposer une graduation
Endpoint
POST /api/graduations
Permission requise
ROLE_TM_SPECIALIST
Corps de la requête
{
"beneficiaire": "550e8400-e29b-41d4-a716-446655440001",
"motif": "Amélioration conditions de vie - Score PMT > seuil",
"commentaire": "Le ménage a montré une amélioration significative sur les 2 derniers cycles"
}
Réponse
{
"success": true,
"message": "Graduation proposée avec succès",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"statut": "proposee",
"dateProposition": "2025-03-15"
}
}
Évaluer une proposition
Endpoint
PUT /api/graduations/{id}/evaluate
Permission requise
ROLE_TM_SPECIALIST
Corps de la requête
{
"evaluation": {
"criteresValides": [
{"critere": "score_pmt", "valide": true, "valeur": 0.65},
{"critere": "duree_programme", "valide": true, "valeur": 24},
{"critere": "conditionnalites", "valide": true, "valeur": 95}
],
"scoreGlobal": 85,
"recommandation": "approuver",
"commentaire": "Tous les critères sont remplis"
}
}
Réponse
{
"success": true,
"message": "Graduation évaluée",
"data": {
"id": "...",
"statut": "evaluee",
"dateEvaluation": "2025-03-15"
}
}
Approuver ou rejeter
Endpoint
PUT /api/graduations/{id}/decide
Permission requise
ROLE_ADMIN
Corps de la requête
{
"approuver": true,
"commentaire": "Graduation validée après vérification des critères"
}
Réponse
{
"success": true,
"message": "Graduation approuvée",
"data": {
"id": "...",
"statut": "approuvee",
"dateDecision": "2025-03-15",
"dateEffective": "2025-04-01"
}
}
Annuler une graduation
Endpoint
PUT /api/graduations/{id}/cancel
Permission requise
ROLE_ADMIN
Corps de la requête
{
"motif": "Erreur d'évaluation - bénéficiaire toujours éligible"
}
Réponse
{
"success": true,
"message": "Graduation annulée",
"data": {
"id": "...",
"statut": "annulee"
}
}
Candidats à la graduation
Endpoint
GET /api/graduations/candidates/{programmeId}
Permission requise
ROLE_TM_SPECIALIST
Réponse
{
"success": true,
"data": [
{
"beneficiaire": {
"id": "...",
"nomComplet": "Mamadou Diallo",
"codeMenage": "MEN-OIO-001"
},
"eligibilite": {
"score": 92,
"criteresRemplis": 5,
"criteresTotal": 6,
"recommandation": "graduation_recommandee"
}
}
],
"meta": {
"total": 125
}
}
Statistiques de graduation
Endpoint
GET /api/graduations/stats/{programmeId}
Réponse
{
"success": true,
"data": {
"totalBeneficiaires": 3500,
"totalGraduations": 450,
"graduationsParStatut": {
"proposee": 25,
"evaluee": 10,
"approuvee": 380,
"rejetee": 30,
"annulee": 5
},
"tauxGraduation": 10.86,
"graduationsParMois": [
{"mois": "2025-01", "count": 45},
{"mois": "2025-02", "count": 52},
{"mois": "2025-03", "count": 38}
],
"tempsTraitementMoyen": {
"propositionADecision": 14,
"unite": "jours"
}
}
}
Liste des critères de graduation
Endpoint
GET /api/programmes/{programmeId}/graduation-criteria
Réponse
{
"success": true,
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440010",
"nom": "Score PMT minimum",
"description": "Score PMT supérieur au seuil de pauvreté",
"type": "score_pmt",
"operateur": ">=",
"valeurSeuil": 0.5,
"poids": 100,
"obligatoire": true,
"actif": true,
"ordre": 1
},
{
"id": "550e8400-e29b-41d4-a716-446655440011",
"nom": "Durée dans le programme",
"description": "Présence minimum de 24 mois",
"type": "duree_programme",
"operateur": ">=",
"valeurSeuil": 24,
"poids": 80,
"obligatoire": true,
"actif": true,
"ordre": 2
}
]
}
Créer un critère de graduation
Endpoint
POST /api/programmes/{programmeId}/graduation-criteria
Permission requise
ROLE_ADMIN
Corps de la requête
{
"nom": "Taux de respect des conditionnalités",
"description": "Pourcentage de conditionnalités respectées sur les 6 derniers mois",
"type": "conditionnalites",
"operateur": ">=",
"valeurSeuil": 80,
"poids": 60,
"obligatoire": false,
"ordre": 3
}
Types de critères
| Type | Description |
|---|---|
score_pmt | Score PMT du ménage |
duree_programme | Durée de participation (mois) |
conditionnalites | Taux de respect des conditionnalités |
paiements_recus | Nombre de paiements reçus |
revenus | Niveau de revenus estimé |
actifs | Valeur des actifs du ménage |
Opérateurs
| Opérateur | Description |
|---|---|
>= | Supérieur ou égal |
<= | Inférieur ou égal |
= | Égal |
!= | Différent |
> | Strictement supérieur |
< | Strictement inférieur |
Réponse
{
"success": true,
"message": "Critère créé",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440012",
"nom": "Taux de respect des conditionnalités"
}
}