-
Notifications
You must be signed in to change notification settings - Fork 0
Modification de données source > nouveau statut de validation automatique #21
Comments
j'attire votre attention sur le fait que toute modification, même mineure, va faire "perdre" le statut de validation. |
Pas tout à fait car l'historique est conservé.
Pourquoi pas, si c'est possible. |
Ce sujet concerne au final peu le module de VALIDATION, mais plutôt les choix faits au niveau du module de données source. J'avais compris que ce sujet n'était pas clair ni tranché : PnX-SI/GeoNature#514 Actuellement quand une occurrence est insérée dans Occtax, un trigger y applique la valeur par défaut définie dans la BDD : https://github.com/PnX-SI/GeoNature/blob/master/contrib/occtax/data/occtax.sql#L916-L920 Si on veut que chaque modification d'une occurrence, in-valide cette occurrence, il faut ajouter un trigger ON UPDATE qui recréé une validation de l'occurrence en mettant le statut par défaut. Et reporter ça aussi sur le trigger Occtax >> Synthèse. D'ailleurs, il faudrait avoir le même fonctionnement dans chaque module qui produit des données sources. Donc c'est dé-corrélé du module de Validation. Et pour moi, le fait d'invalider une occurrence après chaque modification n'était pas tranché. |
Et si tu fais ou tout autre requêtes admin (calcul d'intersect avec l'altitude, la commune ) etc... Autre point, il faudra exclure des champs du trigger car lors de la MAJ de validation_comment, c'est un update de l'enregistrement, donc déclenchement du trigger, donc réinitialisation du statut de validation. |
Si c'est la seule problématique, je n'ai aucun soucis à faire des propositions sur les champs qui doivent ou non remettre en cause une validation. En général, on se base sur un lieu, une période (nos dates ici), une méthode, et naturellement l'espèce. Ajouter un observateur, changer l'effectif ou préciser le sexe par exemple ne sont pas de nature à changer la validation dans la majorité des cas. Camille, est-ce qu'on peut pas aussi ne pas taper dans tous les modules justement, et avoir un système qui se base sur les date update de la synthèse? Si date update plus récent que date validation, la vaidation revient en attente. Par contre en effet, ce mécanisme empêcherait un tri par champ. Mais contraindre tous les modules pour la validation, c'est un peu dommage dans l'idée, non? Ou alors c'est qu'un trigger à ajouter à chacun des modules? Je me rends pas bien compte... |
@gildeluermoz , je pense aussi qu'invalider tout update est dangereux et non souhaitable. @DonovanMaillard , c'est un choix à faire au niveau de chaque module avec un trigger. |
Effectivement si c'est une fonction trigger qui fait ça et que tu veux que le trigger réagisse différemment selon le champ modifié, tu ne peux pas trop le faire générique. Pour le reste, le sujet principal c'est qu'avec cette règle tu t'interdit, ou du moins tu alourdis, toute intervention en sql dans ta source |
Effectivement. Du coup je ne suis pas pour le faire dans occtax. Si un admin pg veut l'ajouter, il l'assume. |
Oui |
J'entends vos remarques concernant des modifications faites en admin. PAR CONTRE |
Ce genre de modification, par un utilisateur (digitizer) reste assez marginal, mais peut entrainer des gros biais si la validation n'est pas réinspectée. Imaginons un petit malin qui veut faire passer une donnée en squizzant le processus de validation : il saisit sa donnée d'espèce banale, attend la validation, puis modifie sur une espèce exceptionnelle...
C'est l'idéal en effet. |
Si on met ce genre de mécanisme en place, il faut le faire en trigger pour rester cohérent et ne pas avoir de choses exotiques qui se font au niveau de l'interface uniquement. Je comprends l'idée d'invalider, pas celle de celui qui veut tordre le truc. Comme dit Gil, une solution est que ceux qui veulent se mettent un trigger ON UPDATE sur le modèle de celui ON INSERT et ils peuvent le faire sur les champs qu'ils veulent. |
OK, si c'est juste un trigger à écrire, je devrais pouvoir le faire sur mon instance. Si jamais vous aviez un modèle, n'étant pas encore familier des Triggers, je suis prenneur. Voici la liste des champs de la synthèse avec une première ébauche pour identifier ceux qui pourraient nécessiter une revalidation :
|
Je ne partage pas la proposition de Camille. Le trigger va générer les soucis que j'expose pour toute modif en sql. Pour les triggers regarde la base, dans le module occtax, tu as de quoi faire. Attention, ne modifie pas les trigger existant si tu ne maitrise pas. C'est sensible. On a galéré pour que tout roule sans bug. |
Concernant les éventuels triggers, ils sont à mettre en place au niveau de Occtax et pas de la Synthèse (même si les champs sont très similaires). Concernant des exemple, il y a celui-ci que j'évoquai plus haut qui créer une validation avec la valeur par défaut lors de la création d'une occurrence : https://github.com/PnX-SI/GeoNature/blob/master/contrib/occtax/data/occtax.sql#L916-L920 Et il y a tous ceux d'update dans ce même fichier qui permettent de mettre à jour la Synthèse quand on modifie une occurrence dans Occtax. Mais comme dit Gil, attention, on a passé pas mal de temps à caler ces triggers qui sont de 3 niveaux (Relevé / Taxon / Dénombrement) et doivent être remis à plat dans la Synthèse. |
Dans les champs devant entrainer une revalidation, pour moi : stade, méthode, altitude, geom, dates, espèce, méthode de détermination, preuves et déterminateur. Sur le reste, le principe de faire reposer ça sur un trigger mis en place ou non par chaque administrateur semble le plus simple, et le moins contraignant pour l'ensemble des utilisateurs. |
En fait cette discussion concerne moins le module de validation, qui ne peut pas faire faire ce travail, que le reste de GN et notamment occtax. |
Salut à tous, Après une nuit de réflexion, j'ai une proposition qui peut peut-être satisfaire tout le monde, et qui en terme de développement serait ultra basique. Je propose que la vue de validation, dans le module validation, affiche une icone sur les observations dont la date de modification ( (en ajoutant, au survol du crayon, le tooltip "donnée modifiée depuis sa dernière validation") Sinon, ça me pose aussi la question de l'affichage/archivage des modifications des données : je crois que ce sujet avait été évoqué par @jbrieuclp ? |
Je viens de retrouver l'issue en question : Il y a beaucoup de notions à intégrer pour moi : est-ce que les tables en question sont opérationnelles, et permettent-elles d'avoir un suivi des modifications d'une donnée ? |
Pourquoi pas. Ça peut etre une évolution bien transversale, globale et générique sans toucher aux modules sources. Par contre je pense qu'on a fait une erreur en ajoutant une coche "En attente de validation" car ça alourdit l'interface et complexifie la compréhension. De la même manière on pourrait ajouter un filtre en dessous "Données modifiées depuis la dernière validation". Oui l'historisation des modifications est opérationnelle dans une table verticale et mise en place sur Occtax. |
oui je pense aussi finalement que ce serait mieux de mettre tous les filtres au même endroit, avec le filtre sur les statuts de validation tout en haut, bien en évidence, et ajouter un filtre "données modifiées depuis la dernière validation". |
Bonjour à tous, |
Le champs synthese.meta_update_date ne concerne que l'occurrence et pas tout le jeu de données. |
Par contre, si on modifie une occurrence d'un relevé, alors le trigger Occtax>Synthèse modifie la date_update de toutes les occurrences du relevé. @JulienCorny, reste à modifier le module pour se baser sur la date_update de l'occurrence et non pas celle de son JDD ? |
Le soucis vient de la manière dont est fait l'update en utilisant SQLAlchemy. Quand on met à jour un relevé (au niveau du relevé lui même, de l'occurrence ou du dénombrement), on passe par l'unique route : https://github.com/PnX-SI/GeoNature/blob/master/contrib/occtax/backend/blueprint.py#L273. Via le jeu des relationships, on met à jour les 3 tables d'occtax, même si on ne modifie que le taxon. Les "meta_update_date" des 3 tables sont mis à jour. Donc pas possible en l'état de détecter un changement sur UNE occurrence d'un relevé. |
OK donc c'est bien |
Toute modification de données source doit entrainer un nouveau statut de validation automatique "en attente de validation"
Attention : cela n'efface pas les éventuels statuts de validation précédemment attribués
(pour rappel, il avait été convenu qu'il n'était pas possible de distinguer quels types de modification entrainaient la modification du statut de validation)
The text was updated successfully, but these errors were encountered: