-
Notifications
You must be signed in to change notification settings - Fork 103
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Validation] Validation automatique des données #2600
Comments
Drôle de coïncidence, j'ai effectué également des recherches hier sur le dépôt à propos du fonctionnement de la validation. J'en étais arrivé à la même conclusion que toi @mvergez : il serait intéressant d'avoir un mécanisme de validation automatique. Une validation via profil me semble plus logique, mais effectivement, comme tu l'as dit, en cas de manque de données, cela ne fonctionnerait pas. Dans l'un des sujets du dépôt, quelqu'un évoquait la possibilité de récupérer via des organismes supra (genre SINP) des listes de taxons validables automatiquement. Le fonctionnement actuel est un peu déroutant : sachant que nous saisissons nous-mêmes la plupart de nos données, nous ne les validons pas. Elles ont donc par défaut le statut "En attente de validation" quand nous les transmettons au SINP. Par contre, nos quelques données qui viennent d'observateurs extérieurs passent elles par le module Validation et sont donc paradoxalement validées ! |
La valeur attribuée par défaut aux données saisies peut être modifiée. Concernant une potentielle validation automatique, les profils de taxons sont en effet un outil pertinent pour cela, et quand ils ont été mis en place leur potentielle utilisation pour de la validation automatique avait été évoquée. Ils s'appuient d'ailleurs sur des réflexions des SINP ou réseaux de différentes régions. Uniquement se baser sur une liste de taxons me semble assez léger et arbitraire. Dans tous les cas, il y aura certainement des contextes et approches variés, donc il faut un mécanisme simple, léger et adaptable/activable/désactivable. |
Merci pour vos retours ! Ce serait effectivement une bonne idée de récupérer une liste de taxon du SINP ! Après l'objectif est que chacun puisse faire sa propre liste. Je pense @camillemonchicourt que la validation sur une liste de taxon est plus pour valider les données sur des espèces qui sont beaucoup observées et dont le statut de validation est au final toujours le même. Cela permet de gagner du temps sur la validation d'un grand nombre d'observation. Je vais faire quelques tests d'implémentation et je vous tiens au courant. |
J'ai fait quelques tests, je suis allé "loin" dans l'implémentation mais peut-être que ça pourra répondre à la contrainte suivante (à part peut-être l'aspect léger) :
Voici les étapes : Création d'une nouvelle table
|
@camillemonchicourt : effectivement, je n'avais pas pensé à changer la nomenclature par défaut... Je vais m'occuper de ça, merci ! |
@mvergez, déjà si on créé une table qui part du principe que la validation automatique se base sur une liste de taxons, on est dans une approche très spécifique de votre contexte et qui, je pense, ne sera pas partagée. Cela voudrait dire = La validation automatique dans GeoNature c'est basé sur des listes de taxons... 🤔 Donc pas cohérent avec ce qui a été proposé, discuté et construit autour des profils de taxons. |
Bonjour Maxime, Les profils de taxons doc ici sont déjà prévus pour calculer les profils seulement sur des taxons sur lesquels on a suffisamment de données validées, car les altitudes extremes etc sont exclues. Du coup on ne calcule normalement des profils complets que si les données valides sont suffisamment nombreuses :
Du coup, sans passer par des listes de taxons, tu peux déjà jouer sur la fiabilité de tes profils pour faire de l'auto validation à partir de cette info là. Ensuite, la validation auto n'est pas encore mise en place au niveau de geonature. On peut imaginer un garde-fou optionnel :
|
mais du coup ca passerait pas par un trigger, mais par une tache celery lancée périodiquement ? je pense que dans tous les cas c'est préférable, le fait d'avoir des triggers en direct sur la synthèse risque de poser des soucis de time out dans les imports de masse, les liens gn2pg etc |
EDIT : pas de critère phénologique, erreur de ma part Salut Donovan, Merci pour ton retour. L'objectif ici est de ne pas se baser sur les profils de taxons. Car cela peut être dangereux car s'applique à tous les taxons. Le but est tout d'abord de se focaliser sur une liste d'espèces. Je suis d'accord avec toi pour les triggers dans la synthèse. Le souci c'est qu'une validation automatique via tache cron/celery n'a pas vraiment de sens. Il faudrait attendre quelques heures voir 1j avant de voir l'état des validations. Le souci est que l'insertion en synthèse ne passe pas par l'ORM dans tous les cas (occtax par exemple passe par un trigger si je ne dis pas de bêtises, le module d'import passe par l'ORM). Si on passait à chaque fois par l'ORM, on pourrait avoir un event qui déclenche effectivement une tâche Celery qui ferait les opérations sans bloquer l'insertion en synthèse. Une validation automatique va forcément ajouter des opérations, donc forcément dans le cas d'un import en masse, ce dernier sera plus long. Mais à ce moment là il faudrait aussi supprimer les trigger de calculs auto de la |
Salut ! Ensuite on peut essayer de partir sur ce que tu proposes @DonovanMaillard en mettant en place une liste taxhub optionnelle permettant de valider uniquement sur certaines espèces. Merci encore pour vos retours ! Je vous tiens au courant de l'implémentation |
Bien le bonjour, Je reviens vers vous après une petite réflexion sur le sujet. Je pensais donc faire une tâche Celery qui appellerait une fonction SQL (période d'exécution à définir en configuration). Cela pour que chacun puisse intégrer ses propres règles de validation automatique. Au départ je pensais faire uniquement en Python mais ça rebuterait quelques personnes je pense. Après est-ce qu'on fait une seule fonction SQL paramétrable depuis la configuration ou est-ce qu'on donne la possibilité de faire plusieurs fonctions SQL et là c'est une table et une section dans Flask Admin ? Par défaut on pourrait ajouter cette fonction SQL pour se baser sur les profils de taxons mais désactivée en configuration. Qu'en pensez-vous ? Merci beaucoup d'avance pour vos retours ! |
Oui cette approche me semble intéressante, générique et adaptable. |
Bonjour, Par rapport à la validation automatique des données , il a été mentionné de réaliser une tâche celery. Merci |
Salut, Cela dépend de la solution retenue. Pour l'endroit où ranger ça dans le code, je n'ai pas d'avis. |
Salut Camille, Si des utilisateurs veulent customiser à 100% leur validation automatique ça pourrait être dans un premier temps juste rajouter 2 paramètres en configuration GN de type : VALIDATION_CRONTAB = fields.String(load_default="0 1 * * *")
VALIDATION_ENABLED = fields.Boolean(load_default=False) Puis dans la tâche celery l'éxécution d'une fonction sql (à définir quel schema doit porter cette fonction , Création d'un fichier sql dans lequel on propose par défaut une fonction d'autovalidation basé sur le score de profil de taxon (par exemple : si score de 3/3 alors on passe le statut de validtion à Du coup on crée une migration alembic qui crée cette fonction par defaut et on precise dans le fichier de config GeoNature que l'activation du paramètre Coté utilisateur ça permet de paramètrer ou non l'auto validation facilement et pour l'aspect personnalisation de validation l'utilisateur peut editer la fonction en base de données si celle par défaut ne convient pas . Voilà pour une première proposition , n'hésitez pas à rebondir |
J'adopterais cette même logique : un paramètre générique, qui planifie une fonction SQL par défaut qui s'appuie sur les profils. Ca permet sur une instance "non customisée" d'avoir une validation automatique basée sur les profils, activable facilement. Sans bloquer la validation custom pour ceux qui le souhaitent (après chacun peut se faire un cron avec sa fonction custom, c'est peut-être mieux que d'aller toucher cette fonction par défaut, sinon à chaque MAJ il faudra reporter ses modifs perso). |
Si on met des paramètres, à renommer Oui pour que le fonctionnement de base s'appuie sur les profils de taxons. Pour moi ça doit aller dans Par contre si on met ça dans une migration c'est bien, mais si les gens se modifient la fonction, et qu'on veut la faire évoluer, l'améliorer, alors on fera une autre migration qui le recréé et on va écraser leurs modifications. Donc plutôt à gérer à part si on veut se faire son truc spécifique ? |
Du coup est ce qu'il serait pas intéressant sinon de créer une commande geonature de type : |
Est ce qu'il ne serait pas possible d'avoir une fonction SQL par défaut maintenu dans le code de GeoNature mais que la tâche Celery recherche aussi la présence d'une autre fonction utilisateur. Si la tâche Celery trouve la fonction SQL utilisateur, elle l’exécute à la place de la fonction par défaut ? Le nom de la fonction utilisateur pourrait correspondre au nom de la fonction par défaut mais avec le suffixe "_custom" par exemple. Ou alors elle pourrait être défini dans un paramètre du style |
Oui je pense que faire une commande L'idée d'avoir une fonction de base proposée dans une migration et maintenant, mais d'utiliser une fonction custom si elle existe me semble intéressante. Dans tous les cas, en demandant par ci par là, j'ai trouvé personne d'autre qui baserait sa validation automatique uniquement sur une liste de taxons. |
Bonjour, Je me permets de squatter le fil, car ma question est liée, mais si besoin, je peux ouvrir un autre ticket... J'aurais aimé savoir s'il était envisageable 'd'injecter' des profils et non de les calculer à partir des données en base. L'idée serait d'utiliser les données du SINP régional et de partenaires pour calculer les profils et de les mettre à dispo pour améliorer les indices de confiances de tous les partenaires utilisant Géonature et d'avoir une meilleure base pour la validation auto. Merci |
Oui il vaut mieux un autre sujet dédié, sinon on va discuté de trop de choses différentes ici. |
- create migration alembic to create function auto_validation (gn_profiles.auto_validation) - create task celery in validation module - add parameters in validation toml config [Refs_ticket] PnX-SI#2600 Reviewed-by: andriacap
- create migration alembic to create function auto_validation (gn_profiles.auto_validation) - create task celery in validation module - add parameters in validation toml config [Refs_ticket] PnX-SI#2600 Reviewed-by: andriacap
- create migration alembic to create function auto_validation (gn_profiles.auto_validation) - create task celery in validation module - add parameters in validation toml config [Refs_ticket] PnX-SI#2600 Reviewed-by: andriacap
- create migration alembic to create function auto_validation (gn_profiles.auto_validation) - create task celery in validation module - add parameters in validation toml config [Refs_ticket] PnX-SI#2600 Reviewed-by: andriacap
- create migration alembic to create function auto_validation (gn_profiles.auto_validation) - create task celery in validation module - add parameters in validation toml config [Refs_ticket] PnX-SI#2600 Reviewed-by: andriacap
- create migration alembic to create function auto_validation (gn_profiles.auto_validation) - create task celery in validation module - add parameters in validation toml config [Refs_ticket] #2600 Reviewed-by: andriacap
Bonjour à tous, La PR #2768 de @andriacap qui propose un processus de validation automatique est intégrée dans la branche develop. Cette fonctionnalité sera comprise dans la version 2.14 de GeoNature. Voir la doc sur le sujet : GeoNature/docs/admin-manual.rst Line 2389 in a295fe6
|
La fonction de validation automatique des données a été intégré dans la version 2.14.0. |
Bonjour,
Tout d'abord, j'espère que le sujet n'a pas déjà été évoqué dans les issues (les recherches "validation" et "validation automatique" n'ont rien donné, à part : PnX-SI/gn_module_validation#5 mais qui, je crois, a dévié vers les profils de taxons plus que la validation automatique). Ensuite, je pense que c'est un grand débat mais je me lance quand même.
Introduction
Dans le cadre d'une prestation pour la DREAL Corse une validation automatique de données selon l'espèce est souhaitée.
Cette validation ne peut pas s'appuyer sur le profil de taxon pour les raisons suivantes :
Une des raisons en faveur d'une validation automatique est la validation d'espèces très communes et bien sûr le nombre d'observations à valider. Il pourrait éventuellement y avoir des erreurs d'observation même pour ces espèces mais cela reste à la charge de l'administrateur d'activer ou non cette validation automatique.
Proposition
Mes propositions sont encore en cours de réflexion mais je pense que je n'ai pas le choix d'utiliser un trigger pour déclencher une validation automatique dès l'insertion ou la modification d'une donnée en synthèse comme cette donnée peut provenir du module d'import/monitoring/occtax ...
Ce trigger pourrait être simple : insertion dans
t_validation
si lecd_nom
est dans une liste d'espèce à valider automatiquement (pourquoi pas une liste taxonomique TaxHub). Cette liste pourrait figurer dansgn_commons.t_parameters
Ou plus complexe (mais cela ressemblerait plus à une usine à gaz à mon avis) : création d'une table de validation automatique contenant 2 colonnes : une foreign key vers une liste taxonomique, une foreign key vers un status de validation. Le trigger lirait dans cette table et insérerait dans
t_validation
si correspondance il y a. Cela permettrait d'administrer facilement la validation auto via Flask Admin par exemple.Qu'en pensez-vous ?
Merci d'avance pour vos retours !!!
References
Schéma page 11 : https://www.occitanie.developpement-durable.gouv.fr/IMG/pdf/validation_pole_invertebres-_v_1_opie_cen_occitanie.pdf (dans ce cas précis, seule la validation automatique sur le critère phénologique groupe 3 est considérée)
The text was updated successfully, but these errors were encountered: