LogiTrain/ Guide de l'administrateur

LogiTrain — Guide d'administration

Version 0.1 — septembre 2026 — InTech Solutions pour le CFA Sidi Mansour (ATFP)

Ce guide s'adresse à la personne qui installe et exploite le serveur LogiTrain : informaticien du centre ou formateur référent. Il couvre l'installation, la configuration initiale, les comptes, les bases de données par promotion, les sauvegardes, le RFID, les mises à jour et le dépannage.

Documents liés : manuel_utilisateur.md (utilisation des écrans), guide_formateur.md (conduite des cours), docs/API.md (API ouverte), logitrain_wms/static/description/rfid_hardware.md (matériel RFID indicatif).


1. Vue d'ensemble

LogiTrain est un ensemble de modules Odoo 18 Community (logiciel libre, aucune licence récurrente) installés sur un serveur du centre et utilisés depuis un simple navigateur web sur les postes de la salle.

Module Odoo Rôle Menu dans LogiTrain
logitrain_base Cadre de formation : promotions, exercices, remises, notation, catalogue (types de contenants, profils de véhicules, compétences), paramètres, réinitialisation Formation, Catalogue, Configuration
logitrain_tour Tournées de livraison : carte, itinéraires, optimisation, réglementation Tournées
logitrain_loadplan Plans de chargement 3D (véhicules, conteneurs, palettes) Plans de chargement
logitrain_tour_loadplan Liaison tournée → plan de chargement (installé automatiquement) bouton sur la tournée
logitrain_tour_fleet Liaison tournée → parc (mission, consommation, contrôle des documents) (installé automatiquement) voir manuel, section Tournées
logitrain_fleet Gestion de parc : administratif, technique, financier Parc
logitrain_wms Entrepôt et RFID Entrepôt et RFID
logitrain_demo_tn Jeu de données pédagogique tunisien fictif (base modèle)

Services techniques autour d'Odoo (tous auto-hébergés, sans abonnement) :

Service Rôle Obligatoire ?
PostgreSQL 16 Base de données Oui
OSRM Calcul d'itinéraires routiers et de matrices distance/temps sur la carte OpenStreetMap de la Tunisie Non : sans OSRM, les tournées passent en mode approché (vol d'oiseau × coefficient routier)
VROOM Optimisation des tournées multi-véhicules Non : sans VROOM, une heuristique intégrée prend le relais
Serveur de tuiles (tileserver-gl) Fond de carte hors ligne Non : sinon tuiles OpenStreetMap en ligne
nginx Point d'entrée web (port 80), restriction du gestionnaire de bases Oui
backup Sauvegarde quotidienne automatique Recommandé
rfid-bridge Passerelle entre un lecteur RFID fixe (LLRP) ou série et Odoo Non : uniquement avec un lecteur fixe

Principe pédagogique : aucun cours ne doit être bloqué par un moteur absent. Sans Internet, sans OSRM et sans VROOM, toutes les fonctions restent utilisables en mode approché.


2. Prérequis

2.1 Serveur

Élément Recommandation (≤ 30 utilisateurs simultanés)
Système Linux 64 bits (Ubuntu Server 22.04 ou 24.04 LTS conseillé). Sur Windows Server, utiliser une machine virtuelle Linux (Hyper-V).
Processeur 4 vCPU
Mémoire 8 Go (Odoo ≈ 2 Go, PostgreSQL ≈ 2 Go, OSRM Tunisie ≈ 1 Go ; la construction du graphe OSRM demande environ 2 Go)
Disque 60 Go (bases, pièces jointes, sauvegardes 14 jours, données OSM)
Logiciels Docker Engine et le plugin Docker Compose v2, git, curl
Réseau Adresse IP fixe sur le réseau local de la salle ; port 80 ouvert vers les postes

2.2 Postes de la salle

Navigateur récent (Chrome, Edge ou Firefox). Aucune installation. La vue 3D des plans de chargement utilise WebGL (actif par défaut sur tous les navigateurs récents).

2.3 Accès Internet

Nécessaire seulement pour : télécharger les images Docker et l'extrait OpenStreetMap lors de l'installation, et (facultatif) afficher les tuiles OpenStreetMap en ligne. En mode hors ligne, rien ne sort du serveur (voir § 4.3).


3. Installation (pile docker-compose)

