From fee1642a834d5ae9f73c0d3b21040eae45dcb91f Mon Sep 17 00:00:00 2001 From: Marc Lalancette Date: Mon, 9 Mar 2026 08:40:19 -0400 Subject: [PATCH 1/4] =?UTF-8?q?premier=20jet=20=C3=A0=20compl=C3=A9ter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Documentation/donnees-externes.md | 127 ++++++++++++++++++++++++++++++ Documentation/fonctionnalites.md | 4 + 2 files changed, 131 insertions(+) create mode 100644 Documentation/donnees-externes.md diff --git a/Documentation/donnees-externes.md b/Documentation/donnees-externes.md new file mode 100644 index 0000000..92d824b --- /dev/null +++ b/Documentation/donnees-externes.md @@ -0,0 +1,127 @@ +# Données externes +Il est possible d'obtenir des données externes que vous pouvez exploiter dans votre formulaire. + +Par exemple, il pourrait s'agir : +- D'une liste de valeurs transformée en domaine de valeurs pour une liste déroulante de votre formulaire; +- D'un indicateur (Ex: indicateur d'éligibilité vrai/faux); +- D'un objet qui peut être mappé dans des champs du formulaire. + +## Guide d'utilisation +La majeure partie des configurations nécessaires pour l'obtention des données externes se situe dans la "config transmission". + +Une fois cela fait, il suffit de définir la "source de données externes" sur le contrôle de votre choix dans la "config form" de votre formulaire. + +Voir le détail complet dans les sections suivantes. + +### Config transmission +Les sources de données externes sont définies dans la config transmission de votre formulaire ou de votre système autorisé. + +En résumé les composantes à configurer sont les suivantes : +- `http_client_set` - Ici vous déclarez les noms que vous voulez donner aux sources de données externes (par exemple "regions", "municipalites", etc...). Pour chaque source vous devez définir les éléments suivants : + - `sequence` - Permet de définir une séquence d'appel `http_client` : + - Pour l'instant un seul élément est supporté, mais la base est là afin de supporter éventuellement plusieurs appels en séquence; + - Par exemple si la source de données externes nécessite préalablement l'obtention d'un jeton. + - `data_adapter:template` - Ceci permet de formater les données dans le format de votre choix; dans notre exemple on transforme les données reçues en domaine de valeurs pour appliquer sur une liste déroulante du formulaire. +- `http_client` - Ici vous définissez chaque appel http_client présent dans la `sequence` définie précédemment. + +Voici un exemple complet de config transmission avec définition de sources de données externes (régions et municipalités de Données Québec). + +```yml +etapes: +- tache: genererWord + options: + fichierBind: exempleBidon.bind.yml +- tache: extraireQuestions + +http_client_set: + regions: + sequence: + - http_client: donnees_qc_regions_api + + data_adapter: + template: | + {{> GenererDomaine items=donnees_qc_regions_api.body.result.records value="{{{NO_REG_ADM}}}" label_fr="{{{DESCR}}}"}} + + municipalites: + sequence: + - http_client: donnees_qc_municipalites_api + + data_adapter: + # On réutilise exactement la MÊME partial GenererDomaine que pour les régions ! + # On ajuste simplement le nom des colonnes val et desc_fr + template: | + {{> GenererDomaine items=donnees_qc_municipalites_api.body.result.records value="{{{mcode}}}" label_fr="{{{munnom}}}" label_en="{{{munnom}}} (EN)"}} + + regionsGroupe: + sequence: + - http_client: donnees_qc_regions_groupe_api + + data_adapter: + template: | + {{> GenererDomaine items=donnees_qc_regions_groupe_api.body.result.records value="{{{NO_REG_ADM}}}" label_fr="{{{DESCR}}}"}} + + municipalitesGroupe: + sequence: + - http_client: donnees_qc_municipalites_groupe_api + + data_adapter: + # On réutilise exactement la MÊME partial GenererDomaine que pour les régions ! + # On ajuste simplement le nom des colonnes val et desc_fr + template: | + {{> GenererDomaine items=donnees_qc_municipalites_groupe_api.body.result.records value="{{{mcode}}}" label_fr="{{{munnom}}}"}} + +http_client: + donnees_qc_regions_api: + method: GET + url: 'https://www.donneesquebec.ca/recherche/api/3/action/datastore_search?resource_id=8a69813f-eeb0-45b3-aab0-7541d573ae31&sort=DESCR&filters={"NO_REG_ADM":["01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17"]}&limit=32000' + # chaos permet de simuler des erreurs + chaos: + enabled: false + injection_rate_percentage: 100 + delay_milliseconds: 1500 + simulate_status_code: 500 + #simulate_network_exception: true + headers: + Accept: 'application/json' + Content-Type: 'application/json' + + donnees_qc_municipalites_api: + method: GET + url: 'https://www.donneesquebec.ca/recherche/api/3/action/datastore_search?resource_id=19385b4e-5503-4330-9e59-f998f5918363&filters={"mcodedesi":["01","02","04","05","06","09","10"]}&q={"regadm":"{{{input.donneesFormulaire.form.regionAdministrativeCallBackendFRW}}}"}&sort=munnom&limit=32000' + headers: + Accept: 'application/json' + Content-Type: 'application/json' + chaos: + enabled: false + injection_rate_percentage: 100 + delay_milliseconds: 1500 + + donnees_qc_regions_groupe_api: + method: GET + url: 'https://www.donneesquebec.ca/recherche/api/3/action/datastore_search?resource_id=8a69813f-eeb0-45b3-aab0-7541d573ae31&sort=DESCR&filters={"NO_REG_ADM":["01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17"]}&limit=32000' + chaos: + enabled: false + injection_rate_percentage: 100 + delay_milliseconds: 1500 + simulate_status_code: 500 + #simulate_network_exception: true + headers: + Accept: 'application/json' + Content-Type: 'application/json' + + donnees_qc_municipalites_groupe_api: + method: GET + url: 'https://www.donneesquebec.ca/recherche/api/3/action/datastore_search?resource_id=19385b4e-5503-4330-9e59-f998f5918363&filters={"mcodedesi":["01","02","04","05","06","09","10"]}&q={"regadm":"{{{input.donneesFormulaire.groupeCourant.regionAdministrativeGroupe}}}{{{input.donneesFormulaire.groupeCourant.regionAdministrativeGroupeRepet}}}"}&sort=munnom&limit=32000' + headers: + Accept: 'application/json' + Content-Type: 'application/json' + chaos: + enabled: false + injection_rate_percentage: 100 + delay_milliseconds: 1500 +``` + +### Config form +Vous devez ensuite appliquer la source de données externes sur votre liste déroulante dans la config form de votre formulaire. + +Voir le P700U Guide utilisateur FRW section [à compléter](https://formulaires.it.mtess.gouv.qc.ca/fr/Form/7/P700U/0/N/#p=sectWf). \ No newline at end of file diff --git a/Documentation/fonctionnalites.md b/Documentation/fonctionnalites.md index 728d14b..c44f530 100644 --- a/Documentation/fonctionnalites.md +++ b/Documentation/fonctionnalites.md @@ -19,6 +19,10 @@ * Validations de champs prédéfinies; 1. Pré remplissage des données * Un système autorisé dans FRW peut envoyer des données pour pré remplir son formulaire afin d’éviter la saisie d’informations déjà connues. +1. Données externes + * Possibilité d'appeler un service externe afin d'obtenir des données; + * Par exemple, des listes de régions / municipalités obtenues de [Données Québec](https://www.donneesquebec.ca/); + * Disponible à partir du milestone [2026.4](https://github.com/MTESSDev/FRW/milestones). 1. Conavigation * Un système autorisé dans FRW peut établir une session de conavigation avec un citoyen ou un utilisateur, permettant à un intervenant de visualiser en temps réel le formulaire en cours de remplissage et de fournir un accompagnement personnalisé. Cette fonctionnalité facilite le support, réduit les erreurs de saisie et améliore l’expérience utilisateur. * Disponible à partir du milestone [2025.09](https://github.com/MTESSDev/FRW/milestones) From 7b1b9597804a7aceb5865942bf2f8b560f46fe5c Mon Sep 17 00:00:00 2001 From: vinnyboii <128411313+vinnyboii@users.noreply.github.com> Date: Tue, 10 Mar 2026 09:45:32 -0400 Subject: [PATCH 2/4] Update donnees-externes.md --- Documentation/donnees-externes.md | 37 ++++++++++++------------------- 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/Documentation/donnees-externes.md b/Documentation/donnees-externes.md index 92d824b..25858f2 100644 --- a/Documentation/donnees-externes.md +++ b/Documentation/donnees-externes.md @@ -1,15 +1,16 @@ # Données externes Il est possible d'obtenir des données externes que vous pouvez exploiter dans votre formulaire. -Par exemple, il pourrait s'agir : -- D'une liste de valeurs transformée en domaine de valeurs pour une liste déroulante de votre formulaire; -- D'un indicateur (Ex: indicateur d'éligibilité vrai/faux); -- D'un objet qui peut être mappé dans des champs du formulaire. +Actuellement, les données externes peuvent être utilisées dans un domaine de valeurs pour une liste déroulante de votre formulaire; + +Selon vos besoins, il serait possible de faire évoluer la solution afin de gérer d'autres cas d'utilisation: +- Indicateur (Ex: indicateur d'éligibilité vrai/faux); +- Objet qui peut être mappé dans des champs du formulaire. ## Guide d'utilisation -La majeure partie des configurations nécessaires pour l'obtention des données externes se situe dans la "config transmission". +La majeure partie des configurations nécessaires pour l'obtention des données externes se situe dans la configuration "transmission". C'est dans ce fichier qu'il faudra définir les appels http pour obtenir les données externes. -Une fois cela fait, il suffit de définir la "source de données externes" sur le contrôle de votre choix dans la "config form" de votre formulaire. +Une fois cela fait, il suffit de définir la "source de données externes" sur le contrôle de votre choix dans la configuration "form" de votre formulaire. Voir le détail complet dans les sections suivantes. @@ -20,13 +21,15 @@ En résumé les composantes à configurer sont les suivantes : - `http_client_set` - Ici vous déclarez les noms que vous voulez donner aux sources de données externes (par exemple "regions", "municipalites", etc...). Pour chaque source vous devez définir les éléments suivants : - `sequence` - Permet de définir une séquence d'appel `http_client` : - Pour l'instant un seul élément est supporté, mais la base est là afin de supporter éventuellement plusieurs appels en séquence; - - Par exemple si la source de données externes nécessite préalablement l'obtention d'un jeton. + - Par exemple si la source de données externes nécessite préalablement l'obtention d'un jeton d'authentification. - `data_adapter:template` - Ceci permet de formater les données dans le format de votre choix; dans notre exemple on transforme les données reçues en domaine de valeurs pour appliquer sur une liste déroulante du formulaire. - `http_client` - Ici vous définissez chaque appel http_client présent dans la `sequence` définie précédemment. - + - Utiliser la syntaxe "input.donneesFormulaire.form.LeNomDeVotreChamp" si c'est un champ standard ou "input.donneesFormulaire.groupeCourant.LeNomDeVotreChamp" si le champ fait parti d'un groupe dans l'url d'obtention des données. Voici un exemple complet de config transmission avec définition de sources de données externes (régions et municipalités de Données Québec). +- Les éléments "regionsGroupe" et "municipalitesGroupe" sont présents pour démontrer l'utilisation avec des contrôles qui sont dans des groupes (standards ou répétables) dans le formulaire. ```yml +#Le bloc "etapes" est affiché à titre d'exemple pour représenter un fichier de transmission. etapes: - tache: genererWord options: @@ -49,6 +52,7 @@ http_client_set: data_adapter: # On réutilise exactement la MÊME partial GenererDomaine que pour les régions ! # On ajuste simplement le nom des colonnes val et desc_fr + # un label_en a été ajouté manuellement pour démontrer qu'il est possible de le gérer si la source de données est disponible dans les deux langues. template: | {{> GenererDomaine items=donnees_qc_municipalites_api.body.result.records value="{{{mcode}}}" label_fr="{{{munnom}}}" label_en="{{{munnom}}} (EN)"}} @@ -80,6 +84,7 @@ http_client: injection_rate_percentage: 100 delay_milliseconds: 1500 simulate_status_code: 500 + #On ne peut pas avoir simulate_status_code et simulate_network_exception en même temps #simulate_network_exception: true headers: Accept: 'application/json' @@ -91,20 +96,10 @@ http_client: headers: Accept: 'application/json' Content-Type: 'application/json' - chaos: - enabled: false - injection_rate_percentage: 100 - delay_milliseconds: 1500 donnees_qc_regions_groupe_api: method: GET url: 'https://www.donneesquebec.ca/recherche/api/3/action/datastore_search?resource_id=8a69813f-eeb0-45b3-aab0-7541d573ae31&sort=DESCR&filters={"NO_REG_ADM":["01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17"]}&limit=32000' - chaos: - enabled: false - injection_rate_percentage: 100 - delay_milliseconds: 1500 - simulate_status_code: 500 - #simulate_network_exception: true headers: Accept: 'application/json' Content-Type: 'application/json' @@ -115,13 +110,9 @@ http_client: headers: Accept: 'application/json' Content-Type: 'application/json' - chaos: - enabled: false - injection_rate_percentage: 100 - delay_milliseconds: 1500 ``` ### Config form Vous devez ensuite appliquer la source de données externes sur votre liste déroulante dans la config form de votre formulaire. -Voir le P700U Guide utilisateur FRW section [à compléter](https://formulaires.it.mtess.gouv.qc.ca/fr/Form/7/P700U/0/N/#p=sectWf). \ No newline at end of file +Voir le P700U Guide utilisateur FRW section [à compléter](https://formulaires.it.mtess.gouv.qc.ca/fr/Form/7/P700U/0/N/#p=sectWf). From a4472566d9ecf0d302c6b244472e7acf7636eb54 Mon Sep 17 00:00:00 2001 From: vinnyboii <128411313+vinnyboii@users.noreply.github.com> Date: Tue, 10 Mar 2026 11:39:25 -0400 Subject: [PATCH 3/4] Update donnees-externes.md --- Documentation/donnees-externes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/donnees-externes.md b/Documentation/donnees-externes.md index 25858f2..23399f2 100644 --- a/Documentation/donnees-externes.md +++ b/Documentation/donnees-externes.md @@ -25,6 +25,7 @@ En résumé les composantes à configurer sont les suivantes : - `data_adapter:template` - Ceci permet de formater les données dans le format de votre choix; dans notre exemple on transforme les données reçues en domaine de valeurs pour appliquer sur une liste déroulante du formulaire. - `http_client` - Ici vous définissez chaque appel http_client présent dans la `sequence` définie précédemment. - Utiliser la syntaxe "input.donneesFormulaire.form.LeNomDeVotreChamp" si c'est un champ standard ou "input.donneesFormulaire.groupeCourant.LeNomDeVotreChamp" si le champ fait parti d'un groupe dans l'url d'obtention des données. + Voici un exemple complet de config transmission avec définition de sources de données externes (régions et municipalités de Données Québec). - Les éléments "regionsGroupe" et "municipalitesGroupe" sont présents pour démontrer l'utilisation avec des contrôles qui sont dans des groupes (standards ou répétables) dans le formulaire. From 2adb82b18cb2cd061865efb1a9071b8acfe5819b Mon Sep 17 00:00:00 2001 From: j0ber Date: Wed, 11 Mar 2026 10:38:13 -0400 Subject: [PATCH 4/4] Update donnees-externes.md Page donnees-externes maj du lien vers le P700 --- Documentation/donnees-externes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/donnees-externes.md b/Documentation/donnees-externes.md index 23399f2..7d7ed68 100644 --- a/Documentation/donnees-externes.md +++ b/Documentation/donnees-externes.md @@ -116,4 +116,4 @@ http_client: ### Config form Vous devez ensuite appliquer la source de données externes sur votre liste déroulante dans la config form de votre formulaire. -Voir le P700U Guide utilisateur FRW section [à compléter](https://formulaires.it.mtess.gouv.qc.ca/fr/Form/7/P700U/0/N/#p=sectWf). +[Voir le P700U Guide utilisateur FRW section "Domaines de valeurs externes"](https://formulaires.it.mtess.gouv.qc.ca/fr/Form/7/P700U/0/N/#p=DomainesValeursExternes).