PnX-SI / gn_mobile_occtax

Application mobile pour la saisie dans le module Occtax de GeoNature
GNU General Public License v3.0
14 stars 5 forks source link

Doublons de nomenclatures #190

Open AudreyEnGuyane opened 2 years ago

AudreyEnGuyane commented 2 years ago

Bonjour à tous,

je retrouve quelques doublons dans mes nomenclatures (on est pas dans le cadre #55 où il s'agissait d'un module chiro)

Comment sont moissonnées les nomenclatures pour alimenter les listes? Il me semblait que l'appli récupérait 1/ les éléments de ref_nomenclatures.cor_taxref_nomenclature en prenant les couples regne/group2_inpn (regne et groupe concerné ou all) 2/ ce qui n'était affecté à rien et actif (si j'ai bien compris #183). Par ex: les Amphibiens cumulent les nomenclatures des all/all, animalia/all et animalia/amphibiens et l'hibernation si elle est active.

Du coup, j'ai vérifié que mes nomenclatures ne soient pas redondantes entre le règne et le group2_inpn et les "all"==> ce n'est pas le cas. Seul moyen que j'ai trouvé pour en enlever un doublon... est de supprimer la référence au group2_inpn dans ref_nomenclatures.cor_taxref_nomenclature. Pour exemple, je n'ai plus rien que relie par exemple mes Amphibiens à mon id_nomenclature 452 (Examen direct des traces ou indices de présence) mais je la vois toujours en 1 exemplaire dans occtax dans la liste des méthodes de détermination (elle est toujours associée à d'autres groupes donc on est pas dans le cas d'une nomenclature affectée à rien donc récupérée pour tous les groupes).

J'avoue que je nage un peu du coup... Si quelqu'un pourrait éclairer ma lanterne...

sgrimault commented 2 years ago

Bonjour @AudreyEnGuyane Coté application mobile, "Occtax" fait appel à la route GET -> /api/nomenclatures/nomenclatures/taxonomy pour reconstruire toute la nomenclature (et leurs valeurs possibles) en local.

PaulLabruyere commented 2 months ago

Bonjour,

Je me permet de ressusciter ce ticket car je me rend compte que j'ai le même problème.

En l'occurrence, j'ai des doublons sur le champ "Méthode de détermination" (METH_DETERMIN) à l'échelle du taxon, mais seulement sur certaines valeurs. Par exemple "Examen biométrique" (id 348) est en doublon, mais pas "Examen auditif direct (id 349) : doublons_nomenclature_tel

En ouvrant la BDD de l'appli, et en allant chercher dans la table nomenclature_taxonomy, il semble que l'origine du problème soit la présence de deux lignes qui matchent mon taxon (ici un hérisson) sur la base du group2_inpn pour 348, "Mammifères" et "any", alors que seule la ligne "Mammifères" matche pour 349 doublons_nomenclature_bdd

Or si je regarde le JSON renvoyé par la route /api/nomenclatures/nomenclatures/taxonomy je vois que pour 348 on renvoie un item "group2_inpn": "Autres" dans la liste taxref, qu in'est pas présent pour 349.

[
  {
    "id_nomenclature": 348,
    "label_default": "Examen biométrique",
    // ...
    "taxref": [
      {
        "group2_inpn": "Mammifères",
        "regne": "Animalia"
      },
      {
        "group2_inpn": "Insectes",
        "regne": "Animalia"
      },
      {
        "group2_inpn": "Gastéropodes",
        "regne": "Animalia"
      },
      {
        "group2_inpn": "Céphalopodes",
        "regne": "Animalia"
      },
      {
        "group2_inpn": "Bivalves",
        "regne": "Animalia"
      },
      {
        "group2_inpn": "Autres",
        "regne": "Animalia"
      }
    ]
  },
  {
    "id_nomenclature": 349,
    "label_default": "Examen auditif direct",
    // ...
    "taxref": [
      {
        "group2_inpn": "Oiseaux",
        "regne": "Animalia"
      },
      {
        "group2_inpn": "Amphibiens",
        "regne": "Animalia"
      },
      {
        "group2_inpn": "Mammifères",
        "regne": "Animalia"
      },
      {
        "group2_inpn": "Insectes",
        "regne": "Animalia"
      }
    ]
  }
]

Donc le problème pourrait venir du fait que le groupe "Autres" soit converti en "any" lors de la synchronisation ? N'ayant aucune compétence en kotlin je suis incapable de confirmer ou d'infirmer cette hypothèse en regardant le code.

À noter aussi qu'on a pas le problème sur Occtax web.

Merci d'avance !

Paul

(gn_mobile_occtax v. 2.6.0, GeoNature v. 2.12.13)

sgrimault commented 2 months ago

Bonjour @PaulLabruyere,

Coté synchronisation, les valeurs du genre null, "autre", "", "all" (quelque soit la casse, au pluriel ou non) sont "traduits" par any, ceci afin de catégoriser et filtrer les recherches selon le rang taxonomique du taxon.

PaulLabruyere commented 2 months ago

Ok merci, je pense avoir retrouvé le code en question grâce à ta réponse, c'est bien ici que ça se passe ?

Pour moi c'est un bug, car il existe un groupe INPN de niveau 2 "Autres", qui regroupe tout ce qui ne fait pas partie des autres groupes, et qui ne doit pas être interprété comme "tous les (groupes de) taxons". Il existe des taxons qui font partie de ce groupe "Autres", par exemple l'anémone de mer pour prendre un truc que je connais mais il y a l'air d'en avoir pas mal ^^

La valeur "all" semble être utilisée par ailleurs pour les valeurs qui concernent tous les groupes taxonomiques (règnes ou groupes INPN grand public) :

      {
        "id_nomenclature": 158,
        "label_default": "Observé vivant",
        "taxref": [
          {
            "group2_inpn": "all",
            "regne": "all"
          }
        ]
      },

Ne faudrait-il pas conserver uniquement "all" pour indiquer une valeur commune à l'ensemble des taxons, et considérer "Autres" comme un groupe à part entière ?

Je pense le faire dans notre version de l'appli, si j'y arrive et avec votre accord je peux ouvrir une PR pour le modifier dans le code source.

sgrimault commented 2 months ago

any peut être traduit par '*'. Par exemple :

Le mot clé any a un vrai sens sémantique, notamment sur l'application des filtres, donc il ne faut pas le dénaturer. Si on considère que "Autres" est une sorte de groupe, cela pourrait engendrer des effets de bords à terme surtout sur la partie taxonomie (porté par les APIs de GeoNature).

camillemonchicourt commented 2 months ago

Je n'ai pas tout regardé ni analysé dans la détail, mais "group2_inpn": "Autres" est bien un groupe à part entière, au même titre que "group2_inpn": "Mammifères".

En effet "group2_inpn": "Autres" n'est pas égale à "tous les taxons".

sgrimault commented 2 months ago

D'accord, je vais faire des tests de mon coté voir si tout va bien.

sgrimault commented 2 months ago

La correction fera partie de la future 2.7.1 à venir.