Tous les fichiers de déploiement sont dans le dossier deploy/ du dépôt.

3.1 Récupérer le logiciel

sudo mkdir -p /opt/logitrain && cd /opt/logitrain
git clone <URL du dépôt> intech-logitrain
cd intech-logitrain/deploy

Le fichier Dockerfile.odoo copie le dossier addons/ du dépôt dans l'image Odoo (/mnt/logitrain-addons). Vérifier que ce dossier contient bien les huit modules listés au § 1 avant de construire l'image.

3.2 Fichier .env

cp .env.example .env
nano .env
Variable Rôle
POSTGRES_PASSWORD Mot de passe de l'utilisateur PostgreSQL odooà changer
ODOO_ADMIN_PASSWD Mot de passe maître Odoo — à changer (voir remarque ci-dessous)
ODOO_IMAGE_TAG Version de l'image Odoo (laisser 18.0)
PUBLIC_HOST Nom ou IP du serveur vu par les postes (ex. logitrain.centre.local)
OSM_PBF_URL Extrait OpenStreetMap utilisé par osrm/build.sh (Tunisie, Geofabrik, par défaut)
TILES_URL Rappel de l'URL de tuiles à saisir dans les paramètres Odoo

Mot de passe maître : deploy/odoo.conf désactive la liste et le gestionnaire web des bases (list_db = False), ce qui protège déjà les bases. Si vous réactivez le gestionnaire, ajoutez une ligne admin_passwd = <mot de passe fort> dans odoo.conf.

3.3 Construire le graphe routier OSRM (Tunisie)

./osrm/build.sh

Le script télécharge tunisia-latest.osm.pbf (Geofabrik), puis exécute osrm-extract (profil voiture), osrm-partition et osrm-customize (algorithme MLD). Compter quelques minutes et ~2 Go de mémoire. Le résultat est dans deploy/osrm/data/.

Mise à jour de la carte (gratuite, à faire par exemple chaque trimestre) : supprimer osrm/data/tunisia-latest.osm.pbf, relancer ./osrm/build.sh, puis docker compose restart osrm vroom.

Limite connue : OSRM utilise le profil voiture pour tous les véhicules. Le comportement des poids lourds est approché par le coefficient de vitesse du profil de véhicule ; les restrictions poids lourds (hauteur, poids, zones) sont simulées par LogiTrain sur le tracé calculé (voir manuel, Restrictions routières).

3.4 Démarrer la pile

docker compose up -d --build
docker compose ps          # tous les services doivent être "running" / "healthy"

Services démarrés : db, odoo, osrm, vroom, nginx, backup. Le serveur est accessible sur http://<PUBLIC_HOST>/.

VROOM est configuré par deploy/vroom/config.yml : moteur de routage osrm (service osrm:5000), jusqu'à 1 000 points et 50 véhicules par problème, délai maximal 300 s.

3.5 Fond de carte hors ligne (facultatif)

  1. Produire un fichier .mbtiles couvrant la Tunisie (zooms 5 à 14), par exemple à partir d'OpenMapTiles ou Protomaps.
  2. Le copier dans deploy/tiles/data/tunisia.mbtiles avec un config.json pour tileserver-gl.
  3. Démarrer le service : docker compose --profile offline up -d tiles.
  4. Dans Odoo, Paramètres → LogiTrain → Tuiles de carte : http://<PUBLIC_HOST>/tiles/styles/basic/{z}/{x}/{y}.png.

nginx publie le serveur de tuiles sous /tiles/ (cache navigateur 30 jours). Les données OpenStreetMap sont sous licence ODbL : l'attribution « © OpenStreetMap contributors » reste affichée sur les cartes.

3.6 nginx

Fichier deploy/nginx/logitrain.conf :

La configuration fournie écoute en HTTP (port 80) sur le réseau local. Pour du HTTPS, ajouter un bloc listen 443 ssl avec le certificat du centre.

3.7 Créer la base modèle (« golden template »)

Le gestionnaire web des bases étant désactivé, les bases se créent en ligne de commande :

docker compose run --rm odoo odoo -d logitrain_template \
    -i logitrain_demo_tn --load-language=fr_FR,ar_001 \
    --without-demo=all --stop-after-init
docker compose restart odoo

