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

Le transformer Mapping ne fonctionne pas correctement #2139

Closed
AnaelKremer opened this issue Aug 26, 2024 · 4 comments · Fixed by #2161
Closed

Le transformer Mapping ne fonctionne pas correctement #2139

AnaelKremer opened this issue Aug 26, 2024 · 4 comments · Fixed by #2161
Assignees
Labels
⚠️ Minor defect Le problème ne permet pas d'optimiser le processus standard ou concerne un cas d'usage spécifique 👷‍♂️ Ready to go Le besoin ou le problème est validé, il prêt à être développé..

Comments

@AnaelKremer
Copy link
Collaborator

AnaelKremer commented Aug 26, 2024

Copie du message d'origine de @yanngui23 dans le canal mattermost :

j'ai une question au sujet du transformer 'MAPPING" car celui-ci agit plusieurs fois sur les valeurs. Alors, peut-être que cela a été prévu comme cela pour une raison que je ne connais pas (s'il n'y en a pas, je fais une issue), mais cette fonction agit sur des valeurs déjà mappées une fois. Par exemple, si je mets dans la liste entre autres ["BD":"BGD";"BG":"BGR","GR":"GRC"], "BD" se retrouve transformé en "BGRCD". La question est donc : est-ce un bug ou est-ce prévu pour couvrir des besoins particuliers ?

Le transformer Mapping transforme effectivement plusieurs fois >

image

Je pense que cela est dû à l'utilisation de la fonction reduce dans le code et surtout au split effectué

return Object .keys(list) .reduce((currentValue, searchValue) => currentValue .split(searchValue) .join(list[searchValue]), value); };

dans l'exemple "US" a une équivalence, il transforme donc en "USA", qui devient le nouvel accumulateur. .split(searchValue) va ensuite découper "USA" en ["U","SA"] car "SA" est également dans le dictionnaire. Il remplace donc "SA" puis le join renvoie le "U" devant.

Ces segmentations créent donc des "occurences imbriquées", qui peuvent donc être transformés x fois.

@AnaelKremer AnaelKremer added the Triage Nouveau problème ou besoin à étudier et à classer label Aug 26, 2024
@AlasDiablo AlasDiablo added 🐛 Major defect Le problème limite le fonctionnement du processus standard and removed Triage Nouveau problème ou besoin à étudier et à classer labels Aug 26, 2024
@AlasDiablo AlasDiablo assigned AlasDiablo and unassigned AlasDiablo Aug 26, 2024
@AlasDiablo
Copy link
Collaborator

AlasDiablo commented Aug 26, 2024

Après analyse, le problème est plus compliqué qu'il y parais, car il faut prendre en compte le contexte d'utilisation, car il peut être utilisé pour modifier une phrase donc le problème soulevait ici n'est pas forcément valide, mais dans le cas d'un tableau de référence qui ne marche pas le problème cité et pertinent, je préférer par m avant sur un fixe.
Je l'aise la désistion à @touv

@AlasDiablo AlasDiablo added ⏳ Missing information Le besoin ou le problème doit être précisé et/ou complété pour pouvoir être traité. Triage Nouveau problème ou besoin à étudier et à classer and removed 🐛 Major defect Le problème limite le fonctionnement du processus standard labels Aug 26, 2024
@AnaelKremer
Copy link
Collaborator Author

Il faut peut être spécifier (et décider de ) l'utilisation des différents transformers.

Pour modifier des mots ou des phrases je pense que replace et replaceregex sont davantage pertinents que mapping, que je vois plus comme utile pour de la verbalisation de codes ou d'identifiants.

@touv
Copy link
Contributor

touv commented Aug 26, 2024

De mémoire, le Transformer mapping a été ajouté pour verbaliser des codes, d'ailleurs la documentation est écrite dans ce sens https://www.lodex.fr/docs/documentation/principales-fonctionnalites-disponibles/transformer-des-donnees/

sauf pour l'exemple, qui laisse à penser à des remplacements de mots !!!

La correction de ce problème devrait faire en sorte d'éviter les remplacements en cascade.

@touv touv added ⚠️ Minor defect Le problème ne permet pas d'optimiser le processus standard ou concerne un cas d'usage spécifique and removed ⏳ Missing information Le besoin ou le problème doit être précisé et/ou complété pour pouvoir être traité. Triage Nouveau problème ou besoin à étudier et à classer labels Aug 26, 2024
@AnaelKremer
Copy link
Collaborator Author

AnaelKremer commented Sep 5, 2024

Suite à notre discussion en live et donc sans pouvoir tester correctement mon code dans le bon environnement , je propose cette correction

return Object .keys(list) .reduce((currentValue, searchValue) => { const regex = new RegExp(\b${searchValue}\b, 'g'); return currentValue.replace(regex, list[searchValue])}, value);

On ajoute une regex avec un délimiteur de mot qui permet de ne pas découper les chaînes en sous-chaînes. Mais la déclaration de ma constante n'est peut être pas au bon endroit...

@touv touv self-assigned this Sep 11, 2024
@yannguillemin yannguillemin added the 👷‍♂️ Ready to go Le besoin ou le problème est validé, il prêt à être développé.. label Sep 12, 2024
@touv touv linked a pull request Sep 20, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
⚠️ Minor defect Le problème ne permet pas d'optimiser le processus standard ou concerne un cas d'usage spécifique 👷‍♂️ Ready to go Le besoin ou le problème est validé, il prêt à être développé..
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants