API Équipes
L'API Équipes permet de gérer les équipes de traitement des plaintes et leurs membres.
Vue d'ensemble
| Endpoint | Méthode | Description |
|---|---|---|
/api/equipes | GET | Liste des équipes |
/api/equipes/{id} | GET | Détail d'une équipe |
/api/equipes | POST | Créer une équipe |
/api/equipes/{id} | PUT | Modifier une équipe |
/api/equipes/{id} | DELETE | Supprimer une équipe |
/api/equipes/{id}/membres | GET | Liste des membres |
/api/equipes/{id}/membres | POST | Ajouter un membre |
/api/equipes/{equipeId}/membres/{membreId} | PUT | Modifier un membre |
/api/equipes/{equipeId}/membres/{membreId} | DELETE | Retirer un membre |
/api/equipes/{id}/workload | GET | Charge de travail |
/api/equipes/stats/overview | GET | Statistiques |
Permissions requises
ROLE_USER: ConsultationROLE_ADMIN: Création, modification, suppression
Liste des équipes
Endpoint
GET /api/equipes
Paramètres de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
actif | boolean | Non | Filtrer par statut (défaut: true) |
Réponse
{
"success": true,
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"nom": "Équipe Paiements",
"description": "Traitement des plaintes liées aux paiements",
"email": "equipe.paiements@pch.gw",
"categories": ["paiement", "retard_paiement", "montant_incorrect"],
"wipLimitParMembre": 5,
"actif": true,
"dateCreation": "2025-01-01T08:00:00+00:00",
"responsable": {
"id": "...",
"email": "responsable@pch.gw",
"nom": "Diallo",
"prenom": "Mamadou"
},
"nbMembres": 5,
"nbPlaintesEnCours": 23
}
],
"total": 4
}
Détail d'une équipe
Endpoint
GET /api/equipes/{id}
Réponse
{
"success": true,
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"nom": "Équipe Paiements",
"description": "Traitement des plaintes liées aux paiements",
"email": "equipe.paiements@pch.gw",
"categories": ["paiement", "retard_paiement", "montant_incorrect"],
"wipLimitParMembre": 5,
"actif": true,
"dateCreation": "2025-01-01T08:00:00+00:00",
"responsable": {
"id": "...",
"email": "responsable@pch.gw",
"nom": "Diallo",
"prenom": "Mamadou"
},
"nbMembres": 5,
"nbPlaintesEnCours": 23,
"secteurs": [
{
"id": "...",
"nom": "Farim"
},
{
"id": "...",
"nom": "Mansoa"
}
],
"membres": [
{
"id": "550e8400-e29b-41d4-a716-446655440010",
"role": "responsable",
"specialites": ["paiement", "investigation"],
"wipLimit": null,
"wipLimitEffective": 5,
"actif": true,
"autoAssignable": true,
"dateAjout": "2025-01-01T08:00:00+00:00",
"user": {
"id": "...",
"email": "mamadou.diallo@pch.gw",
"nom": "Diallo",
"prenom": "Mamadou"
}
}
]
}
}
Créer une équipe
Endpoint
POST /api/equipes
Corps de la requête
{
"nom": "Équipe Enregistrement",
"description": "Traitement des plaintes liées à l'enregistrement des bénéficiaires",
"email": "equipe.enregistrement@pch.gw",
"categories": ["enregistrement", "mise_a_jour", "doublon"],
"wipLimitParMembre": 8,
"responsableId": "550e8400-e29b-41d4-a716-446655440001",
"secteurIds": [
"550e8400-e29b-41d4-a716-446655440020",
"550e8400-e29b-41d4-a716-446655440021"
]
}
Réponse
{
"success": true,
"message": "Équipe créée avec succès",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440002",
"nom": "Équipe Enregistrement"
}
}
Modifier une équipe
Endpoint
PUT /api/equipes/{id}
Corps de la requête
{
"nom": "Équipe Enregistrement - Oio",
"wipLimitParMembre": 10,
"actif": true,
"secteurIds": [
"550e8400-e29b-41d4-a716-446655440020"
]
}
Réponse
{
"success": true,
"message": "Équipe mise à jour",
"data": {
"id": "...",
"nom": "Équipe Enregistrement - Oio"
}
}
Supprimer une équipe
Endpoint
DELETE /api/equipes/{id}
Contraintes
- L'équipe ne doit pas avoir de plaintes actives (statut "ouverte" ou "en_cours")
Réponse
{
"success": true,
"message": "Équipe supprimée"
}
Erreur si plaintes actives
{
"success": false,
"message": "Impossible de supprimer une équipe avec des plaintes actives"
}
Liste des membres
Endpoint
GET /api/equipes/{id}/membres
Réponse
{
"success": true,
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440010",
"role": "responsable",
"specialites": ["paiement", "investigation"],
"wipLimit": null,
"wipLimitEffective": 5,
"actif": true,
"autoAssignable": true,
"dateAjout": "2025-01-01T08:00:00+00:00",
"user": {
"id": "...",
"email": "mamadou.diallo@pch.gw",
"nom": "Diallo",
"prenom": "Mamadou"
}
}
],
"total": 5
}
Ajouter un membre
Endpoint
POST /api/equipes/{id}/membres
Corps de la requête
{
"userId": "550e8400-e29b-41d4-a716-446655440030",
"role": "membre",
"specialites": ["tri", "suivi"],
"wipLimit": 3,
"autoAssignable": true
}
Rôles disponibles
| Rôle | Description |
|---|---|
responsable | Chef d'équipe |
superviseur | Superviseur |
membre | Membre standard |
Réponse
{
"success": true,
"message": "Membre ajouté à l'équipe",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440011",
"role": "membre",
"user": {
"id": "...",
"nom": "Sane",
"prenom": "Fatou"
}
}
}
Erreur si déjà membre
{
"success": false,
"message": "Utilisateur déjà membre de cette équipe"
}
Modifier un membre
Endpoint
PUT /api/equipes/{equipeId}/membres/{membreId}
Corps de la requête
{
"role": "superviseur",
"specialites": ["paiement", "investigation", "validation"],
"wipLimit": 8,
"autoAssignable": false,
"actif": true
}
Réponse
{
"success": true,
"message": "Membre mis à jour",
"data": {
"id": "...",
"role": "superviseur"
}
}
Retirer un membre
Endpoint
DELETE /api/equipes/{equipeId}/membres/{membreId}
Réponse
{
"success": true,
"message": "Membre retiré de l'équipe"
}
Charge de travail
Endpoint
GET /api/equipes/{id}/workload
Réponse
{
"success": true,
"data": {
"equipe": {
"id": "...",
"nom": "Équipe Paiements",
"wipLimitTotal": 25
},
"charge": {
"total": 23,
"pourcentage": 92.0
},
"parMembre": [
{
"membre": {
"id": "...",
"nom": "Diallo Mamadou"
},
"plaintesAssignees": 5,
"wipLimit": 5,
"pourcentage": 100.0,
"disponible": false
},
{
"membre": {
"id": "...",
"nom": "Sane Fatou"
},
"plaintesAssignees": 3,
"wipLimit": 5,
"pourcentage": 60.0,
"disponible": true
}
],
"parCategorie": {
"paiement": 12,
"retard_paiement": 8,
"montant_incorrect": 3
},
"parPriorite": {
"haute": 5,
"moyenne": 15,
"basse": 3
}
}
}
Statistiques des équipes
Endpoint
GET /api/equipes/stats/overview
Réponse
{
"success": true,
"data": {
"totalEquipes": 4,
"equipesActives": 4,
"totalMembres": 18,
"plaintesEnCours": 85,
"parEquipe": [
{
"equipe": "Équipe Paiements",
"membres": 5,
"plaintes": 23,
"chargePercent": 92.0
},
{
"equipe": "Équipe Enregistrement",
"membres": 4,
"plaintes": 18,
"chargePercent": 72.0
}
],
"performance": {
"tempsResolutionMoyen": 5.2,
"tauxResolutionDansDelai": 94.5,
"satisfactionMoyenne": 4.3
}
}
}