L'installation de logitrain_demo_tn entraîne celle de tous les modules LogiTrain (les modules de liaison logitrain_tour_loadplan et logitrain_tour_fleet s'installent automatiquement) et charge le jeu de données fictif : société SudLog Distribution (dépôt de Sfax), une trentaine de clients géolocalisés avec secteurs de livraison, produits avec dimensions, codes-barres, lots, dates de péremption et étiquettes RFID ; entrepôt avec zones (réception, racks, chambre froide, zone ADR, quarantaine, expédition, retours, magasin pièces) et allées D à F dessinées sur la carte ; parc de 5 véhicules (fourgon à semi-remorque) avec documents, contrats, pneus, amortissements, missions et incidents ; bibliothèque de contenants et profils ; restrictions routières et péages d'exemple ; plans de tournées, plan récurrent, plans de chargement et scénarios d'exemple ; une promotion, des exercices, 2 formateurs et 5 apprenants (voir § 6.4).

Se connecter ensuite une première fois : http://<PUBLIC_HOST>/web/login?db=logitrain_template avec le compte admin (mot de passe initial admin), puis changer immédiatement ce mot de passe (menu utilisateur → Mon profil / PréférencesChanger le mot de passe).

3.8 Contrôle après installation (recette technique)

# Test Résultat attendu
1 docker compose ps 6 services actifs
2 curl http://<PUBLIC_HOST>/logitrain/rfid/ping {"ok": true}
3 Connexion admin, menu LogiTrain visible Sous-menus Tournées, Plans de chargement, Parc, Entrepôt et RFID, Formation, Catalogue, Configuration
4 Tournées → Plans de tournées, ouvrir « Tournée Sud », calculer une tournée Tracé routier sur la carte, moteur « osrm » ; si « approximate », vérifier l'URL OSRM
5 Plans de chargement, ouvrir « Exemple — camion 19 t », Calculer le plan de chargement Vue 3D affichée, indicateurs remplis
6 Entrepôt et RFID → Carte de l'entrepôt Allées et racks colorés
7 Imprimer un PDF (fiche véhicule, plan de chargement) PDF généré
8 Changer la langue en arabe (§ 5) Interface de droite à gauche, libellés traduits
9 Lendemain : dossier deploy/backup/out/ Un fichier .dump par base + une archive filestore-*.tgz

4. Configuration initiale

4.1 Société

Paramètres → Utilisateurs et sociétés → Sociétés : renseigner le nom du centre (ou de la société fictive), le pays Tunisie et la devise TND (dinar tunisien, 3 décimales). Les coûts (tournées, parc, chargement) s'affichent dans la devise de la société. Le logo apparaît sur les documents PDF.

4.2 Paramètres LogiTrain

Menu : LogiTrain → Configuration → Paramètres (ou Paramètres → onglet LogiTrain). Réservé au groupe Administrateur LogiTrain.

Bloc Paramètre Valeur type (pile Docker) Effet
Moteurs de calcul URL OSRM http://osrm:5000 Itinéraires et matrices. Vide ou injoignable → mode approché
Moteurs de calcul URL VROOM http://vroom:3000 Optimisation multi-véhicules. Vide ou injoignable → heuristique intégrée
Moteurs de calcul Mode hors ligne coché si pas d'OSRM N'appelle jamais de moteur externe : tournées en mode approché (vol d'oiseau × coefficient routier des règles, 1,3 par défaut)
Cartes Tuiles de carte https://tile.openstreetmap.org/{z}/{x}/{y}.png (en ligne) ou l'URL locale du § 3.5 Fond de carte des widgets. Une URL locale ajoute la couche « Local tiles » au sélecteur de couches ; elle devient la couche par défaut en mode hors ligne
Cartes Géocodage (Nominatim) vide (désactivé) ou URL d'un serveur Nominatim Conversion adresse → coordonnées GPS (bouton de géocodage des contacts et des arrêts). Vide = désactivé ; les coordonnées peuvent toujours être choisies en cliquant sur la carte

Les URL osrm et vroom sont les noms des services dans le réseau Docker : ne pas les remplacer par localhost.

4.3 Fonctionnement hors ligne

Si la salle n'a pas Internet :

  1. Construire OSRM pendant l'installation (le graphe fonctionne ensuite sans Internet) — ou cocher Mode hors ligne.
  2. Installer le fond de carte local (§ 3.5).
  3. Laisser Géocodage (Nominatim) vide, sauf si un serveur Nominatim local a été installé (non fourni dans la pile).

Aucune fonction LogiTrain n'appelle alors de service extérieur.

4.4 Paramètres pédagogiques

Les règles métier modifiables par les formateurs (règles de tournée, restrictions routières, TVA, barème de taxe, coefficients d'amortissement, plans pneumatiques, réglementation conducteurs, infractions, matrice ADR, bibliothèque de contenants, catégories de stockage) sont décrites dans le guide formateur, § 5. Les valeurs livrées sont des valeurs d'exemple à vérifier et remplacer par les valeurs tunisiennes en vigueur.

4.5 Tâches planifiées

Paramètres → Technique → Automatisation → Actions planifiées (mode développeur). Toutes quotidiennes :

Action Rôle
LogiTrain Parc : alertes d'expiration des documents Met à jour l'état des documents ; activité à J-30 et J-7 ; rappel de contre-visite technique à J-7
LogiTrain Parc : planification de la maintenance préventive Crée les interventions planifiées dues (km ou temps) et une activité
LogiTrain Fleet: tyre rotation / replacement plan Signale les pneus à permuter ou remplacer
LogiTrain WMS : purge des anciennes lectures RFID Supprime les lectures brutes de plus de 30 jours

Pour une démonstration, un formateur peut lancer la vérification d'un plan de maintenance immédiatement avec le bouton Vérifier maintenant du plan.


5. Langues français / arabe

L'interface est livrée en anglais (langue source), français et arabe (fichiers i18n/fr.po et i18n/ar.po de chaque module).

5.1 Activer les langues

Les traductions des langues activées sont rechargées automatiquement à chaque mise à jour des modules (-u, § 11). Pour forcer le remplacement de termes déjà présents en base, ajouter l'option --i18n-overwrite à la commande de mise à jour.

5.2 Changer de langue

Chaque utilisateur choisit sa langue : menu utilisateur (en haut à droite) → Mon profil / PréférencesLangue. Le changement est immédiat après rechargement de la page ; l'arabe s'affiche de droite à gauche. L'administrateur peut fixer la langue par défaut de chaque compte (Paramètres → Utilisateurs).

Les documents PDF sont imprimés dans la langue de l'utilisateur qui les génère : pour obtenir un plan de chargement en arabe, basculer la langue puis imprimer.

5.3 Limites connues

5.4 Unités et formats

Kilomètres, kilogrammes, millimètres et m³ ; heures au format 24 h ; montants en TND. Le fuseau horaire se règle par utilisateur (Préférences → Fuseau horaire : Africa/Tunis).


6. Utilisateurs et droits

6.1 Groupes LogiTrain

Paramètres → Utilisateurs et sociétés → Utilisateurs, ouvrir ou créer l'utilisateur, onglet Droits d'accès, rubrique LogiTrain :

Groupe Ce qu'il permet
Apprenant Travaille sur ses propres tournées, plans de chargement, missions, réparations, sessions RFID, inventaires… et sur les enregistrements « partagés » (sans propriétaire, ex. données de démonstration). Lecture seule sur les données de base (règles, catalogue, barèmes). Ne voit pas les travaux des autres apprenants (sauf plan de chargement explicitement partagé). Ne voit pas les corrigés.
Formateur Tout ce que fait l'apprenant + gestion des promotions, exercices, corrigés, notation, données de base et paramètres pédagogiques ; voit les enregistrements de tous les apprenants ; approuve les bons de sortie et les réparations ; outils de simulation RFID ; menu Configuration des modules.
Administrateur Tout ce que fait le formateur + Configuration → Paramètres (moteurs, cartes), lecteurs RFID et leurs jetons.

Les groupes sont cumulatifs (Administrateur ⊃ Formateur ⊃ Apprenant).

6.2 Droits Odoo standard à ajouter

Application Apprenant Formateur Pourquoi
Parc automobile Utilisateur (ajouté automatiquement par le groupe LogiTrain) Administrateur (ajouté automatiquement) Accès aux véhicules, contrats, interventions
Inventaire Utilisateur — à cocher manuellement Administrateur — à cocher manuellement Réceptions, transferts, inventaires, emplacements (module Entrepôt et RFID)

Sans le droit Inventaire, un apprenant ne peut pas travailler dans le module Entrepôt et RFID.

6.3 Créer les comptes d'une promotion

  1. Paramètres → Utilisateurs → Nouveau : nom, identifiant (ex. app2026a01), langue, fuseau horaire.
  2. Droits : LogiTrain = Apprenant, Inventaire = Utilisateur.
  3. Définir le mot de passe (menu Action → Changer le mot de passe).
  4. Répéter pour chaque apprenant (le cahier des charges prévoit 20 postes) ; pour aller plus vite, dupliquer un compte modèle (Action → Dupliquer) puis changer nom et identifiant.
  5. Ajouter les comptes à la promotion (LogiTrain → Formation → Promotions, voir guide formateur).

Les comptes peuvent aussi être importés depuis un fichier Excel/CSV (vue liste → Importer).

6.4 Comptes de démonstration (base modèle)

Identifiant Mot de passe Rôle
admin admin (à changer) Administrateur
formateur1, formateur2 identiques à l'identifiant Formateur (+ Parc et Inventaire administrateur)
apprenant1apprenant5 identiques à l'identifiant Apprenant (+ Parc et Inventaire utilisateur)

Changer ou désactiver ces mots de passe avant toute utilisation sur un réseau partagé.

6.5 Données personnelles

Les données sont stockées uniquement sur le serveur du centre. Le jeu de démonstration est fictif. Pour les comptes réels, ne saisir que le nécessaire (nom, identifiant). La suppression d'un compte ou son archivage se fait dans Paramètres → Utilisateurs.


7. Base modèle et bases par promotion

7.1 Principe

7.2 Script deploy/cohort_db.sh

À lancer depuis deploy/ sur le serveur :

./cohort_db.sh list                                   # lister les bases
./cohort_db.sh create promo_2026a                     # copier logitrain_template -> promo_2026a
./cohort_db.sh create promo_2026a mon_modele          # copier depuis un autre modèle
./cohort_db.sh reset  promo_2026a                     # supprimer puis recopier depuis le modèle
./cohort_db.sh drop   promo_2026a                     # supprimer la base et ses pièces jointes

7.3 Accès des apprenants à la bonne base

La liste des bases étant masquée, chaque promotion utilise un lien direct :

http://<PUBLIC_HOST>/web/login?db=promo_2026a

Distribuer ce lien (favori sur les postes). Pour attribuer automatiquement une base par nom d'hôte, on peut aussi utiliser l'option Odoo dbfilter dans odoo.conf (configuration avancée).

7.4 Réinitialisation des données d'exercice (sans recopier la base)

Deux niveaux :

Besoin Outil Ce qui est effacé Ce qui est conservé
Recommencer un exercice pour un apprenant, des apprenants choisis ou toute une promotion Assistant LogiTrain → Formation → Réinitialiser les données d'exercice (voir guide formateur § 8) Enregistrements d'exercice appartenant aux apprenants ciblés : tournées, plans de tournées, plans de chargement, scénarios, missions, réparations, incidents, activités conducteur, tableaux d'amortissement, documents créés, sessions RFID, campagnes d'inventaire… ; en option leurs remises Données de base (produits, véhicules, contenants, règles, barèmes, paramètres) et enregistrements partagés
Repartir d'une base propre (tous les modules, y compris mouvements de stock) ./cohort_db.sh reset <base> Toute la base de promotion La base modèle

Les mouvements de stock (réceptions, livraisons, ajustements validés), les pleins de carburant et les pneus n'ont pas de « propriétaire » : l'assistant ne les efface pas. Pour eux, utiliser cohort_db.sh reset.


8. Sauvegardes et restauration

8.1 Sauvegarde automatique

Le service backup exécute deploy/backup/backup.sh toutes les 24 h (à partir de son démarrage) :

Copier régulièrement deploy/backup/out/ sur un support externe (disque USB, NAS).

Sauvegarde immédiate (avant une mise à jour, par exemple) :

docker compose exec backup /backup.sh

8.2 Restaurer une base

cd /opt/logitrain/intech-logitrain/deploy
# 1. (si elle existe) supprimer la base abîmée
./cohort_db.sh drop promo_2026a
# 2. créer une base vide et y restaurer la sauvegarde
docker compose exec -T db createdb -U odoo -O odoo promo_2026a
docker compose exec -T db pg_restore -U odoo -d promo_2026a --no-owner < backup/out/promo_2026a-20261012-0300.dump
# 3. restaurer les pièces jointes de cette base
docker compose exec -T odoo tar xzf - -C /var/lib/odoo filestore/promo_2026a < backup/out/filestore-20261012-0300.tgz
docker compose restart odoo

Tester une restauration au moins une fois par trimestre sur une base de test (ex. restaurer sous le nom test_restore, puis ./cohort_db.sh drop test_restore).


9. RFID : lecteurs et passerelle

Aucun matériel n'est obligatoire : le simulateur (lecteur de type Simulateur, boutons Simuler des lectures) permet de faire tous les exercices. La liste indicative de matériels compatibles est dans logitrain_wms/static/description/rfid_hardware.md (UHF EPC Gen2, bande ETSI 865–868 MHz).

9.1 Déclarer un lecteur

Entrepôt et RFID → Lecteurs (formateurs ; création et jeton réservés aux administrateurs) :

Champ Contenu
Nom ex. « Portique quai 1 »
Nature Émulation clavier (USB / bureau), Lecteur fixe (LLRP via passerelle), SDK constructeur (via passerelle) ou Simulateur
Installé à Emplacement de stock où se trouve le lecteur
Fenêtre anti-collision (s) Les lectures répétées d'un même EPC par ce lecteur, dans la même session, à moins de N secondes d'intervalle, ne comptent qu'une fois (défaut 2 s ; 0 = seuls les doublons exacts sont écartés ; maximum 3600)
Jeton API Visible par les administrateurs ; à copier dans la configuration de la passerelle. Bouton Régénérer le jeton en cas de fuite (l'ancien jeton cesse de fonctionner)
Dernière connexion Mise à jour à chaque envoi de lectures

La base modèle contient trois lecteurs : Lecteur USB bureau (wedge), Portique quai (LLRP), Simulateur formateur.

9.2 Lecteurs en émulation clavier (USB, douchettes, terminaux)

Pas de passerelle : le lecteur « tape » l'EPC suivi d'Entrée dans la Console de scan (Entrepôt et RFID → Console de scan). Configurer le lecteur pour envoyer l'EPC en hexadécimal (24 caractères) avec un suffixe Entrée.

9.3 Lecteurs fixes (LLRP) ou série : passerelle rfid-bridge

La passerelle (dossier rfid-bridge/, Python) lit le lecteur, regroupe les lectures et les envoie à Odoo (POST /logitrain/rfid/reads, en-tête X-Logitrain-Token).

  1. Copier config.example.yaml en config.yaml et renseigner :
Clé Valeur
odoo_url http://<PUBLIC_HOST> (depuis un poste) ou http://odoo:8069 (depuis le réseau Docker)
token Jeton du lecteur copié depuis Odoo
session null : Odoo range les lectures dans la dernière session ouverte du lecteur
adapter llrp (lecteur fixe Impinj/Zebra…, port 5084), serial (lecteur USB-série, un EPC par ligne), mock (démonstration)
llrp.host, llrp.antennas, llrp.tx_power Adresse IP du lecteur, antennes actives, puissance (0 = défaut)
serial.port, serial.baudrate ex. /dev/ttyUSB0, 115200
batch_size, flush_seconds, max_queue Envoi par lots (50 lectures ou 2 s), file locale de 5 000 lectures en cas de coupure
  1. Lancer : - en service système : logitrain-rfid-bridge.service (installation dans /opt/logitrain/rfid-bridge, configuration /etc/logitrain/rfid-bridge.yaml) ; - ou en conteneur : image construite depuis rfid-bridge/Dockerfile, configuration montée dans /config/config.yaml ; - ou manuellement : python -m logitrain_bridge --config config.yaml.
  2. Vérifier : ouvrir une session RFID sur ce lecteur, présenter des étiquettes ; les lectures apparaissent dans la session et dans Entrepôt et RFID → Lectures brutes.

Les envois sont idempotents : une même lecture (EPC + lecteur + horodatage) n'est enregistrée qu'une fois, même si la passerelle la renvoie après une coupure.

Les adaptateurs LLRP et série n'ont pas encore été testés sur matériel réel : prévoir une séance de mise au point à la livraison des lecteurs.

9.4 Codes d'erreur de l'API RFID

Code Cause Action
401 Jeton absent, inconnu ou lecteur archivé Recopier le jeton ; vérifier que le lecteur est actif
400 JSON invalide ou champ reads absent Vérifier la version de la passerelle
200 avec unknown > 0 EPC lus mais non enregistrés dans Étiquettes RFID Générer ou saisir les étiquettes (voir manuel)

10. API ouverte et accès SQL

docker compose exec db psql -U odoo -d promo_2026a -c "CREATE ROLE etudiant_sql LOGIN PASSWORD 'xxx';
GRANT CONNECT ON DATABASE promo_2026a TO etudiant_sql;
GRANT USAGE ON SCHEMA public TO etudiant_sql;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO etudiant_sql;"

Le port PostgreSQL n'est pas publié par défaut : pour un accès depuis la salle, ajouter ports: ["5432:5432"] au service db et limiter l'accès par pare-feu. Ne jamais donner d'accès en écriture.


11. Mises à jour

11.1 Mettre à jour LogiTrain

cd /opt/logitrain/intech-logitrain
docker compose -f deploy/docker-compose.yml exec backup /backup.sh     # 1. sauvegarde
git pull                                                               # 2. nouvelle version
cd deploy
docker compose build odoo                                              # 3. nouvelle image
docker compose run --rm odoo odoo -d logitrain_template -u all --stop-after-init   # 4. mise à jour de chaque base
docker compose run --rm odoo odoo -d promo_2026a -u all --stop-after-init
docker compose up -d                                                   # 5. redémarrage

Mettre à jour toutes les bases (modèle et promotions) : une base non mise à jour affiche des erreurs à l'ouverture de certains écrans.

Les paramètres livrés (règles, barèmes, taux) sont chargés en mode « ne pas écraser » : une mise à jour ne remplace pas les valeurs modifiées par les formateurs.

11.2 Mettre à jour Odoo et les moteurs


12. Dépannage

Symptôme Cause probable Solution
Page blanche / « 502 Bad Gateway » Odoo pas démarré ou en cours de redémarrage docker compose ps, docker compose logs --tail 100 odoo
« Database not found » / l'apprenant arrive sur la mauvaise base Lien sans ?db= Utiliser http://<serveur>/web/login?db=<base>
Tournées en « approximate » (tracés en lignes droites) URL OSRM vide, service arrêté ou mode hors ligne coché Vérifier Paramètres → LogiTrain ; docker compose logs osrm ; relancer ./osrm/build.sh si osrm/data est vide
Optimisation lente ou heuristique au lieu de VROOM VROOM injoignable docker compose logs vroom ; vérifier que osrm fonctionne (VROOM en dépend)
Carte grise, pas de fond Pas d'Internet et pas de tuiles locales Installer le serveur de tuiles (§ 3.5) ou rétablir Internet
« Aucune URL Nominatim configurée : le géocodage est désactivé » Paramètre vide Normal hors ligne : placer les points en cliquant sur la carte
Vue 3D vide dans le plan de chargement Plan non calculé ou WebGL désactivé Cliquer Calculer le plan de chargement ; tester un autre navigateur
Un apprenant ne voit pas le menu Entrepôt Droit Inventaire manquant § 6.2
Un apprenant ne voit pas le travail d'un camarade Comportement normal (cloisonnement) Le formateur voit tout ; pour un plan de chargement, utiliser Partagé avec
Lecteur RFID : aucune lecture reçue Jeton erroné, pas de session ouverte, pare-feu § 9.4 ; ouvrir une session sur ce lecteur ; tester curl http://<serveur>/logitrain/rfid/ping depuis le poste de la passerelle
cohort_db.sh create : « Template database … not found » Base modèle absente ou autre nom ./cohort_db.sh list ; passer le nom du modèle en 3e argument
cohort_db.sh : erreur « is being accessed by other users » Connexion ouverte sur le modèle Refaire hors séance ; le script coupe normalement les connexions
Libellés en anglais Langue non chargée ou traductions non mises à jour § 5.1
Disque plein Sauvegardes ou lectures RFID Déplacer les anciennes sauvegardes ; vérifier la tâche de purge RFID

Journaux : docker compose logs -f odoo (erreurs applicatives), docker compose logs nginx. Pour une demande d'assistance à InTech, joindre : description, heure, base concernée, extrait des journaux et capture d'écran.