Skip to main content

🚛 Transports Management

📋 Vue d'ensemble​

Le module Transports Management permet aux administrateurs de superviser et gérer toutes les opérations de transport. Il offre une vue d'ensemble complÚte des transports, véhicules, chauffeurs et documents officiels.

đŸ—ïž Architecture​

  • Queue NATS : admin-service
  • Patterns : transports.*
  • Supervision : Vue globale des opĂ©rations
  • Validation : Documents et conformitĂ©
  • Analytics : MĂ©triques de performance

📡 Message Patterns NATS​

1. Lister les Transports​

Pattern : transports.all

Payload (TransportQueryDto)​

{
"page": 1,
"limit": 10,
"status": "IN_TRANSIT",
"vehicleType": "TRUCK",
"driverId": "driver-uuid",
"search": "CAM-2024-001",
"sortBy": "createdAt",
"sortOrder": "desc"
}

Filtres Disponibles​

FiltreTypeDescription
statusStringStatut du transport
vehicleTypeStringType de véhicule
driverIdStringUUID du chauffeur
clientIdStringUUID du client
searchStringRecherche dans numéro de chargement

RĂ©ponse​

{
"success": true,
"message": "Transports retrieved successfully",
"result": {
"data": [
{
"id": 1,
"publicId": "trans-uuid",
"loadingNumber": "CAM-2024-001",
"status": "IN_TRANSIT",
"vehicleType": "TRUCK",
"departureLocation": "Douala",
"arrivalLocation": "Yaoundé",
"departureDate": "2024-01-15T08:00:00Z",
"estimatedArrival": "2024-01-15T14:00:00Z",
"actualArrival": null,
"driverId": "driver-uuid",
"clientId": "client-uuid",
"createdAt": "2024-01-15T07:00:00Z",
"driver": {
"id": 1,
"firstName": "Jean",
"lastName": "TRANSPORT",
"phone": "+237123456789",
"licenseNumber": "DL123456"
},
"client": {
"id": 1,
"firstName": "Client",
"lastName": "BUSINESS",
"email": "client@business.com"
},
"vehicle": {
"id": 1,
"brand": "Mercedes",
"model": "Actros",
"plateNumber": "CAM-123-AB",
"capacity": "40 tonnes"
}
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 85,
"totalPages": 9
}
}
}

2. DĂ©tails d'un Transport​

Pattern : transports.details

Payload​

{
"id": "transport-uuid"
}

RĂ©ponse ComplĂšte​

{
"success": true,
"message": "Transport details retrieved successfully",
"result": {
"id": 1,
"publicId": "trans-uuid",
"loadingNumber": "CAM-2024-001",
"status": "IN_TRANSIT",
"vehicleType": "TRUCK",
"departureLocation": "Douala",
"arrivalLocation": "Yaoundé",
"departureDate": "2024-01-15T08:00:00Z",
"estimatedArrival": "2024-01-15T14:00:00Z",
"actualArrival": null,
"distance": "250 km",
"estimatedDuration": "6 heures",
"cargo": {
"description": "Marchandises diverses",
"weight": "25 tonnes",
"value": "5000000 FCFA"
},
"driver": {
"id": 1,
"firstName": "Jean",
"lastName": "TRANSPORT",
"phone": "+237123456789",
"email": "jean.transport@example.com",
"licenseNumber": "DL123456",
"licenseExpiry": "2025-12-31",
"experience": "8 ans"
},
"vehicle": {
"id": 1,
"brand": "Mercedes",
"model": "Actros",
"plateNumber": "CAM-123-AB",
"capacity": "40 tonnes",
"year": 2020,
"fuelType": "Diesel",
"lastMaintenance": "2024-01-01T00:00:00Z"
},
"client": {
"id": 1,
"firstName": "Client",
"lastName": "BUSINESS",
"email": "client@business.com",
"phone": "+237987654321",
"company": "Business Corp"
},
"documents": [
{
"id": 1,
"type": "LOADING_PERMIT",
"fileName": "permit-001.pdf",
"filePath": "/uploads/documents/permit-001.pdf",
"status": "VALID",
"expiryDate": "2024-12-31",
"uploadedAt": "2024-01-15T07:00:00Z"
}
],
"statusHistory": [
{
"id": 1,
"status": "PENDING",
"changedAt": "2024-01-15T07:00:00Z",
"comment": "Transport créé"
},
{
"id": 2,
"status": "IN_TRANSIT",
"changedAt": "2024-01-15T08:00:00Z",
"comment": "Départ confirmé"
}
]
}
}

3. Lister les VĂ©hicules​

Pattern : transports.vehicles.all

Payload (VehicleQueryDto)​

{
"page": 1,
"limit": 10,
"type": "TRUCK",
"status": "ACTIVE",
"search": "Mercedes",
"sortBy": "createdAt",
"sortOrder": "desc"
}

4. Lister les Chauffeurs​

Pattern : transports.drivers.all

Payload (DriverQueryDto)​

{
"page": 1,
"limit": 10,
"status": "ACTIVE",
"licenseStatus": "VALID",
"search": "Jean",
"sortBy": "createdAt",
"sortOrder": "desc"
}

5. Valider un Document​

Pattern : transports.documents.validate

Payload​

{
"id": "document-uuid",
"validationData": {
"status": "VALID",
"comment": "Document vérifié et conforme",
"validatedBy": "admin-uuid",
"expiryDate": "2025-12-31"
}
}

6. Changer le Statut d'un Transport​

Pattern : transports.update-status

Payload​

{
"id": "transport-uuid",
"statusData": {
"status": "DELIVERED",
"comment": "Livraison effectuée avec succÚs",
"actualArrival": "2024-01-15T13:45:00Z"
}
}

7. Statistiques des Transports​

Pattern : transports.stats

Payload​

{
"period": "month",
"driverId": "driver-uuid"
}

RĂ©ponse​

{
"success": true,
"message": "Transport statistics retrieved successfully",
"result": {
"overview": {
"totalTransports": 250,
"activeTransports": 45,
"completedTransports": 180,
"cancelledTransports": 25,
"totalVehicles": 35,
"activeDrivers": 28
},
"byStatus": [
{"status": "PENDING", "count": 15},
{"status": "IN_TRANSIT", "count": 30},
{"status": "DELIVERED", "count": 180},
{"status": "CANCELLED", "count": 25}
],
"byVehicleType": [
{"type": "TRUCK", "count": 150},
{"type": "VAN", "count": 80},
{"type": "MOTORCYCLE", "count": 20}
],
"performance": {
"onTimeDeliveries": 165,
"delayedDeliveries": 15,
"averageDeliveryTime": "5.2 heures",
"customerSatisfaction": "92%"
},
"topDrivers": [
{
"driverId": "driver-uuid",
"driverName": "Jean TRANSPORT",
"completedTransports": 25,
"onTimeRate": "96%",
"rating": 4.8
}
]
}
}

📊 Enums et Statuts​

Statuts de Transport (TransportStatus)​

enum TransportStatus {
PENDING = 'PENDING', // En attente
CONFIRMED = 'CONFIRMED', // Confirmé
IN_TRANSIT = 'IN_TRANSIT', // En transit
DELIVERED = 'DELIVERED', // Livré
CANCELLED = 'CANCELLED', // Annulé
DELAYED = 'DELAYED' // Retardé
}

Types de VĂ©hicules (VehicleType)​

enum VehicleType {
TRUCK = 'TRUCK', // Camion
VAN = 'VAN', // Camionnette
MOTORCYCLE = 'MOTORCYCLE' // Moto
}

Statuts de Document (DocumentStatus)​

enum DocumentStatus {
PENDING = 'PENDING', // En attente
VALID = 'VALID', // Valide
EXPIRED = 'EXPIRED', // Expiré
REJECTED = 'REJECTED' // Rejeté
}

Types de Documents (DocumentType)​

enum DocumentType {
LOADING_PERMIT = 'LOADING_PERMIT', // Permis de chargement
VEHICLE_REGISTRATION = 'VEHICLE_REGISTRATION', // Carte grise
INSURANCE = 'INSURANCE', // Assurance
DRIVER_LICENSE = 'DRIVER_LICENSE' // Permis de conduire
}

🚀 FonctionnalitĂ©s AvancĂ©es​

1. Suivi en Temps RĂ©el​

  • GĂ©olocalisation : Position des vĂ©hicules
  • Alertes automatiques : Retards, pannes
  • Notifications : Clients et chauffeurs
  • Historique des trajets : TraçabilitĂ© complĂšte

2. Gestion des Documents​

  • Validation automatique : VĂ©rification des dates
  • Alertes d'expiration : Renouvellement requis
  • Stockage sĂ©curisĂ© : Documents officiels
  • Audit trail : Historique des validations

3. Performance et Analytics​

  • KPIs de performance : Temps de livraison
  • Analyse des retards : Causes et solutions
  • Satisfaction client : Feedback et notes
  • Optimisation des routes : EfficacitĂ© Ă©nergĂ©tique

4. Gestion des Ressources​

  • Planning des vĂ©hicules : DisponibilitĂ©
  • Affectation des chauffeurs : CompĂ©tences
  • Maintenance prĂ©ventive : Calendrier
  • CoĂ»ts opĂ©rationnels : Suivi budgĂ©taire

💡 Exemples d'Utilisation​

Superviser les Transports Actifs​

{
"page": 1,
"limit": 50,
"status": "IN_TRANSIT",
"sortBy": "departureDate",
"sortOrder": "asc"
}

Valider un Permis de Chargement​

{
"id": "doc-permit-123",
"validationData": {
"status": "VALID",
"comment": "Permis vérifié - conforme aux réglementations",
"validatedBy": "admin-transport-uuid",
"expiryDate": "2024-12-31"
}
}

Analyser les Performances Mensuelles​

{
"period": "month",
"includeDriverStats": true,
"includeVehicleStats": true
}

🎯 Le module Transports Management fournit une supervision complĂšte des opĂ©rations de transport avec suivi en temps rĂ©el, gestion documentaire et analytics avancĂ©es pour optimiser l'efficacitĂ© opĂ©rationnelle.