- On veut pouvoir afficher un lien vers la règle définissant la [ref] lorsqu'on est dans une formule avec une référence virtuelle
- Si on fait référence dans une règle à une notification sans formule (juste applicable) la règle crash
En attendant une réecriture de l'inlining qui permette d'ajouter le contexte à la référence appelée (référence ou définition),
je préfère désactiver cette logique
Notons que l'aide à l'apprentissage est versée tant que l'apprenti n'est
pas en activité partielle à 100% -- et sans proratisation. Ce qui veut
dire que l'entreprise peut recevoir plus d'aides (en cumulant indemnité
partielle et prime à l'embauche d'apprenti) que son coût total, d'où une
valeur négative dans la case "coût total".
J'ai involontairement mergé un `it.only` dans #1136 qui désactive tous
les tests sauf un — utile en développement mais pas quelque chose que
l'on veut commiter sur `master`. La règle Eslint bloquera désormais ce
code.
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".
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
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