PnX-SI/gn_mobile_core

gn_mobile_core - Définition du projet

TheoLechemia opened this issue · 2 comments

Ce dépôt accueillera l'application de synchronisation mobile de GeoNature.
Il a été acté qu'en version 2, on séparerait de manière claire l'application de synchronisation des applications mobiles.

L'application sera composé d'une application desktop de synchronisation et d'une WEB API permettant de mettre à disposition des ressources aux mobiles.
L'application de synchronisation assurera:

  • la mise a disposition et synchronisation des données du coeur de GeoNature (nomenclatures, taxons, utilisateurs) nécessaire au fonctionnements des différentes appli mobile, sous format sqllite.

La web-api respectera le format de "module geonature" (https://geonature.readthedocs.io/fr/latest/development.html#developper-et-installer-un-gn-module), et pourra s'installer via la commande geonature install_gn_module <synchro_mobile>

Les routes spécifiques à chaque module (POST notamment), utiliseront les API déjà écrites dans le module. Si d'autres routes sont nécessaires, elle seront écrites au même endroit. Dans le cas d'occtax, ici: https://github.com/PnX-SI/GeoNature/blob/master/contrib/occtax/backend/blueprint.py.

Voir complément ci-dessous...

Ce dépôt accueillera 2 ou 3 parties :

  1. l'application Android de synchronisation (nouveau)
  2. le module de synchro desktop (à discuter s'il vient dans ce dépôt)
  3. le module GeoNature de synchronisation (ex web_api)

Contrairement aux applications Android V1 qui embarquaient chacune une fonction de synchronisation des données, dans GeoNaure mobile V2, la synchronisation de toutes les applications de saisie est centralisée dans une seule et unique application.

L'application Android de synchronisation

Elle est installée sur les terminaux Android, à coté des applications des saisie.
Elle fait le pont entre le terminal Android et le module GeoNature de synchronisation.
Elle "pousse" les saisies des applications (fichiers json) vers le module GeoNature de synchronisation et "tire" les ressources nécessaires au fonctionnement des applications de saisie (fichier sqlite, fichier de settings ou de configuration, autres ressources ?).

Le module de synchro desktop

A discuter s'il est à développer dans ce dépôt.
Il s'agit d'un module (optionnel) installé sur un poste de travail (Linux, Mac, Windows)

A noter :
Ce module a le même rôle que l'application de synchronisation Android ci-dessus mais il est également capable d'assurer la maintenance applicative de tous les terminaux qui s'y connecte. Ce que n'est pas capable de faire l'application de synchronisation Android (Sébastien peux tu confirmer ça ?)

Le module GeoNature de synchronisation

A priori pas d'interface. Il se contente d'exposer des url/routes en charge de servir des ressources à destination des terminaux mobiles :

  • un fichier sqlite nécessaire au fonctionnement des applications Android et mise à jour lors de chaque synchronisation. Il contient notamment :
    • la liste des observateurs
    • la liste des nomenclatures
    • les liens entre les nomenclatures et les taxons
    • les liens entre les taxons et les unités géographiques
  • des fichiers de settings par exemple

A noter :

A discuter :

  • Où et comment sont déclarées les routes de synchronisation des modules ? Table gn_commons.t_modules ?
  • A priori c'est ce module de synchronisation de GeoNature qui connait ces url et qui se charge de les utiliser (push & pull).

Finalement ce dépôt ne contient que l'application mobile de synchronisation des données.

L'application Desktop est mise de côté. Et il n'y a pas d'API à part spécifique aux applications mobile. Elles se basent sur les routes existantes ainsi que sur des routes spécifiques mais intégrées au coeur ou aux modules existants de GeoNature.