đ 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â
| Filtre | Type | Description |
|---|---|---|
status | String | Statut du transport |
vehicleType | String | Type de véhicule |
driverId | String | UUID du chauffeur |
clientId | String | UUID du client |
search | String | Recherche 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.