Commit Graph

12 Commits (fcb44fc317957f05047f3166c57bc5ca9fdf39f3)

Author SHA1 Message Date
Maxime Quandalle 973f12ab46 ⚙️ Évalue la situation dans l'ordre topologique
Nous utilisions jusqu'à présent le code suivant pour évaluer la situation:

> mapObjIndexed(value => evaluateExpression(value), situation)

c'est à dire une évaluation ligne par ligne. Or si certaines valeurs de
la situation contiennent des références, il faut les évaluer dans le bon
ordre.

Avec cette modification, seul le parsage est fait lorsqu'on appelle
`setSituation` et l'évaluation est faite ultérieurement lorsque c'est
nécessaire avec la même logique que pour les règles.

L'implémentation a pour effet de bord de ne plus supprimer l'utilisation
de true / false dans la situation qui doivent être remplacés par "oui"
et "non".
2020-10-11 16:51:19 +02:00
Maxime Quandalle 4789dfce04 🐛 Corrige la saisie du SMIC à temps partiel
Grâce aux récentes évolutions de Publicode, ce retour utilisateur
fréquent trouve une solution particulièrement simple et élégante en
remplaçant la valeur littérale du SMIC par une référence vers le SMIC
contractuel. Cela procure les avantages suivants :
- Le montant du SMIC est défini une seule fois dans la base de règles,
  et on y fait référence partout où on l'utilise
- Vu que c'est la référence qui est stockée dans la "situation" on peut
  répondre à la question "temps partiel" après avoir cliqué sur "SMIC"
  dans la case "salaire brut" et le montant correspondant va
  automatiquement se recalculer.

A nécessité quelques menues modifications du code qui gère les
références dans la situation pour corriger des bugs.

Fixes #649
2020-10-11 16:51:19 +02:00
Alexandre Hajjar 343ca00a27 ⚙️ Detect cycles in parsed rules
Build a dependencies graph and detect cycles:
* Types and guards for nodes of the ParsedRules AST
* Simple visitor framework for the nodes and their `formule` sub-nodes
* Build a directed graph for dependencies using @dagrejs/graphlib
2020-10-09 13:30:39 +02:00
Maxime Quandalle 847b4eeb4c 🔥 Refacto des contrôles
Ce commit supprime le concept de "contrôle" au sein du moteur, en les
remplaçant par des règles publicodes classiques. Cela permet notamment
d'uniformiser les règles d'applicabilité (désactivation via espace de
nom ou "rend non applicable" par exemple) ainsi que d'accéder à la
valeur d'un contrôle donné avec le nom de la règle correspondante.

Par ailleurs renomme le concept de "contrôle" en "notifcation" dans la
partie mon-entreprise/.
2020-09-22 19:21:58 +01:00
Maxime Quandalle 2236e32674 Corrige la configuration Eslint 2020-09-12 18:40:36 +02:00
Maxime Quandalle eaf0ae38ae Corrige une erreur de type 2020-09-07 17:55:35 +02:00
Maxime Quandalle 8dbae98785 Landing pages dédiées par profession médicale 2020-09-07 17:55:35 +02:00
Maxime Quandalle d42504f47a 🐛 Corrige un bug de navigation dans les questions
Ainsi qu'un problème avec la saisie des suggestions avec unités.
cf. https://github.com/betagouv/mon-entreprise/pull/1076#issuecomment-644135851
2020-06-16 14:09:23 +02:00
Maxime Quandalle ac8f09fd16 ⚙️ Intégre les missingVariables dans le moteur 2020-06-04 12:36:58 +02:00
Johan Girod 3e978a6986 rajoute le bouton 'voir source' sur la documentation publicode 2020-05-27 11:45:01 +02:00
Johan Girod b175945d78 ajoute un prototype d'interface pour les warnings du moteur 2020-05-26 16:40:22 +02:00
Johan Girod d91283cde2 🔥 Sépare le moteur dans un packet isolé 2020-05-14 15:25:22 +02:00