Aller au contenu principal

API Équipes

L'API Équipes permet de gérer les équipes de traitement des plaintes et leurs membres.

Vue d'ensemble

EndpointMéthodeDescription
/api/equipesGETListe des équipes
/api/equipes/{id}GETDétail d'une équipe
/api/equipesPOSTCréer une équipe
/api/equipes/{id}PUTModifier une équipe
/api/equipes/{id}DELETESupprimer une équipe
/api/equipes/{id}/membresGETListe des membres
/api/equipes/{id}/membresPOSTAjouter un membre
/api/equipes/{equipeId}/membres/{membreId}PUTModifier un membre
/api/equipes/{equipeId}/membres/{membreId}DELETERetirer un membre
/api/equipes/{id}/workloadGETCharge de travail
/api/equipes/stats/overviewGETStatistiques

Permissions requises

  • ROLE_USER : Consultation
  • ROLE_ADMIN : Création, modification, suppression

Liste des équipes

Endpoint

GET /api/equipes

Paramètres de requête

ParamètreTypeRequisDescription
actifbooleanNonFiltrer 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ôleDescription
responsableChef d'équipe
superviseurSuperviseur
membreMembre 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
}
}
}