Synchronisation des données avec Pl@ntNet


Actuellement, on offre à Pl@ntNet nos observations et leurs modifications via un service : http://api.tela-botanica.org/service:del:0.1/plantnet/changements?date=2017-03-31
Le contenu est généré par un service se basant sur la table del_observation_modif_date qui recense les IDs d'obs et leur date de modif grâce à plusieurs triggers SQL.

Voir futur projet là : http://floristic.org/wiki/wakka.php?wiki=CompteRenduJournee24102017
Copie :
Atelier échange d'observations TB - PN
Contexte :

    service actuel TB => PN : http://api.tela-botanica.org/service:del:0.1/plantnet/changements?date=2017-03-31
    service PN => TB : y en a pas encore


Chaque partenaire pull les dernières données modifiées dont il a besoin, chez l'autre partenaire. Il n'y a plus de push.

On doit pouvoir puller sur :

    une fenêtre de temps : date début / date fin
    une liste d'observations en particulier : liste d'IDs des obs. chez le partenaire


Lors de la réception d'une observation d'un partenaire, on doit :

    créer l'obs si on ne l'a pas déjà
    stocker l'ID de l'obs. chez le partenaire, afin de savoir par la suite si on l'a déjà ou non
    stocker / écraser les données du partenaire, dans une colonne / un attribut dédié⋅e
    recalculer les données élaborées s'il y a lieu (ex: note moyenne d'une image tenant compte des votes chez les différents partenaires)


Lors de l'envoi des dernières obs modifiées à un partenaire, on doit :

    calculer le flux de modifications sur les données locales seulement et non celles du partenaire, afin d'éviter des boucles infinies : si une donnée partenaire a changé, l'obs. n'est pas considérée comme modifiée
    envoyer des données agrégées (note moyenne pour une image, somme des votes pour chaque proposition de détermination, mots-clés...) et non l'intégralité des votes des utilisateurs


Notes :

    le taxon faisant consensus sur une observation peut être différent pour chaque partenaire, selon la méthode utilisée pour déclarer le consensus; en cela c'est une donnée élaborée, qui doit être stockée comme donnée partenaire