Skip to content

Resolve VSN-1941 "Driver's planning"

yassine sabir a demandé de fusionner VSN-1941 vers develop

Changements et fonctionnalités implémentées

1. Nouveaux endpoints REST pour l'application mobile Trois endpoints pour le planning des chauffeurs :

GET /api/planning/drivers/{driverId}/trips

  • Liste des trajets assignés à un chauffeur
  • Filtres : startDate, endDate, status, type, vehicleId, monthYear
  • Support du format monthYear (ex: 2025-11) qui remplace startDate/endDate
  • Par défaut, retourne les trajets du jour si aucune date n'est fournie

GET /api/planning/drivers/{driverId}/trips/{tripId}

  • Détails d'un trajet spécifique
  • Vérification que le trajet appartient au chauffeur
  • Retourne un MobileTripDTO complet

PATCH /api/planning/drivers/{driverId}/trips/{tripId}/status

  • Mise à jour du statut d'un trajet
  • Validation des transitions de statut (prévu → en_cours → terminé)
  • Gestion des erreurs avec codes HTTP appropriés

2. DTOs créés

  • MobileTripDTO : DTO principal pour les trajets mobiles
  • TripListResponseDTO : Wrapper pour la liste de trajets avec total
  • TripStatusUpdateDTO : DTO pour la mise à jour de statut
  • TripStopDTO : Informations sur les arrêts (préparé pour usage futur)
  • VehicleInfoDTO : Informations sur le véhicule assigné
  • DriverPlanningDTO : Informations de planning du chauffeur depuis le user service
  • CircuitTripResponseDTO : Structure pour mapper la réponse du circuit service avec TripPointDTO et PassengerDetailsTripDTO

3. Fonctionnalités métier implémentées

Détermination automatique du statut

  • Basée sur la date du trajet par rapport à la date actuelle :

Date future → "prevu" Date actuelle → "en_cours" Date passée → "termine"

  • Filtrage avancé

Par statut : liste de statuts acceptés Par type : liste de types de trajets Par véhicule : filtre par vehicleId Par date : plage de dates ou mois/année (monthYear)

  • Gestion des trajets multi-passagers

Extraction des heures depuis le circuit service pour les trajets avec plusieurs passagers startTime = premier pickupTime du premier tripPoint endTime = dernier pickupTime du dernier tripPoint (dernier drop-off) Fallback vers les heures de TripPlanning si le circuit service n'est pas disponible ou pour les trajets à un seul passager

4. Intégrations avec d'autres services

User Service

  • Appel à /api/user/driver/{driverId}/planning pour récupérer :

Informations du chauffeur Véhicule assigné (VehicleInfoDTO)

  • Appel unique par requête pour éviter les appels multiples

Gestion d'erreur avec fallback vers un véhicule mock si le service est indisponible

Circuit Service

  • Appel à /api/circuit/trip/{tripId} pour récupérer les détails avec tripPoints
  • Utilisation de NameUrl.getVsnCircuitServiceUrl() pour la cohérence avec les autres services
  • Extraction des heures de pickup depuis les tripPoints pour les trajets multi-passagers
  • Fallback automatique en cas d'erreur

Rapports de requête de fusion