lodex icon indicating copy to clipboard operation
lodex copied to clipboard

Pouvoir relancer un enrichissement uniquement sur les lignes en erreurs

Open touv opened this issue 1 year ago • 1 comments

Votre demande de fonctionnalité est-elle liée à un problème ? Veuillez le décrire.

Lorsque l'on exécute un enrichissement sur la totalité d'un jeu de données, il arrive que certains documents ressortent en erreur (par exemple pour coupure/lenteur réseau passagère) Tous les documents ne sont donc pas correctement enrichis. Si on relance l'enrichissement, il re-parcours l'intégralité du jeu de données et relance les enrichissements sur chaque champ. Si l'option cache est activée, les web services ne seront pas forcément appelés mais néanmoins tous les documents seront mis à jour.

On peut également créer un nouveau enrichissement pour sélectionner les erreurs et rejouer uniquement le traitement sur les documents concernés

Décrivez la solution que vous souhaitez Lodex pourrait proposer de lancer l'enrichissement uniquement sur les valeurs en erreurs

touv avatar Sep 25 '24 15:09 touv

En théorie cela reviendrait à modifier la requête mongo en ajoutant un filtre

touv avatar Sep 25 '24 15:09 touv

pour voir un signal d'erreur tester par exemple une fonction bidon [assign] path=value value=get('value.isFunded').thru(v=>v=== false ? _.plouf(v) : v)

La colonne s'affiche en orange avec le nombre d'erreurs rencontrées Image

et un message affiche l'erreur lorsque l'on clique sur une case en question

Image

AnaelKremer avatar Oct 24 '24 12:10 AnaelKremer

Merci @AnaelKremer,

J'ai ajouté la solution vue ensemble dans la carte

Alexmarmelab avatar Oct 29 '24 14:10 Alexmarmelab

visiblement quelque chose a changé au niveau des erreurs (@touv) , on n'a plus la mention erreur avec une pastille rouge dans les données, ni de détails sur l'erreur. J'ai utilisé la même fonction que dans l'exemple plus haut Image

Du coup les données ne sont plus considérées comme des erreurs

AnaelKremer avatar Jan 07 '25 12:01 AnaelKremer

visiblement quelque chose a changé au niveau des erreurs (@touv) , on n'a plus la mention erreur avec une pastille rouge dans les données, ni de détails sur l'erreur.

effectivement, le changement vient de cette demande https://github.com/Inist-CNRS/lodex/issues/1978 il va falloir trouver un compromis ...

touv avatar Jan 07 '25 13:01 touv

Je n'ai pas l'impression que seules les lignes en erreur sont relancées. Tout semble être retraité. Mettre en rouge l'information quand il y a des erreurs ? Possibilité de supprimer le S de erreurs pour les valeurs : 0 et 1 ? Mettre en français ? Erreur et Relancer à la place de errors (colonne) et RETRY à droite du nombre d'erreurs

(même constat qu'Anaël concernant les messages d'erreurs)

Bonvallot avatar Jan 07 '25 13:01 Bonvallot

En fait ça dépend de ce ce que l'on appelel une erreur. dans la datagrid il faut que le texte commence [Error]

https://github.com/Inist-CNRS/lodex/blob/6c98940bf59047e4b3433fc31b803733354a7485/src/app/js/admin/parsing/ParsingResult.js#L201

Dans les enrichissements, il faut un certain type d'erreur informatique pour générer automatiquement un message [Error] qui sera affichée mais actuellement les erreurs lodash des enrichissements ne sont pas comprises comme des erreurs

touv avatar Jan 07 '25 15:01 touv

Ok mais dans l'exemple de la fonction .plouf on avait bien [error] plouf is not a function auparavant.

La carte 1978 c'est moi qui l'avait fait à la base, et l'idée en fait était de pouvoir visualiser [error] plouf is not a function dans l'aperçu des données du mode enrichissement (sans devoir lancer l'enrich, puis aller voir le message dans la datagrid). Peut être que ce n'est pas faisable ou que l'on s'était mal compris à l'époque. Car au final avant on avait "null" et maintenant on a "item 1..." sans mention de l'erreur, ni d'erreur detecté. A la limite, si on ne peut pas implémeter "[error]..." il faut peut être revenir à l'ancien usage qui ne permettait de voir l'erreur qu'après lancement, étant donné qu'on aura un système de gestion des erreurs ???

AnaelKremer avatar Jan 07 '25 15:01 AnaelKremer

oui, on affiche bien l'erreur dans la preview, mais que le début et pas l'information important qui est tronquée. C'est à améliorer.

pour cette carte par contre, il faudrait faire en sorte que les erreurs lodash soient également comprises comme des erreurs "normales"

touv avatar Jan 07 '25 16:01 touv

Effectivement, il faudrait préfixer le message d'erreur par [Error]: . Veux-tu t'en occuper ou je créé une carte @touv ?

Alexmarmelab avatar Jan 07 '25 17:01 Alexmarmelab

Effectivement, il faudrait préfixer le message d'erreur par [Error]: . Veux-tu t'en occuper ou je créé une carte @touv ?

Peut-être mais pas tout de suite. Avant, j'aimerais comprendre pourquoi la modification précédente à changer le comportement des erreurs.

touv avatar Jan 07 '25 17:01 touv

J'ai fait une modification pour prendre en compte les erreurs lodash

#2314

avec cette modification, ce type d'erreur est bien considéré par le système de relance.

On peut tester avec l'enrichissement suivant :

; Génère une erreur si le titre contient la lettre  "b"
[assign]
path = value
value = get('value.title').thru(item => String(item).search(/b/) >= 0 ? toto : item )

après exécution on peut modifier le script pour le relancer uniquement sur les erreurs

; Affiche 'toto' si le titre contient la lettre  "b"
[assign]
path = value
value = get('value.title').thru(item => String(item).search(/b/) >= 0 ? 'toto' : item )

on sauvegarde et on revient sur la page des enrichissements pour relancer l’exécution uniquement sur les erreurs dans ce cas de figure, peut-être qu'il serait plus simple d'avoir un bouton de relance sur les erreurs directement sur la fiche de l'enrichissement. ce qui éviterait de revenir à la liste pour lancer le traitement

touv avatar Jan 08 '25 10:01 touv

On n'a bien récupéré des erreurs avec possibilité de retry, mais comme l'avait dit Valérie plus haut, d'après les logs, toutes les lignes sont relancés et pas seulement les lignes en erreur.

AnaelKremer avatar Jan 09 '25 10:01 AnaelKremer

Pour tester vous pouvez créer un enrichissement qui échoue aléatoirement Par exemple sur un champ enrichissement pour un champ Titre:

[assign]
path = value
value = get('value.Titre').thru(item => {if (Math.random() >= 0.9) {throw new Error('Random error');} return item;})

ThieryMichel avatar Jan 10 '25 10:01 ThieryMichel

L'enrichissement a bien été relancé uniquement sur les lignes en erreur, dans l'exemple-ci une seule erreur retraitée dans les logs

Image

AnaelKremer avatar Jan 13 '25 13:01 AnaelKremer

Testé en 14.0.74 :

OK pour moi également.

eonm-pro avatar Jan 14 '25 10:01 eonm-pro