PnX-SI / GeoNature-citizen

Portail web d'inventaire citoyen de la biodiversité à destination du grand public
https://pnx-si.github.io/GeoNature-citizen/
GNU Affero General Public License v3.0
20 stars 29 forks source link

Module sites intégré dans le coeur de la plateforme ? #34

Closed lpofredc closed 10 months ago

lpofredc commented 5 years ago

Dans le cadre d'un projet de recensement participatif des mares de l'agglomération de Grenoble, la LPO Isère et la Métropole de Grenoble ont lancé le développement d'un module "mares" dont la généricité pourra également s'appliquer à d'autres types de sites (arbres remarquables, bâtis, etc.). C'est ascan.io et @jolleon qui ont en charge ce projet.

Au regard de la complémentarité de cette approche "sites" avec celle d'observations opportunistes, je propose ce module, initialement prévue en module externe (gnc_site), intègre directement le cœur de l'application GeoNature-citizen. Le choix d'une approche "observation" ou une approche "site" sera alors défini au niveau du programme.

L'objectif de cette plateforme "site"

Il est de répertorier des sites (dans un premier temps des mares):

Pour les visites

Pour plus de généricité et réduire les temps de développements pour cette première version, il a été choisi que le formulaire soit automatiquement généré à partir d'une structure JSON stockée en bdd dans une table "types de sites". Ainsi, chaque type de site pourra disposer d'un formulaire adapté. Cette fonction devrait s'appuyer sur Angular6-json-schema-form ou sur ngx-formly.

De même, les données relevées lors des visites seront dans un premier temps stockées au format JSONB en bdd. Elles pourront être présentées sous la forme d'une table structurée par vues.

Pour les observations

La saisie des observations s'appuiera sur le formulaire en cours de développement dans le coeur de GeoNature-citizen. le lien entre les observations et les sites se fera par une table intermédiaire de correspondances.

Merci pour vos retours rapides.

jolleon commented 5 years ago

Stocker la structure elle même dans la BDD va compliquer les choses. Je pense qu'il vaut mieux partir sur un ou des fichiers JSON (avec la structure en json schema) qui vivent à coté du code:

jolleon commented 5 years ago

Pour ce qui en est de construire le module mares directement dans GNC vs dans un module externe "sites", le mettre directement dans GNC me parait être un peu plus simple, mais je n'ai pas tout le contexte sur l'ensemble du projet :)

camillemonchicourt commented 5 years ago

Oui ça semble plus pertinent de mettre ça dans le cœur car on aura 2 types de programmes :

Enfin, il est important que la partie PROGRAMME ESPÈCES en cours de développement ne soit pas complexifiée ni perturbée.

De ce que je comprends :

Très bien pour la partie PROGRAMMES SITES, mais à voir comment ne pas alourdir la partie PROGRAMME ESPÈCES en cours de développement.

lpofredc commented 5 years ago

Bonjour,

Oui, évidemment cela ne doit pas interférer avec les devs de la partie "PROGRAMME ESPECES".

Ce que nous avions convenu avec @patkap, c'est que le choix du type de programme dans le front sera défini au niveau de la liste des programmes. Si le programme est ESPECE ou SITE, alors la route du programme sera différente (ex: urldusite/program/obstax/{id} ou urldusite/program/site/{id}).

Pour le modèle de formulaires, @jolleon propose de les mettre dans des fichiers à part entière, pourquoi pas, dans la limite ou il en sera fait mention dans la bdd (champ json_schema_file ? dans la table des types de sites ?) afin de faire le lien entre les types de sites et les fichiers de formulaires à charger. On peut imaginer un dossier custom_form avec des modèles de types (un par type de site), adaptable par l'administrateur.

Pour les observations d'espèces sur un site, les composants et services d'observations d'espèces devraient pouvoir être réutilisés.

Pour le dev de ce volet SITE, je propose de merger les devs à cette fonction dans une nouvelle branche dev_sites

camillemonchicourt commented 5 years ago

OK

samuelpriou commented 5 years ago

Bonjour,

Dans la mesure où les développements de la partie "PROGRAMME SITES" n'interfèrent pas les devs de la partie "PROGRAMME ESPECES", c'est ok pour le PNM.

J'aime bien l'idée de @jolleon qui propose de faire le lien entre les types de sites et les fichiers de formulaires à charger. On peut effectivement imaginer un dossier custom_form avec des modèles types (un par type de site), adaptable par un admin.

Ok pour merger les devs du volet SITE dans une nouvelle branche dev_sites.

jolleon commented 5 years ago

Ok, donc pour résumer:

lpofredc commented 5 years ago

Oui, c'est bien ça. Vous pouvez a minima reprendre le fichier models.py du dépot gnc_site (branche develop). Le dossier de destination des fichiers de ce module sites côté backend sera GeoNature-citizen/backend/gncitizen/core/sites côté backend et GeoNature-citizen/backend/gncitizen/core/côté frontend et GeoNature-citizen/frontend/src/app/programs/sites côté frontend.

Le json_schema sera dans un dossier GeoNature-citizen/config/custom/form. Pour l'heure, il ne contiendra qu'un fichier mares.json correspondant au projet de mares qui nous concerne.

Le choix du fichier du fichier json-schema à utiliser doit se faire après consultation de l'API pour savoir quel trame de formulaire utiliser.

camillemonchicourt commented 5 years ago

Les développements de la partie SITES ont été réalisés sur le fork https://github.com/jolleon/GeoNature-citizen/tree/mares Ils sont en production sur https://www.a-vos-mares.org

Reste donc à les rendre plus générique et les intégrer dans ce dépôt.

samuelpriou commented 5 years ago

Bravo @lpofredc pour ce travail !

lpofredc commented 5 years ago

Merci, tout le mérite revient à @jolleon et @QuentinJouet qui ont réalisé les développements de ce projet.

Au jour d'aujourd'hui, c'est un module "mares" avec le formulaire d'état des lieux détaillé inscrit "en dur" dans le code. Il devra évoluer vers un outil adaptatif permettant sur un programme d'inventorier différents types de sites avec des formulaires adaptés à chaque types de sites.

Il reste également un important d'intégration de ces développements à GeoNature-citizen qui a évolué en parallèle à ce développement (dont une montée en version d'Angular v6 > v8).

sig-pnrnm commented 5 years ago

Question naive (alors soyez indulgents :wink: ) :

Ce module "sites" (ou "mares", ou "arbres remarquables") pourrait répondre aux besoins de plusieurs collègues.

Nous n'avons pas d'instance GeoNature-Citizen, mais une instance GeoNature (v1 et prochainement v2). Est-il possible (ou aurait-il été possible) d'intégrer ce module sites à GeoNature plutôt qu'à GeoNature-Citizen ? Je vous propose plusieurs réponses :

camillemonchicourt commented 5 years ago

Le mode "Site" est totalement intégré dans GeoNature-citizen, qui est un outil à part et non pas un module de GeoNature. C'est même pas vraiment un module de GeoNature-citizen mais plutôt un mode de GeoNature-citizen.

Et GeoNature-citizen est autonome et indépendant de GeoNature, même si il peut être intégré dans son écosystème, de la même manière que GeoNature-atlas. Voir https://github.com/PnX-SI/GeoNature-citizen/issues/100

Ce n'est pas du tout conçu ni développé comme un module GeoNature et c'est fait pour être accessible en ligne à tous, orienté grand public, avec authentification optionnelle si on veut saisir des données etc...

camillemonchicourt commented 4 years ago

Fichier de description des champs du programme "mares" : https://github.com/PnX-SI/GeoNature-citizen/blob/dev/config/custom/form/mares.json

nobohan commented 3 years ago

Bonjour,

Nous allons utiliser Geonature-citizen dans un projet de relevés d'éléments de biodiversité dans une commune en Belgique. Je cherche à comprendre comment configurer un programme de type site. Le fichier mentionné ci-dessus (https://github.com/PnX-SI/GeoNature-citizen/blob/dev/config/custom/form/mares.json) serait bien utile mais le lien est mort.

Pouvez-vous maj le lien?

merci d'avance

camillemonchicourt commented 3 years ago

@lpofredc et @samuelpriou, vous avez des exemples de configuration de programmes en mode "espèces" (avec champs additionnels) ou en mode "sites" à partager ? Merci.

samuelpriou commented 3 years ago

Bonjour, Voici deux fichiers .json qui nous ont permis de configurer deux programmes en mode "espèces".

Le programme Gypaète Barbu https://obs.mercantour-parcnational.fr/programs/13/observations : gypaète.zip

Le programme Bouquetins des Alpes https://obs.mercantour-parcnational.fr/programs/14/observations : bouquetins.zip

J'ajoute également un programme "site" réalisé par @lpofredc permettant de décrire des mares.

Le programme Mares https://www.a-vos-mares.org/participez/ : mares.zip

Bonne journée

camillemonchicourt commented 3 years ago

Merci @samuelpriou, une documentation générale sur la configuration des champs additionnels des programmes était prévue, non ?

samuelpriou commented 3 years ago

Oui... Je vais le faire cette semaine.

lpofredc commented 3 years ago

Je viens de crééer un GIST avec quelques configs de la LPO AuRA: https://gist.github.com/lpofredc/a85e994776efd6a63757d2817fd7862c

Vous pouvez utiliser ce site pour tester et développer vos propres configs.

En parallèle, je réfléchis à un moyen de partager toutes ces ressources (hub Citizen, voire GeoNature ?).

lpofredc commented 3 years ago

... le site de test... https://partage.lpo-aura.org/minisite/ajsf/