Skip to content

Latest commit

 

History

72 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TB-OptimisationBus - Guide d'installation et d'utilisation

Prérequis

Afin de faire fonctionner ce projet, il est nécessaire d'installer Docker sur la machine afin de faire tourner la base de données ainsi que le frontend et le backend en mode production. Pour démarrer le projet en mode développement, il est également nécessaire d'avoir Docker (pour la base de données), ainsi que npm pour le frontend et maven.

Mise en place de la base de données

Ajout des données

Avant de pouvoir utiliser la base de données, il faut télécharger les données nécessaires et les placer dans leur dossier respectif dans database/data.

  • gtfs : Ce sont les données statiques de l'API GTFS d'open transport data. Les données sont disponibles via ce lien. Il faut ensuite dézipper les fichiers .txt dans le dossier gtfs.

  • traffics_point : Ces données contiennent des informations sur les arrêts et sont utilisées pour la correspondence entre les noms des arrêts et leur identifiant sloid. Les données sont disponibles via ce lien. Il faut ensuite dézipper le fichier téléchargé et placer son contenu (le fichier .csv) dans le dossier traffics_point.

  • afa_sab : Ces données sont celles d'affectations du personnel de conduite. Il faut placer le fichier .afa et le fichier .sab dans le dossier afa_sab.

  • mapinfo : Ce sont les données concernant le parcours et la position des arrêts des différentes lignes de bus. Il, pour chaque ligne, placer les fichiers mapinfo (.DAT, .ID, .MAP et .TAB) pour les arrêts, nommé Arrets_x contenant les infos des arrêt et Ligne_x contenant les infos du parcours et où x est le numéro de la ligne. Par exemple, pour la ligne 1, il faut les fichiers Arrets_1.DAT,Arrets_1.ID,Arrets_1.MAP,Arrets_1.TAB,Ligne_1.DAT,Ligne_1.ID,Ligne_1.MAP et Ligne_1.TAB.

Démarrage verion production (docker)

Obtention du certificat SSL

Pour obtenir un certificat, il faut passer par un CA (Certificate Authority). Pour un test, il est aussi possible d'en générer un auto-signé. Cela peut se faire avec l'outils openssl et la commande suivante :

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365

Configuration de l'environnement

La configuration de l'application se fait à partir des variables d'environnement. Pour cela, il y a un fichier .env.template qui contient le nom des variables à configurer. Pour l'utiliser, il faut le renommer en .env et ajouter les valeurs suivantes:

  • DB_PASSWORD: Mot de passe qui sera utilisé dans la base de donnée
  • ENDPOINT_ADDRESS: Adresse à laquelle sera atteignable l'application. Par exemple http://localhost ou https://mon.app.ch
  • GTFS_API_TOKEN: Jeton d'authentification pour l'api GTFS-RT. Disponible à partir du lien suivant.
  • PGDATA_VOLUME_PATH: Chemin vers le dossier qui contiendra les données de la base de données. Par exemple .\data\pgdata ou /mnt/volume/pgdata.
  • SSL_CERTIFICATE: Chemin vers le certificat SSL. Par exemple /secret/cert.pem.
  • SSL_CERTIFICATE_KEY: Chemin vers la clé SSL. Par exemple /secret/key.pem.
  • SSL_PASSWORD_FILE: Chemin du fichier texte contenant le mot de passe du certificat ssl.

Le fichier contient également quelques autres variables d'environnement qui sont déjà configurées par défaut pour fonctionner avec l'application, mais qui peuvent être modifiées si besoin :

  • GTFS_API_URL: URL de l'api GTFS-RT de open transport data. Par défaut https://api.opentransportdata.swiss/la/gtfs-rt
  • DB_ADDRESS= Adresse à laquelle est atteignable la base de donnée. Par défaut db (nom du container du docker compose).
  • DB_USER: Nom de l'utilisateur dans la base de données. Par défaut my-user.
  • DB_NAME: Nom de la base de données. Par défaut busManagerDB.
  • DB_PORT: Port utilisé par la base de données. Par défaut 5432.
  • TL_ID: Identifiant de l'entreprise des transports lausannois. Par défaut 151.
  • TIMEZONE: Nom du fuseau horaire dans lequel l'application fonctionne. Par défaut Europe/Paris.

Lancement du docker

Pour lancer l'application, il suffit de se déplacer dans le dossier qui contient le fichier compose.yml et d'effectuer la commande suivante:

docker compose up

Le premier lancement peut prendre plusieurs dizaines de minutes, car docker doit construire les images, puis la base de données doit importer et indexer toutes les données, mais devrait être beaucoup plus rapide les fois d'après.

Démarrage version dev (npm + maven)

Lancer la base de données

Avant de lancer la base de données, il faut configurer les variables d'environnement DB_PASSWORD et PGDATA_VOLUME_PATH comme décrit ici. Ensuite, il faut lancer le docker compose, mais avec uniquement la db. Lors du premier lancement, il faut également lancer le container gdal-import qui a pour but de gérer l'import des données.

Premier lancement (ou si script d'import ajouté):

docker compose up db gdal-import

Lancement ultérieur :

docker compose up db

Lancement du backend

Avant de lancer le backend, il faut ajouter le jeton de l'api GTFS-RT dans les variables d'environnement du backend pour le profil dev. Comme pour l'application docker, le dossier backend également un fichier .env.template qu'il faut renommer en .env. Toutes les variables sont prédéfinies sauf GTFS_API_TOKEN à laquelle il faut ajouter le jeton de l'api GTFS-RT (comme décrit ici).

Ensuite, il faut que la base de données soit prête à accepter des connexions. Une fois que c'est bon, il est possible de démarrer le backend avec soit l'interface de l'IDE utilisé (si disponible) ou bien la commande suivante :

mvn spring-boot:run --define spring-boot.run.arguments="--spring.profiles.active=dev"

A noter que si vous utilisez l'interface de l'IDE, il faut le configurer pour lancer le projet avec le profile dev. Sinon, le fichier d'environnement .env ne sera pas utilisé et l'application ne fonctionnera pas.

Le backend sera disponible à l'adresse http://localhost:8080

Lancement du frontend

Pour le frontend, l'environnement est déjà configuré et ne nécessite pas d'ajout. Avant la première utilisation, il faut installer les dépendances avec la commande suivante :

npm install

Ensuite, pour démarrer le serveur de développement, il faut utiliser la commande suivante :

npm start

Le frontend sera disponible à l'adresse http://localhost:3000

Utilisation du programme

Présentation de l'interface

L'interface graphique est composée de quatre zones:

interface

  1. Cette zone sert à entrer une ligne de bus, un arrêt et un horaire.
  2. Cette zone sert à entrer un numéro de matricule.
  3. Cette zone contient le délai trouvé pour une requête.
  4. Cette zone affiche la carte et un marqueur bleu représentant la position du bus lors d'une requête.

Utilisation

Afin d'obtenir le retard et la position d'un bus, il faut soit entrer une ligne puis un arrêt puis un horaire (1), soit un numéro de matricule (2). Une fois fait, il faut appuyer sur le bouton Obtenir la position de la zone qui a été remplie. Une fois le bouton appuyé, la zone (3) affiche une icône de chargement pendant que le serveur traite la requête. Enfin, le retard est affiché dans la zone (3) et la position du bus est affichée sur la carte (4).

Pour effectuer une nouvelle requête, il faut entrer un nouveau matricule ou bien réinitialiser la saisie d'arrêt avec le bouton Réinitialiser la sélection et entrer un nouvel arrêt.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages