Présentation du SI

Introduction

Aujourd'hui notre SI ne répond que aux demandes directes de gestion d'un magasin alimentaire et d'une partie de la gestion des membres. Le système que l'on utilise à « Les Grains de Sel » est basé sur le système utilisé par « La Louve » (coopérative alimentaire du 18ème) qui est construit avec la plateforme Odoo développé sur python. Il a été complété avec des applications tierces Django (python) qui ont été développées par des membres de « La Cagette » (coopérative alimentaire de Montpellier) fournis, chez nous, par notre fournisseur de service : Coopératic.

Cette présentation est légèrement spécifique à la coopérative « Les Grains de Sel » mais s'applique en grande partie aussi aux autres coopératives qui utilisent les prestations de Cooperatic

Odoo

Selon Wikipédia :

Odoo, anciennement OpenERP2 et Tiny ERP, est initialement un progiciel open-source de gestion intégré comprenant de très nombreux modules permettant de répondre à de nombreux besoins de gestion des entreprises (ERP), ou de gestion de la relation client (CRM).

Comme vous pouvez le remarquer Odoo est donc un logiciel très générique qui peut être amélioré en lui ajoutant des « modules ».

En particulier, dans le monde des coopératives alimentaires il existe deux systèmes principaux, basés sur Odoo, utilisées en France :

Notre Odoo

Le système actuel du supermarché utilise donc la version 9 de Odoo, avec les modules AwesomeFoodCoops.

Actuellement, pour de motifs hérités de notre fournisseur, Cooperatic, nous sommes en retard sur la version « officielle » AFC et utilisons le code dans sa version de 2018, un des projet prioritaire est d'ailleurs de s'aligner sur la version AFC officielle.

Le groupe informatique des Grains de sel essaye de maintenir sur un fork (dépôt de code chez nous) les différentes versions actuellement concernés :

L’intérêt de maintenir ces deux branches est de pouvoir construire (automatiquement) des images docker utilisables par les développeurs et accessibles via le docker registry fourni par Gitlab. Les images sont ensuite utilisables en choisissant un tag parmi les images disponibles ici, par exemple, en admettant vouloir l'image avec le tag 9.0-cooperatic-2021-07-16 :

docker pull registry.gitlab.com/lgds/foodcoops:9.0-cooperatic-2021-07-16

Ou alors, en admettant vouloir l'image avec le tag 9.0-lgds-cooperatic-2021-07-16 :

docker pull registry.gitlab.com/lgds/foodcoops:9.0-lgds-cooperatic-2021-07-16

La dernière version de code utilisé par Cooperatic est celle disponible directement sur leur Gitlab ici : https://gl.cooperatic.fr/cooperatic-foodcoops/odoo

Applications tierces

Le système dispose de petites applications Django qui communiquent avec Odoo via l'API (XML-RPC) qui nous permettent de gérer des besoins très concrets et de simplifier les interfaces Odoo. En facilitant vraiment des tâches spécifiques aux coopérateurs qui ne viennent qu'une fois tous les 28 jours. Toutes ces applications ont été codées originalement à Montpelier et sont maintenus par notre fournisseur, Cooperatic. En particulier, actuellement, on dispose de :

Le code de ces applications, dont la propriété et la maintenance, est organisé par Cooperatic est disponible sur leur gitlab.

Le groupe informatique des Grains de sel essaye de maintenir un fork (dépôt de code chez nous) de ces applications afin de travailler en amont (avant de pouvoir proposer des changements à Cooperatic). Le dépôt de code des applications sur lequel nous travaillons est disponible ici :

Applis-tierces (si dev pour LGDS) et Applis-tierces (Cooperatic)

Nous essayons de centraliser les changements que l'on souhaite faire au sein des grains de sel sur une branche dev_lgds sur laquelle vous devrez proposer des « Merge Requests ». (Voir le paragraphe dédié plus bas si vous ne connaissez pas les merge requests)

Premier démarrage

Actuellement, nous utilisons deux images docker privés qui contiennent des données anonymisés de la base de donnée de production. Nous n'avons pas encore vérifié complètement l'anonymisation et ne préférons donc pas rendre publique ces images pour l'instant. Il vous faudra un accès au dépôt https://gitlab.com/lgds/private-docker-images pour faire fonctionner les étapes ci-dessous. Vous pouvez nous contacter sur le salon public #lgds-accueil si vous avez des questions ou désirez un accès.

Pour votre premier démarrage de tout l'environnement (Odoo + Applis tierces), il vous faudra git et docker d'installé sur votre machine. Ensuite voici les étapes à réaliser :

docker login registry.gitlab.com

git clone git@gitlab.com:lgds/applis-tierces.git

docker-compose up

Détails sur l'architecture logicielle et les services utilisés

La commande docker-compose up créé et démarre les containers définis dans le fichier docker-compose.yml situé à la racine du projet applis-tierces. Il contient les 4 services/containers suivant :

On peut schématiser ces services et leurs dépendances comme suit:

BxU8V2RaOv9MtAvS-docker-compose-schema.png

N.B. Lors du 1er lancement, la database fera un pg_restore de la base de données d'Odoo (dump anonymisé créé par nos soins) ce qui aura pour conséquence de ne la rendre accessible qu'à la fin de ce processus (env 5 minutes)

Organisation du travail collaboratif

L'ensemble des tickets liés aux applications tierces sont centralisés dans le projet gestion-informatique. Sentez vous libre de vous attribuer un ticket en vous mettant en tant qu'« assignee ». Sinon n'hésitez pas à demander au groupe informatique de vous en attribuer un.

De préférence, prévenez sur le salon Element #lgds-informatique que vous commencez à traiter un sujet. Chaque colonne du tableau représente un état d'avancement des différents dev que vous glisserez dans la colonne appropriée au fur et à mesure de son avancement.

Proposition de changement (Merge Request)

Pour travailler à plusieurs sur une base de code commune plusieurs choses sont à prendre en compte. Git est un élément essentiel pour favoriser cette collaboration. C'est pourquoi nous souhaitons utiliser le « pull request flow » qui est très commun dans les projets open-source.

Prenez 5-10 minutes pour lire cette article très bien écrit en français qui décrit ce flux de travail : Guide sur le Pull (ou Merge) Request Workflow. Cela sera essentiel pour comprendre la méthode et pouvoir travailler ensemble. Dans notre cas, vous pouvez remplacer dans l'article :

Recommandations pour utiliser Git

Lors que vous faites des changements (git commit) essayez de prendre le temps d'écrire un message humain rattaché à vos changements de code. Un commit contient en effet, non seulement des changements de code, mais aussi un message. C'est un très bon réflexe à prendre que de bien rédiger ses messages de commit car cela aidera les personnes qui vont relire votre code, ou les personnes qui vont essayer de comprendre la raison de tel ou tel changement.

Exemple d'un commit qui donne beaucoup d'information : 44a623. Si vous regardez, il contient un titre et une description humaine qui permet d'identifier plusieurs choses :

Convention de nommage de la branche

Cette partie n'est qu'une suggestion

Pattern proposé X-NomDeBranche où :

Autres applications diverses

En plus des applis tierces, à Montpelier un coopérateur a développé des petites applications pour résoudre des problèmes qui impliquent des périphériques externes (imprimantes d'étiquettes et balances). Elles ont été développés sur VBA dans Microsoft Access. Toutes les applications ont un schéma similaire : transmission des données depuis un service Django sur un serveur WebDAV en format txt qui est lu et traité par l'application.

Schéma global

Voici un schéma global de notre SI actuel :

odoo-interfoodcoop.png


Révision #32
Créé 15 mars 2021 00:52:34 par Iñigo AGUAS ARDAIZ
Mis à jour 25 janvier 2022 17:11:56 par Paul B.