Commit Graph

20 Commits (0bdd5d128e7c88320dbbfc7cb88fa4106302b8a5)

Author SHA1 Message Date
Johan Girod 9ce1791ff2 ⬆️ Update prettier for supporting =?? syntax 2020-12-07 14:40:59 +01:00
Johan Girod fae2efa9bb 💚 corrige pour faire passer les tests de non regression 2020-12-07 14:40:58 +01:00
Johan Girod ab02bbb5f5 🔥 Mise à jour du site mon-entreprise suite aux refacto de evaluateRule 2020-12-07 14:39:53 +01:00
Johan Girod ba01ae2d4f ⚙️🔥 Ajoute un AST bien typé pour publicodes
- Introduction de nouveaux mécanismes
- Réecriture de l'evaluation et du parsing des règles.
- Les règles peuvent apparaître dans les formules de calcul
- Introduction d'un AST en bonne et due forme
- Réecriture de buildRuleDependancies.
- Ajout d'une passe pour la désambiguation des références
- Réecriture de rendNonApplicable et de remplace
- Réimplémentation de parentDependancy

Voir #1191
2020-12-07 14:39:53 +01:00
Alexandre Hajjar 6ceedfea15 🔥 Rm régularisation 2020-11-17 17:57:36 +01:00
Maxime Quandalle edcd1d46d1 🔨 Ajoute le plancher pour les frais pro IR
cf. https://github.com/betagouv/mon-entreprise/pull/1193#discussion_r517924266
2020-11-05 15:50:58 +01:00
Johan Girod fcb44fc317 transforme applicable si et non applicable si en mécanisme chainée
Par la même occasion, uniformise l'écriture des mécanismes chainées
2020-11-04 11:59:03 +01:00
Maxime Quandalle 6fa30e505c Ajout d'un test d'intégration pour le temps partiel au smic
Ainsi que d'un test unitaire pour les références dans la situation
2020-10-11 16:51:19 +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
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
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
Maxime Quandalle aa0e42de78 🔥 Supprime la décote et la franchise
Le mécanisme "allègement" proposaient ces deux paramètres ajoutant
beaucoup de complexité pour une seule utilisation dans la base de règle
qui peut être remplacée par une formule littérale.

Closes #1119
2020-09-29 11:16:01 +01: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
Johan Girod 02f5d790b9 Ajoute un nouveau formulaire pour la demande de détachement
Donne l'occasion d'experimenter avec la génération automatique de formulaire
en publicodes. Pas mal de question à creuser, mais quelques pistes interessantes
2020-06-18 09:51:14 +02:00
Maxime Quandalle 12a4f96368 🔥 Supprime la fonction getSituationValue 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 60cae1f5ce 🐛 corrige une erreur dans l'affichage d'unité avec pourcentage 2020-05-26 17:33:26 +02:00
Johan Girod 1e43f3d758 🔥 change l'api de formatValue pour une version plus cohérente 2020-05-25 17:06:15 +02:00
Johan Girod aad6eee12f Investigue la publication du paquet npm publicode 2020-05-18 16:44:12 +02:00
Johan Girod d91283cde2 🔥 Sépare le moteur dans un packet isolé 2020-05-14 15:25:22 +02:00