Aller au contenu principal

API Workflow Plaintes

L'API Workflow Plaintes permet de gérer le cycle de vie et les transitions de phase des plaintes.

Vue d'ensemble

EndpointMéthodeDescription
/api/plaintes/{id}/workflowGETTimeline du workflow
/api/plaintes/{id}/workflow/initierPOSTInitialiser le workflow
/api/plaintes/{id}/avancer-phasePOSTPasser à la phase suivante
/api/plaintes/{id}/valider-conditionsGETValider les conditions
/api/plaintes/en-retardGETPlaintes en retard
/api/plaintes/workflow/statsGETStatistiques workflow

Authentification

Tous les endpoints nécessitent ROLE_USER minimum.


Phases du workflow

PhaseDescriptionDélai
receptionRéception et enregistrement1 jour
triTri et classification2 jours
investigationInvestigation et analyse5 jours
resolutionRésolution proposée3 jours
validationValidation de la résolution2 jours
clotureClôture et archivage1 jour

Timeline du workflow

Endpoint

GET /api/plaintes/{id}/workflow

Réponse

{
"success": true,
"data": {
"phaseActuelle": "investigation",
"phaseLabel": "Investigation et analyse",
"dateDebutPhase": "2025-03-10T08:00:00+00:00",
"dateEcheance": "2025-03-15T08:00:00+00:00",
"estEnRetard": false,
"joursRestants": 2,
"timeline": [
{
"phase": "reception",
"label": "Réception",
"statut": "complete",
"dateDebut": "2025-03-08T10:30:00+00:00",
"dateFin": "2025-03-08T14:00:00+00:00",
"duree": "3h30m",
"user": {
"id": "...",
"nom": "Agent Accueil"
}
},
{
"phase": "tri",
"label": "Tri et classification",
"statut": "complete",
"dateDebut": "2025-03-08T14:00:00+00:00",
"dateFin": "2025-03-10T08:00:00+00:00",
"duree": "1j18h",
"user": {
"id": "...",
"nom": "Superviseur"
},
"notes": "Classé comme plainte de paiement"
},
{
"phase": "investigation",
"label": "Investigation",
"statut": "en_cours",
"dateDebut": "2025-03-10T08:00:00+00:00",
"dateEcheance": "2025-03-15T08:00:00+00:00",
"user": {
"id": "...",
"nom": "Agent Investigation"
}
},
{
"phase": "resolution",
"label": "Résolution",
"statut": "a_venir"
},
{
"phase": "validation",
"label": "Validation",
"statut": "a_venir"
},
{
"phase": "cloture",
"label": "Clôture",
"statut": "a_venir"
}
],
"historique": [
{
"date": "2025-03-08T10:30:00+00:00",
"action": "creation",
"description": "Plainte créée",
"user": "Agent Accueil"
},
{
"date": "2025-03-08T14:00:00+00:00",
"action": "avancement_phase",
"description": "Passage en phase Tri",
"user": "Agent Accueil"
},
{
"date": "2025-03-10T08:00:00+00:00",
"action": "avancement_phase",
"description": "Passage en phase Investigation",
"user": "Superviseur"
}
]
}
}

Initialiser le workflow

Endpoint

POST /api/plaintes/{id}/workflow/initier

Description

Initialise le workflow pour une plainte nouvellement créée. Place la plainte en phase "réception".

Contraintes

  • Le workflow ne doit pas être déjà initialisé

Réponse

{
"success": true,
"message": "Workflow initialisé",
"data": {
"phase": "reception",
"phaseLabel": "Réception et enregistrement",
"dateEcheancePhase": "2025-03-16T10:30:00+00:00"
}
}

Erreur si déjà initialisé

{
"success": false,
"error": "Le workflow est déjà initialisé pour cette plainte"
}

Avancer à la phase suivante

Endpoint

POST /api/plaintes/{id}/avancer-phase

Corps de la requête

{
"commentaire": "Investigation terminée, prêt pour résolution"
}

Contraintes

  • Le workflow doit être initialisé
  • Les conditions de la phase actuelle doivent être remplies

Réponse succès

{
"success": true,
"message": "Phase avancée avec succès",
"data": {
"anciennePhase": "investigation",
"nouvellePhase": "resolution",
"phaseLabel": "Résolution proposée",
"dateEcheancePhase": "2025-03-18T10:30:00+00:00"
}
}

Erreur si conditions non remplies

{
"success": false,
"error": "Impossible d'avancer à la phase suivante",
"conditionsManquantes": [
"Un responsable doit être assigné",
"Au moins un commentaire d'investigation requis"
]
}

Valider les conditions de phase

Endpoint

GET /api/plaintes/{id}/valider-conditions

Réponse

{
"success": true,
"data": {
"phaseActuelle": "investigation",
"peutAvancer": true,
"conditions": [
{
"condition": "Responsable assigné",
"valide": true
},
{
"condition": "Catégorie définie",
"valide": true
},
{
"condition": "Au moins un commentaire d'investigation",
"valide": true
}
],
"prochainePhase": "resolution"
}
}

Plaintes en retard

Endpoint

GET /api/plaintes/en-retard

Réponse

{
"success": true,
"data": {
"total": 12,
"parPhase": {
"tri": 2,
"investigation": 7,
"resolution": 3
},
"plaintes": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"reference": "PLT-2025-001234",
"objet": "Paiement non reçu",
"phase": "investigation",
"phaseLabel": "Investigation",
"dateEcheance": "2025-03-12T08:00:00+00:00",
"joursRetard": 3,
"responsable": {
"id": "...",
"nom": "Agent Investigation"
},
"equipe": {
"id": "...",
"nom": "Équipe Paiements"
}
}
]
}
}

Statistiques workflow

Endpoint

GET /api/plaintes/workflow/stats

Réponse

{
"success": true,
"data": {
"totalPlaintes": 1500,
"parPhase": {
"reception": 15,
"tri": 25,
"investigation": 120,
"resolution": 45,
"validation": 20,
"cloture": 5,
"termine": 1270
},
"enRetard": {
"total": 12,
"pourcentage": 5.8
},
"tempsTraitementMoyen": {
"global": 8.5,
"parPhase": {
"reception": 0.5,
"tri": 1.2,
"investigation": 4.0,
"resolution": 2.0,
"validation": 0.8
},
"unite": "jours"
},
"tendance": {
"semainePrecedente": {
"nouvelles": 45,
"resolues": 52,
"enRetard": 8
},
"semaineCourante": {
"nouvelles": 38,
"resolues": 41,
"enRetard": 12
}
},
"performance": {
"tauxResolutionDansDelai": 94.2,
"tauxEscalade": 8.5,
"satisfactionMoyenne": 4.2
}
}
}

Conditions par phase

Phase Réception → Tri

  • Plainte enregistrée avec toutes les informations obligatoires
  • Plaignant identifié ou anonymat validé

Phase Tri → Investigation

  • Catégorie assignée
  • Priorité définie
  • Équipe ou responsable assigné

Phase Investigation → Résolution

  • Au moins un commentaire d'investigation
  • Cause identifiée
  • Documentation complète si requise

Phase Résolution → Validation

  • Proposition de résolution documentée
  • Accord du plaignant (si applicable)
  • Actions correctives listées

Phase Validation → Clôture

  • Résolution validée par le superviseur
  • Notification au plaignant envoyée
  • Satisfaction recueillie (si applicable)