Accueil · Documentation · Fonctionnalités
Fonctionnalités
Passation de véhicule (QR)
Chaîne de garde à double scan : le chauffeur entrant ouvre l'état des lieux en scannant le QR du véhicule, le sortant libère, l'affectation est transférée.
Chaque véhicule possède un jeton de passation (fleet_vehicles.handover_token) qui donne
l'adresse publique collée sous forme de QR code sur le véhicule:
https://flotte.kobehtrack.ci/passation/<jeton>
Le chauffeur scanne ce QR avec l'appareil photo de son téléphone (ou depuis l'application KOBEH-TRACK): la page de passation s'ouvre dans le navigateur, sans installation.
Déroulé
| Étape | Qui | Effet |
|---|---|---|
| 1. Scan + état des lieux | chauffeur entrant | photo du QR, kilométrage, niveau de carburant, remarques → la passation passe en open; le titulaire sortant et les gestionnaires sont prévenus par e-mail |
| 2. Scan + remise | chauffeur sortant (titulaire) | confirme la remise (remarques facultatives) → confirmed |
| 3. Transfert | automatique | l'affectation exclusive du véhicule passe au chauffeur entrant (fleet_assignments) |
| 4. Sans réponse | automatique | à l'échéance (HANDOVER_TTL_MIN, 120 min par défaut) la passation est libérée automatiquement avec la mention correspondante |
| 5. Contrôle | gestionnaire | peut forcer la remise ou annuler la demande depuis la fiche du véhicule (« 📱 Passation (QR) ») |
Croisement téléphone / traceur
Le téléphone qui scanne transmet sa position; le serveur la compare au dernier point du
traceur du véhicule (HANDOVER_NEAR_M, 300 m par défaut):
- dans le rayon → mention « sur place (x m du traceur) »;
- au-delà → mention « à distance (x km) » et la remise exige un gestionnaire (le titulaire ne peut pas confirmer à distance);
- position indisponible (GPS refusé) → « position non vérifiée », la remise reste possible.
Modèle de données
db/handover_v1.sql: colonne handover_token (unique) sur fleet_vehicles et table
fleet_handovers (statut open|confirmed|cancelled|expired, titulaire sortant, entrant,
état des lieux, distance de scan, échéance, validation gestionnaire).
L'échéance est appliquée à la lecture (libererEcheues): chaque appel d'API de passation
clôture les passations échues et transfère l'affectation.
API
GET /api/fleet/handover/scan/:jeton fiche véhicule + passations en cours (chauffeurs inclus)
POST /api/fleet/handover/scan/:jeton/open ouvrir une passation (état des lieux)
POST /api/fleet/handover/:id/release libérer le véhicule (titulaire ou gestionnaire)
POST /api/fleet/handover/:id/cancel annuler (auteur ou gestionnaire)
GET /api/fleet/handover/vehicle/:id QR du véhicule + passations en cours (gestion)
GET /api/fleet/handover/pending toutes les passations en cours (gestion)
Le routeur de passation est monté avant celui du parc: les profils « terrain » (chauffeur/employé) y ont accès, alors qu'ils n'ont pas accès aux écrans de gestion.
Réglages
| Variable | Défaut | Rôle |
|---|---|---|
HANDOVER_TTL_MIN |
120 | délai avant libération automatique (minutes) |
HANDOVER_NEAR_M |
300 | tolérance téléphone ↔ traceur (mètres) |
PUBLIC_FLOTTE_URL (ou NEXT_PUBLIC_FLOTTE_URL) |
https://flotte.kobehtrack.ci |
adresse portée par le QR |
Notifications
handover_request— envoyé au titulaire sortant et aux gestionnaires à l'ouverture;handover_done— envoyé au chauffeur entrant et aux gestionnaires à la confirmation (catégorie de préférences handover).
Tests de bout en bout
# sur l'hôte de développement (pile docker locale)
python3 scripts/tests/handover-e2e.py # QR, double scan, chaîne de garde, transfert, auto-libération, notifications
python3 scripts/tests/handover-proximite.py # proximité téléphone/traceur: refus à distance, validation gestionnaire
python3 scripts/tests/chauffeurs-docs.py # documents chauffeur (permis synchronisé) et rattachement de compte
Les scripts créent leurs comptes/chauffeurs de test puis nettoient derrière eux (comptes, chauffeurs, passations, notifications, affectations restaurées).
Vérification en production
scripts/tests/handover-prod.py déroule la totalité du parcours sur la production
(HTTPS, cookies, notifications) avec un véhicule et des comptes de test créés puis
supprimés: QR généré, titulaire initial, ouverture par l'entrant, remise par le sortant,
transfert de l'affectation, notifications, nettoyage complet.
ssh root@51.75.203.223
cd /opt/traccar-platform && python3 scripts/tests/handover-prod.py # 18/18
À exécuter sur le serveur (l'accès base de données passe par docker exec).