Closed AnneHuSKa closed 1 month ago
Proposer le mode management dans Lunatic âš Spec : https://hackmd.io/xMcCsmVJRjaeWmtrjfOrbg âš
Proposition de Jonathan : https://github.com/InseeFr/Lunatic/issues/1003
Le mode management doit permettre de modifier les valeurs entrées dans les formulaire en prenant en compte les différents états des variables.
Cela se traduit au niveau de l'interface par de nouveaux boutons situés à droite des champs qui permettent d'agir sur la valeur et son état.
On veut aussi pouvoir suivre l'historique des changement avec plusieurs valeurs associé à chaque réponse.
D'après les besoins, Lunatic ne peut pas porter la responsabilité de cette logique car l'état des variables et la priorité dans le choix de la valeur est dépendant de la logique choisit par l'orchestrateur (la notion de "valeur la plus récente" varie en fonction du contexte). Il est d'ailleurs prévu dans Lunatic de retirer cette notion d'état pour qu'il ne reçoive que les valeur associé à chaque question (plutôt qu'un objet d'état qu'il ignore actuellement).
// Lunatic actuel { "NOM": { "COLLECTED": "John", "PREVIOUS": null, // Ignoré par lunatic "FORCED": null, // Ignoré par lunatic "EDITED": null, // Ignoré par lunatic "INPUTTED": null, // Ignoré par lunatic } } // A l'avenir { "NOM": "John" }
C'est l'orchestrateur qui se chargera de réconcilier les variables à envoyer au hook useLunatic() en correspondance avec ses propre règles. Lunatic conservera lui les variable entrée dans le formulaire mais ne se charge pas de gérer l'état. Côté orchestrateur les variables pourront être sauvegardé avec une historisation.
useLunatic()
{ "type": "PREVIOUS", "value": "John1", "timestamp": "2021-01-01T08:05:32:011" }, { "type": "COLLECTED", "value": "John", "timestamp": "2022-01-02T08:05:32:011" }, { "type": "EDITED", "value": "john doe", "timestamp": "2022-01-03T11:47:27:128" }, { "type": "FORCED", "value": "John Doe", "timestamp": "2022-01-03T12:05:32:011" }, { "type": "EDITED", "value": "Jane Doe", "timestamp": "2022-01-04T11:47:27:128" }
Comme on le voit ici c'est l'ordre qui détermine la valeur à sélectionner pour l'affichage plutôt que l'état de la variable. Cette logique ne peut être portée que par l'orchestrateur qui a une connaissance de la logique métier (reprise des variable).
Dans le cadre de la solution précédente il y a plusieurs développement à prévoir côté orchestrateur :
onChange
Côté Lunatic il faudra prévoir un moyen de simplifier l'injection de composants avant et après un champs pour permettre l'intégration des nouveaux contrôles attendu pour la reprise des données.
Il faudra aussi prévoir un moyen de désactiver les filtres pour permettre une navigation dans le formulaire dans son intégralité en cas de besoin (à confirmer).
@JulienCarmona : tu saurais comment conserver une trace de cela stp ?
Business case
Proposer le mode management dans Lunatic âš Spec : https://hackmd.io/xMcCsmVJRjaeWmtrjfOrbg âš
Proposition de Jonathan : https://github.com/InseeFr/Lunatic/issues/1003
Le mode management doit permettre de modifier les valeurs entrées dans les formulaire en prenant en compte les différents états des variables.
Cela se traduit au niveau de l'interface par de nouveaux boutons situés à droite des champs qui permettent d'agir sur la valeur et son état.
On veut aussi pouvoir suivre l'historique des changement avec plusieurs valeurs associé à chaque réponse.
Proposition technique
D'après les besoins, Lunatic ne peut pas porter la responsabilité de cette logique car l'état des variables et la priorité dans le choix de la valeur est dépendant de la logique choisit par l'orchestrateur (la notion de "valeur la plus récente" varie en fonction du contexte). Il est d'ailleurs prévu dans Lunatic de retirer cette notion d'état pour qu'il ne reçoive que les valeur associé à chaque question (plutôt qu'un objet d'état qu'il ignore actuellement).
C'est l'orchestrateur qui se chargera de réconcilier les variables à envoyer au hook
useLunatic()
en correspondance avec ses propre règles. Lunatic conservera lui les variable entrée dans le formulaire mais ne se charge pas de gérer l'état. Côté orchestrateur les variables pourront être sauvegardé avec une historisation.Comme on le voit ici c'est l'ordre qui détermine la valeur à sélectionner pour l'affichage plutôt que l'état de la variable. Cette logique ne peut être portée que par l'orchestrateur qui a une connaissance de la logique métier (reprise des variable).
Implications côté orchestrateur
Dans le cadre de la solution précédente il y a plusieurs développement à prévoir côté orchestrateur :
onChange
) pour enregistrer les modifications des variables dans l'historique.Implication côté Lunatic
Côté Lunatic il faudra prévoir un moyen de simplifier l'injection de composants avant et après un champs pour permettre l'intégration des nouveaux contrôles attendu pour la reprise des données.
Il faudra aussi prévoir un moyen de désactiver les filtres pour permettre une navigation dans le formulaire dans son intégralité en cas de besoin (à confirmer).
Mémoire d'issues qui ont concerné le sujet