# OSRM — moteur de routes (matrice de temps de route réels) Fournit à l'optimiseur VRP (`roster-solver`) une **matrice de temps de route** réels (réseau routier OSM), au lieu du haversine à vol d'oiseau. Le hub (`targo-hub`, `lib/roster.js` → `osrmMatrix`) appelle `OSRM /table` puis passe la matrice à `roster-solver /route`. Auto-hébergé → **gratuit, offline, sans coût par appel** (contrairement à Mapbox Matrix). - Image : `osrm/osrm-backend` (pipeline **MLD**) - Conteneur : `osrm` sur le réseau `erpnext_erpnext`, port interne `5000`, `--restart unless-stopped` - Données : extrait **Québec** de Geofabrik, préprocessé dans `/opt/osrm/` (host) - Config hub : `OSRM_URL` (défaut `http://osrm:5000`) ## (Re)déploiement / mise à jour de la carte ```sh mkdir -p /opt/osrm && cd /opt/osrm curl -sL -o quebec-latest.osm.pbf https://download.geofabrik.de/north-america/canada/quebec-latest.osm.pbf docker pull osrm/osrm-backend docker run --rm -v /opt/osrm:/data osrm/osrm-backend osrm-extract -p /opt/car.lua /data/quebec-latest.osm.pbf docker run --rm -v /opt/osrm:/data osrm/osrm-backend osrm-partition /data/quebec-latest.osrm docker run --rm -v /opt/osrm:/data osrm/osrm-backend osrm-customize /data/quebec-latest.osrm docker rm -f osrm 2>/dev/null || true docker run -d --name osrm --network erpnext_erpnext --restart unless-stopped \ -v /opt/osrm:/data osrm/osrm-backend \ osrm-routed --algorithm mld --max-table-size 2000 /data/quebec-latest.osrm ``` Préproc ~10 min pour le Québec (pic RAM ~4,4 Go). Rafraîchir la carte = relancer le bloc (re-télécharge le pbf + re-préprocesse). Vérifier : ```sh docker exec targo-hub node -e 'require("http").get({host:"osrm",port:5000,path:"/table/v1/driving/-74.10,45.05;-74.35,45.12?annotations=duration"},r=>{let d="";r.on("data",c=>d+=c);r.on("end",()=>console.log(d))})' # → {"code":"Ok","durations":[[0,2160],[2160,0]], ...} (secondes) ``` ## Phase suivante (optionnel) - Recalculer la carte périodiquement (cron mensuel) — le réseau routier évolue peu. - Si on sort du Québec : extrait plus large (Canada) — plus de RAM/disk au préproc.