routeco

Détour 0.4.5

Optimiseur de trajets routiers multicritère pour la France, auto-hébergeable et sans API commerciale obligatoire.

Le projet compare plusieurs itinéraires selon :

Le profil initial correspond à une Renault Twingo 2 essence :

État actuel

Fonctionnel :

Encore incomplet :

Le fichier CHATGPT_CONTEXT.md contient l’état exact du projet pour reprendre le développement dans une nouvelle conversation.

Distribution desktop préparée

La cible publique est Détour, distribuée pour Windows, Linux et macOS. L’installateur restera léger : au premier lancement, l’application téléchargera une seule fois le pack de données France depuis GitHub Releases, le vérifiera par SHA-256 puis le conservera sur l’ordinateur.

Les outils préparés dans cette version sont :

./.venv/bin/python scripts/build_data_release.py --version 1
bash scripts/publish_data_release.sh dist/data-release/data-france-v1
./.venv/bin/python scripts/install_release_data.py \
  https://github.com/Alexis-Tissier/routeco/releases/download/data-france-v1/detour-data-france-v1.json

Le pack peut être fractionné automatiquement en fichiers de 1 900 Mio maximum, compatibles avec la limite par fichier de GitHub Releases.

La page publique est préparée dans site/ pour : https://detour.alexis-tissier.fr.

Voir docs/distribution/DESKTOP.md.

Installation locale

Python 3.11+ et Java 17+ sont requis.

python3 -m venv .venv
./.venv/bin/python -m pip install -U pip
./.venv/bin/python -m pip install -e '.[dev]'

GraphHopper et les données France sont volontairement exclus du dépôt Git :

GRAPHHOPPER_RAM=8g ./scripts/setup_graphhopper.sh

Le premier import construit le graphe local et peut prendre plusieurs minutes.

Lancer Détour

./scripts/routeco.sh start

Puis ouvrir :

http://127.0.0.1:8000

Commandes utiles :

./scripts/routeco.sh status
./scripts/routeco.sh logs
./scripts/routeco.sh restart-app
./scripts/routeco.sh restart
./scripts/routeco.sh verify-geocoding
./scripts/routeco.sh verify-diversity
./scripts/routeco.sh verify-cache
./scripts/routeco.sh doctor
./scripts/routeco.sh stop

Configuration des données

Copier l’exemple :

cp .env.example .env

Exemple pour placer la BAN sur un autre disque :

ROUTECO_BAN_DB=/chemin/vers/routeco-data/ban/ban.sqlite

L’index des communes est créé automatiquement au premier démarrage à partir de l’API Découpage administratif officielle. Il peut être actualisé manuellement :

./scripts/routeco.sh update-communes

Il est indépendant de la BAN : une commune comme Versailles reste donc disponible même si son département n’a pas été importé dans ban.sqlite.

Les données lourdes restent hors Git :

Les petites matrices normalisées de data/tolls/*.csv sont versionnées afin qu’une nouvelle conversation puisse analyser le moteur sans télécharger les données lourdes.

Tests

./.venv/bin/python -m pytest -q

La version 0.4.5 contient 191 tests automatiques.

Une GitHub Action exécute également les tests à chaque push et pull request.

Le guide docs/deployment/VPS.md décrit la cible personnelle 2 OCPU / 12 Gio, les limites de concurrence et les services systemd proposés.

Validation réelle France

GraphHopper doit tourner :

./scripts/routeco.sh validate
./scripts/routeco.sh validate-random 50
./scripts/routeco.sh validate-gold

Les rapports locaux sont créés dans data/reports/ et ignorés par Git. Le dernier rapport utile a été copié dans docs/validation/ pour conserver l’historique de travail.

Architecture

Navigateur
  ├── interface de comparaison
  ├── détail carburant / péages
  └── carte OpenStreetMap interactive + liens GPS
          ↓
FastAPI
  ├── index national des communes
  ├── BAN SQLite pour les adresses détaillées
  ├── modèle de consommation
  ├── sélection multicritère
  └── appariement des péages
          ↓
GraphHopper local + OpenStreetMap France

Règle de développement importante

Les villes de validation servent uniquement de tests. Le moteur ne doit jamais contenir de correction du type « si départ = Paris et arrivée = Lyon ».

Toute correction doit reposer sur des propriétés générales : géométrie du tracé, ordre des gares, réseau concessionnaire, sections payantes, matrices tarifaires et confiance du résultat.

Publier le pack France vérifié

./.venv/bin/python scripts/prepare_data_release.py \
  --version 1 \
  --output dist/data-release \
  --publish

La release de données est fractionnée sous 2 Gio par fichier, vérifiée localement et publiée sans devenir la « dernière version » de l’application.