Skip to content
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

Champs additionnels : échec #269

Closed
AudreyEnGuyane opened this issue Oct 3, 2024 · 7 comments
Closed

Champs additionnels : échec #269

AudreyEnGuyane opened this issue Oct 3, 2024 · 7 comments
Labels
bug Something isn't working

Comments

@AudreyEnGuyane
Copy link

Version de l'application

Version d'Occtax-mobile affectée par le bug : 2.7.0
Version de GeoNature utilisée : 2.14

Terminal et Version Android

Marque et modèle du terminal : Crosscals Action-X5
Version d'Android : 12

Description du bug et comportement attendu

Suite à la montée en version de GeoNature et TaxHub, nous voulons monter également en version pour OccTax-mobile, pour pouvoir notamment utiliser les champs additionnels (au nouveau des occurrences et dénombrements pour l'instant).
Si la synchronisation du référentiel taxonomique est capricieuse, j'ai un échec sur le téléchargement des champs additionnels.
Pourtant, la route renvoie bien la liste des champs additionnels et en dénombre 27...

11:36:05.712 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://gnpag.brgm-rec.fr/geonature/api/gn_commons/additional_fields?module_code=OCCTAX (1909ms, 75356-byte body)
11:36:06.459 INFO: [fr.geonature.datasync.sync.repository.SynchronizeAdditionalFieldsRepositoryImpl] 27 additional field(s) found
11:36:07.021 WARN: [fr.geonature.datasync.sync.worker.DataSyncWorker] Champs additionnels : échec

Le test que j'ai effectué avec demo.geonature.fr fonctionne jusqu'au bout donc ça doit venir de mon instance.
En amont, le formatage des champs de type radio/select/... a bien été révisé afin de correspondre au standard spécifié dans le backoffice/champs additionnels "select/multiselect/checkbox,radio (Format JSON : tableau de 'value/label'. Utilisez des doubles quotes pour les valeurs et les clés). Exemple [{"label": "trois", "value": 3}, {"label": "quatre", "value": 4}] "
Est-ce que ce serait lié à ça?
Sur le site de démo, la forme de ces champs varie de la forme ["valeur1", "valeur2", "valeur3"] ==> https://demo.geonature.fr/geonature/api/admin/tadditionalfields/edit/?id=3&url=/geonature/api/admin/tadditionalfields/
à la syntaxe json attendue ==> https://demo.geonature.fr/geonature/api/admin/tadditionalfields/edit/?id=22&url=/geonature/api/admin/tadditionalfields/

Comment reproduire

Installer occtax 2.70, saisir l'instance de GN, laisser synchroniser...

Logs

cf. PJ: les logs d'occtax mobile et le fichier json de config
occtax_20241003_110547.log

settings.json

@AudreyEnGuyane AudreyEnGuyane added the bug Something isn't working label Oct 3, 2024
@sgrimault
Copy link
Collaborator

sgrimault commented Nov 13, 2024

Bonjour @AudreyEnGuyane,

Suite à l'analyse directement depuis ton instance GeoNature, j'ai pu isoler le problème lors de la synchronisation des données, notamment sur la partie champs additionnels :
L'insertion des champs additionnels nécessite de pouvoir lier chaque champ additionnel avec le ou les jeux de données. La partie synchronisation des jeux de données se fait sans problème via la route POST -> /api/meta/datasets et retourne 24 jeux de données. La partie synchronisation des champs additionnels fait appel à la route GET -> /api/gn_commons/additional_fields?module_name=OCCTAX et retourne 27 champs additionnels. Parmi ces champs additionnels, j'en ai trouvé un qui pose problème (id_field : 1) qui est rattaché au jeu de données dont l'identifiant est 20 (son nom est "STOC-EPS 2012"), mais ce dernier n'est pas du tout remonté lors de l'appel à la route POST -> /api/meta/datasets...

L'insertion en base échoue car la clé étrangère qui permet de lier le jeu de données et le champ additionnel n'est pas honorée.

@camillemonchicourt
Copy link
Member

OK j'ai 2 pistes d'explication sur le sujet :

  • Il est possible de rendre inactif un JDD quand celui-ci est terminé. Cependant on le conserve dans la BDD et il peut avoir des champs additionnels associés. Cependant on le renvoie pas dans l'API quand on demande les JDD ouverts à la saisie. Ainsi on peut retourner des champs additionnels associés à des JDD qui ne sont plus disponibles à la saisie et donc pas renvoyés dans Occtax-mobile
  • Il est possible qu'un utilisateur n'ait pas les permissions d'accéder à un JDD donc l'API ne lui renvoie pas, mais il recevra quand même les éventuels champs additionnels associés à ce JDD

Il est donc très important qu'Occtax-mobile ne plante pas quand on lui renvoie des champs additionnels associés à ces JDD mais qu'il ne connaisse pas ces JDD (car inactifs ou car l'utilisateurs n'a pas les permissions sur ces JDD).

Une correction est donc nécessaire au niveau d'Occtax-mobile.

@sgrimault
Copy link
Collaborator

Je vais faire une petite correction coté module de synchronisation lors du traitement des champs additionnels. Le lien avec des éventuels jeux de données pour chaque champ additionnel ne se fera que si le jeu de donnée existe bien en base lors de la synchronisation.
Dans le cas du problème remonté par @AudreyEnGuyane, le champ additionnel en question ne sera affecté à aucun jeu de donnée.

@camillemonchicourt
Copy link
Member

Si un champs additionnel est associé à un ou plusieurs JDD, il ne faut l'associer à aucun dans le cas où l'on ne connait pas les JDD en question.
Mais bien ignorer ces champs additionnels.

Le cas d'Audrey concerne des champs additionnels associés à aucun JDD ?

@sgrimault
Copy link
Collaborator

Le cas d'Audrey concerne un champs additionnel affecté à un jeu de donnée inconnu coté "Occtax", lors de la synchronisation. Donc dans ce cas, il faut tout simplement ignorer ce champ additionnel ?

@camillemonchicourt
Copy link
Member

Le cas d'Audrey concerne un champs additionnel affecté à un jeu de donnée inconnu coté "Occtax", lors de la synchronisation. Donc dans ce cas, il faut tout simplement ignorer ce champ additionnel ?

Oui très important.

sgrimault added a commit to PnX-SI/gn_mobile_core that referenced this issue Nov 14, 2024
sgrimault added a commit to PnX-SI/gn_mobile_core that referenced this issue Nov 15, 2024
@camillemonchicourt
Copy link
Member

Corrigé dans la 2.7.1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants