publicodes icon indicating copy to clipboard operation
publicodes copied to clipboard

Add `filterSituation` option

Open Clemog opened this issue 10 months ago • 1 comments

  • [x] Ajoute une méthode getSituation à l'Engine.
  • [x] Ajoute une option filterSituation: boolean à la méthode setSituation 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écanisme test
  • [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

Clemog avatar Apr 06 '24 12:04 Clemog

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...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

netlify[bot] avatar Apr 06 '24 12:04 netlify[bot]

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 :)

Clemog avatar May 15 '24 10:05 Clemog

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

Clemog avatar May 16 '24 15:05 Clemog

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

Clemog avatar May 22 '24 08:05 Clemog

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.

johangirod avatar May 23 '24 11:05 johangirod

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 ?

Clemog avatar May 27 '24 15:05 Clemog

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)

Clemog avatar May 28 '24 12:05 Clemog