1
0
Fork 0
mirror of https://github.com/betagouv/mon-entreprise synced 2025-02-10 15:05:01 +00:00
Commit graph

11 commits

Author SHA1 Message Date
Maxime Quandalle
f1c810346f ⚙️ Ajoute un attribut "dependencies" sur les règles parsées 2020-11-12 10:24:35 +01:00
Maxime Quandalle
fcd8306ace ⚙️ Petites simplifications du code du moteur
- évite l'indirection vers "parseReferenceTransforms" pour les
  références simples (il faut encore simplifier ce code)
- déplacement de fonctions de parsage vers les "stateless"
- typage de registerEvaluationFunction
- simplifie fragments.join()
2020-11-05 18:25:43 +01:00
Maxime Quandalle
c66e529fb7 ⚙️ Ajout d'un type de nœud serialisable
Ce commit parachève la sortie de l'ensemble des functions "evaluate" de
l'AST et ajoute un "nodeKind" sur chaque nœud afin de les associer à la
bonne function d'évaluation.

L'API pour les mécanismes pourra être améliorée afin de ne pas appeler
`registerEvaluationFunction` sur chaque mécanisme mais en standardisant
l'interface exportée par les mécanismes, par exemple

  export { name, parse, evaluate, render }

Par ailleurs il devrait être facile de sortir les fonctions `jsx` en se
basant sur les mêmes "nodeKind".

Enfin, il faudra nettoyer l'AST pour supprimer les attributs inutilisés
et ajouter du typage fort.
2020-11-05 10:22:48 +01:00
Maxime Quandalle
33eb6c32db ⚙️ Sort la fonction evaluateReference de l'AST 2020-10-13 12:55:42 +02:00
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
960fda08e6 📝 Remplace & applicable: split getApplicableReplacements & tests
* Split and document `getApplicableReplacements`
* More remplace tests
* `isDisabledBy` is mandatory in `ParsedRule`
2020-10-09 13:30:39 +02:00
Johan Girod
9f1fb9f482 🐛 Désactive le remplacement pour la documentation 2020-09-30 18:09:16 +02:00
Johan Girod
71929c9e03 Revert "⚙️ Toujours retourner une valeur pour isApplicable"
This reverts commit 29c74da20b.
2020-09-23 14:34:26 +02:00
Maxime Quandalle
29c74da20b ⚙️ Toujours retourner une valeur pour isApplicable 2020-09-22 19:21:58 +01:00
Maxime Quandalle
862b1dacb9 ⚙️ Convertit le ficher parseReference en Typescript 2020-09-15 11:58:18 +02:00
Renamed from publicodes/source/parseReference.js (Browse further)