publicodes
publicodes copied to clipboard
Add `filterSituation` option
- [x] Ajoute une méthode
getSituation
à l'Engine. - [x] Ajoute une option
filterSituation: boolean
à la méthodesetSituation
pour permettre de filter les règles invalides de la situation dans 2 cas :- La règle n'est pas présente dans la base de règle
- La réponse donnée via un mécanisme "une possibilité" n'est pas une option de réponse Désormais, si l'option est activée, l'évaluation de cassera pas, seule un warning sera levé.
- [x] Ajoute des tests
- [ ] Manque des tests pour les warnings de situation
- [ ] Pb dans le cas ou la situation est un
string
attendu pour le mécanismetest
- [x] L'erreur renvoyée pour le cas de "La réponse donnée via un mécanisme "une possibilité" n'est pas une option de réponse" ne semble pas être une erreur attendue à cet endroit ..? (cf test "should raise an error when situation value is not a possible answer in base rules")
- [x] Ajoute un peu de doc
Deploy Preview for publicodes-website ready!
Name | Link |
---|---|
Latest commit | 2e06bf6e9dd8f2e2a386b54f725fba969dd03886 |
Latest deploy log | https://app.netlify.com/sites/publicodes-website/deploys/6656fb01903d0c00088cc15e |
Deploy Preview | https://deploy-preview-476--publicodes-website.netlify.app |
Preview on mobile | Toggle QR Code...Use your smartphone camera to open QR code link. |
To edit notification comments on pull requests, go to your Netlify site configuration.
J'ai retravaillé tout ça, avec un peu d'aide de @bjlaa ;)
Chaud d'avoir votre avis sur la nouvelle version, y a peut etre des améliorations de perf et de méthode pour le passage des options :)
Je me pose une question : dans quel cas pourrait-on vouloir garder la copie d'une situation non filtrée ? Je n'en vois pas tellement.
Je me dis que ça pourrait être utile d'avoir une manière de récupérer les règles non valides. Là c'est possible en interceptant le résultat de safeGetSituation et la situation
Après j'ai un doute sur ma compréhension de ce que tu proposes donc peut etre que c'est possible quand même avec ta solution
Conclusions des discussions à date :
- On ajoute simplement un
safeMode
optionnel pour l'engine qui permet de lever des warnings plutôt que des erreurs pour les situations non valides pour l'engine courant - Reste une question en suspend : a-t-on besoin de publier
safeGetSituation
? Est ce que l'accès aux règles non valides d'une situation serait utile ? La question soulève un besoin un peu plus large sur la gestion des warnings et erreurs. Actuellement, on ne peut pas récupérer facilement la liste des warnings et encore moins des erreurs car l'engine casse à la première
Pour info, le dernier commit améliore de 15 % les perfs de l'évaluation (notamment dans le cas d'inversions).
En revanche, setSituation
devient bien plus long. On passe de 4 ms à 18,27 ms pour une situation comprenant une quarantaine de règles. Sachant que le coût est proportionnel au nombre de règles dans la situation. Avec seulement deux règles, on reste à 1,64 ms.
A noter : cela encourage l'utilisation de keepPreviousSimulation
qui est davantage performant, car il ne revalide pas toute la situation à chaque fois.
Je pense que c'est un compromis acceptable, mais c'est à décider ensemble.
Pour moi c'est prêt aussi ! Vous me direz si on a un go pour merger ! Je vais quand même tester avec en local avec NGC pour un dernier check
Je me demandais simplement s'il y avait besoin d'un test melant le safeMode
et keepPreviousSituation
? A priorio, les 2 options sont indépendantes ?
J'ai testé, j'ai l'impression que ça fonctionne bien pour NGC :)
Je remarque juste que c'est galère en revanche de récupérer l'erreur via sentry par exemple pour l'instant car un try catch ne chope pas l'erreur en safeMode (ce qui est normal)