# Moog
**Rmq :** uniquement des appels à l'api platine-pilotage
- vérifier globalement les différences fonctionnelles entre les profils gestion/assistance
- vérifier la liste des campagnes disponibles
- endpoint : **GET** /api/moog/campaigns
- recherche enquêté
- rechercher un enquêté XXX
- endpoint : **GET** /api/moog/campaigns/survey-units (appelé à chaque saisie de caractère à partir de 3)
- vérifier le multipage (25 UE max par page)
- endpoint : **GET** /api/moog/campaigns/survey-units (appelé à chaque changement de page)
- rechercher selon les différentes colonnes (cf. doc Moog)
- tester le cas où le croisement idContact x idUE est mobilisé pour plusieurs campagnes
- tester le cas où un idContact est mobilisé pour plusieurs idUE de la même campagne
- tester le cas où un idContact est mobilisé pour plusieurs idUE de différentes campagnes
- consulter les événements d'un enquêté (refus, ...)
- endpoint : **GET** /api/moog/campaigns/{campaign}/survey-units/{id}/management-monitoring-infos
- ajouter des événements à un enquêté (refus, ...)
- endpoint : **POST** /api/moog/campaigns/{idCampaign}/uploads
- tester le cas où le croisement idContact x idUE est mobilisé pour plusieurs campagnes : ajouter des événements sur les différentes lignes
- tester le cas où un idContact est mobilisé pour plusieurs idUE de la même campagne : ajouter des événements sur les différentes lignes
- tester le cas où un idContact est mobilisé pour plusieurs idUE de différentes campagnes
- vérifier qu'il est impossible d'ajouter un événement si la campagne est en dehors des dates de collecte
=> + vérifier l'apparition des événements qui remontent automatiquement (INITLA, PND, PARTIELINT, VALINT, RELANCE) avec les cas complexes cités précédemment
- supprimer un événement
- endpoint : DELETE /api/moog/uploads/{id}
- accéder au site miroir de collecte : accès au bon questionnaire, en lecture seule
- tester le cas où un idContact est mobilisé pour plusieurs idUE de la même campagne
- tester le cas où le croisement idContact x idUE est mobilisé pour plusieurs campagnes => pas encore possible, à rajouter quand l'api Queen le permettra
- tester le cas où un idContact est mobilisé pour plusieurs idUE de différentes campagnes
- vérifier la possibilité de télécharger la preuve de dépôt pour un questionnaire validé
- consultation du mail d'un enquêté
- endpoint : **GET** /api/moog/contact/{id}/mail
- reinit mdp : vérifier l'url de renvoi vers le formulaire de reinit
- sélection d'une campagne : apparition des boutons vers les fonctionnalités propres à la campagne
- enregistrement d'événement de masse
- endpoint : **POST** /api/moog/campaigns/{idCampaign}/uploads
- affichage du libellé de la campagne sélectionnée
- absence bouton + message si la campagne est en dehors des dates de collecte
- tester format de fichier incorrect (casse, nommage des colonnes, statuts impossibles...)
- tester les différents statuts possibles
- tester 1 vs plusieurs événements
- tester d'ajouter plusieurs événéments pour le même idContact x idUE
- tester l'ajout d'événement sur une UE inconnue (croisement idContact x idUE inconnu pour cette campagne)
- tester le cas où un idContact est mobilisé pour plusieurs idUE de la même campagne
- tester le cas où le croisement idContact x idUE est mobilisé pour plusieurs campagnes
- suivi de collecte
- affichage du libellé de la campagne sélectionnée
- tableau d'avancement :
- endpoint : **GET** /api/moog/campaigns/{idCampaign}/monitoring/progress
- affichage de toutes les partitions
- vérifier les comptages selon les événements ajoutés, et en tenant compte des règles de priorisation, cf. doc Moog
- tableau des relances :
- endpoint : **GET** /api/moog/campaigns/{idCampaign}/monitoring/follow-up
- message en l'absence de relance
- affichage de toutes les relances et partitions
- vérifier comptages selon relances effectuées
=> attention sur le fonctionnement de ce tableau pour les comptages : si je relance l'UE A, puis plus tard je relance les UE A+B, dans le tableau la 1e relance comptera les 2 UE et la 2e relance ne comptera que l'UE A
- relancer des enquêtés
- endpoint : **GET** /api/moog/campaigns/{idCampaign}/survey-units/follow-up
- affichage du libellé de la campagne sélectionnée
- absence bouton + message si la campagne est en dehors des dates de collecte
- vérifier la liste des UE présentes dans l'extraction
- tester le cas où un idContact est mobilisé pour plusieurs idUE de la même campagne
- tester le cas où le croisement idContact x idUE est mobilisé pour plusieurs campagnes
- vérifier l'indicatrice de PND
- consultation d'archives
- affichage des archives
- endpoint : **GET** /api/moog/campaigns/{idCampaign}/uploads
- suppression d'une archive
- endpoint : **DELETE** /api/moog/uploads/{id}
- archive créée par un upload unitaire (depuis la recherche d'enquêté) : vérifier suppression de l'événement
- archive créée par un upload de masse : vérifier suppression de l'événement
- console d'admin
- la liste des campagnes disponibles
- endpoint : **GET** /api/moog/campaigns
- extraction des données d'une campagne
- endpoint : **GET** /api/moog/campaigns/{idCampaign}/extraction
- modification d'une campagne (label, dates)
- endpoint : **PUT** /api/moog/campaigns/{id}
- suppression de campagne
- endpoint : **DELETE** /api/moog/campaigns/{id}
=> attention : pas intuitif sur le swagger, rangé dans le groupe metadata
- vérifier la suppression impossible si campagne en période de collecte
# Parcours répondant
- authentification
- modification de mdp à première connexion
- ajout/modification de l'adresse mail si portail paramétré à true
- absence de composant d'ajout/modification de l'adresse mail si portail paramétré à false
- reinit de mdp avec mail connu
- reinit de mdp sans mail connu
- aiguillage
- cas de redirection vers portail mes enquêtes
- cas de redirection directe vers le questionnaire
- cas enquêté 0 (pas de collecte en cours) : reste sur promotion avec message associé
- cas de collecte en cours : renvoie vers le bon questionnaire
- portail mes enquêtes
- vérifier la présence du bouton d'accès au questionnaire selon les dates (voir la règle précise)
- bouton présent : renvoie vers le bon questionnaire
- questionnaire
- vérifier la personnalisation de la page de garde (métadonnées campagne + personnalization UE)
- tester la persistence des données ?? (niveau séquence)
- déconnexion par inactivité ??
- bouton de déconnexion en cours de questionnaire
- persistence des données
- renvoi vers la bonne page (promotion ou portail mes enquêtes)
- déconnexion effective (nécessite de se re log pour se reconnecter)
- passage batch SynchronizeQuestionnaireStates pour capter le init questionnaire)
- validation questionnaire
- passage batch SynchronizeQuestionnaireStates pour capter le validated questionnaire
- téléchargement preuve de dépôt
- déconnexion (idem à bouton déco du menu, mais pas besoin de check la persistence)
- reconnexion sur un questionnaire validé ?? (retour sur page de téléchargement de preuve de dépôt)
- formulaire assistance
- envoi de formulaire d'assistance sans être authentifié
- envoi de formulaire d'assistance en étant authentifié
# API pilotage webclients
Voir avec Audrey :smirk:
# API pilotage - intégration - suppression (hors webclients)
- création de owner
- création de support
- création de source
- création de survey
- création de campaign
- création de partitioning
# API questionnaire - intégration - suppression (hors webclients)
- création du contexte de campagne : **POST** api/campaign/context
# Batchs
## sampleProcessing
Vérifier que les différentes étapes du batch fonctionnent :
- cas de l'intégration d'UE
- création d'un compte (id/mdp) dans l'annuaire pour l'UE (step ldap) - (se connecter avec ce compte pour voir si ça fonctionne)
- création de l'UE dans Platine pilotage (step pilotage)
- création de l'UE dans Platine questionnaire (step datacollection)
- création d'un fichier calc contenant les id/mdp créés pour chaque UE (step outputfile - uniquement en recette)
- création d'un fichier xml à destination de l'éditique dans le cas d'une demande d'envoi de courrier (step output - <Option type="destination-postalmail">yes</Option>)
- si <Option type="destination-RNVP">no</Option>, le fichier doit être créé dans le dossier `\\hp_as_st_d2_50\st_data_hp\sic_dv2\batch\out\editique` (pour la dv2)
- si <Option type="destination-RNVP">yes</Option>, le fichier doit être créé dans le dossier `\\hp_as_st_d2_50\st_data_hp\sic_dv2\batch\out\editique\rnvp` (pour la dv2)
- dans les 2 cas, le fichier doit être aussi créé dans le dossier `\\hp_as_st_d2_50\st_data_hp\sic_dv2\batch\out\sampleProcessing\enquête...\...\courrier\` (sauvegarde du fichier)
- dans le fichier xml en sortie, vérifier la présence de Ue_CalcIdentifiant et Ue_CalcMotDePasse
- réception d'un mail dans le cas d'une demande d'envoi de mail (step output - <Option type="destination-mail">yes</Option>)
- création de l'état INITLA dans Moog : à vérifier directement dans Moog ou bien dans la base Platine pilotage avec le endpoint GET /api/moog/campaigns/{campaign}/survey-units/{id}/management-monitoring-infos (step moog - <Goal>create</Goal>)
- cas de la relance d'UE déjà créées : attention, le contenu du fichier sampleProcessing est différent du cas d'au-dessus, avec notamment une variable `IdeC` qui correspond à l'identifiant de connexion et qui est à mettre dans la balise `Contact`
- création d'un fichier xml à destination de l'éditique dans le cas d'une demande d'envoi de courrier (step output - <Option type="destination-postalmail">yes</Option>)
- dans le fichier xml en sortie, vérifier notamment la présence de la variable `Ue_CalcIdentifiant` qui doit être égal à `IdeC`
- réception d'un mail dans le cas d'une demande d'envoi de mail (step output - <Option type="destination-mail">yes</Option>)
- dans le mail reçu, vérifier notamment la présence de l'identifiant de connexion (qui doit correspondre à la valeur de la variable `IdeC`)
- création de l'évènement RELANCE dans Moog : à vérifier directement dans Moog ou bien dans la base Platine pilotage (évènement FOLLOWUP) avec le endpoint GET /api/moog/campaigns/{campaign}/survey-units/{id}/management-monitoring-infos (step moog - <Goal>update</Goal>)
- cas d'une séquence 2 d'un enquête à séquences (type enquête Logement) - préalable : avoir supprimé la campagne dans la base Platine questionnaire (mais pas dans Platine pilotage)
- intégration d'UE avec idUe et idcontact existants en base Platine pilotage (vérifier qu'on retrouve bien dans Moog)
- création d'un fichier xml à destination de l'éditique dans lequel on doit trouver la variable `Ue_CalcIdentifiant` égale à `IdeC` mais pas le mdp (avec options ouverture/web dans step output)
- tests spécifiques à l'envoi de courriers
- vérifier le calcul du nom du fichier xml de sortie selon les options mises dans output ("operation-type", "operation-mode","operation-protocol","with-questionnaire")
- vérifier dans le fichier xml de sortie que les variables suivantes sont présentes et se calculent comme il faut :
- IdOperation = concaténation de COLM_ + `idSource` + _ + MODE + PROTOCOLE + _ + TYPE + (_ QST) ; avec MODE = TEL/FAF/WEB selon la valeur de la variable `operation-mode` , PROTOCOLE = SEQ/PAN ou `vide` selon la valeur de la variable `operation-protocol` , TYPE = OUV/REL/LIB selon la valeur de la variable `operation-type` et QST si `with-questionnaire` vaut yes
- TypeGenerateur = courrier_fo
- PartieNomFichierLibreZip = concaténation de `idSource` + _ + `millesime` + _ + MODE + PROTOCOLE + _ + TYPE ; avec MODE = TEL/FAF/WEB selon la valeur de la variable `operation-mode` , PROTOCOLE = SEQ/PAN ou `vide` selon la valeur de la variable `operation-protocol` , TYPE = OUV/REL/LIB selon la valeur de la variable `operation-type`
- Barcode = IS + date de dépôt du courrier sur 3 positions (=numéro de jour dans l'année, par exemple le 11/10/2023 est le jour n° 284 de l'année 2023) + numéro d'édition tronqué des 2 premiers caractères + `Identifiant` + des espaces pour arriver à 35 caractères ==> pas besoin de vérifier le calcul exact du barcode (je l'ai mis pour qu'on ait en tête comment il est calculé), mais peut-être juste vérifier sa présence et le fait qu'on retrouve bien l'identifiant de l'UE `Identifiant` dedans
- InitAccuseReception = non
- NumeroDocument : vérifier la présence de cette variable qui correspond au numéro du document dans le fichier (commence à 00000001)
- AdresseRetourL1 à AdresseRetourL7 : vérifier la présence de ces variables dans le fichier, elles sont toujours à vide
- CodePostalDestinataire = `CodePostal`
- BddIdentifiantUniteEnquetee = `Identifiant`
- BddAdressePosteeL1 = concaténation de `Civilite`, `Prenom`, `Nom`
- BddAdressePosteeL2 = `ComplementAdresse` (ou partie de `ComplementAdresse` inférieure à 38 caractères dans le cas où `ComplementAdresse` > 38 caractères)
- BddAdressePosteeL3 = partie de `ComplementAdresse` supérieure à 38 caractères (cas où `ComplementAdresse` > 38 caractères)
- BddAdressePosteeL4 = concaténation de `NumeroVoie` `IndiceRepetition` `TypeVoie` et `LibelleVoie`
- BddAdressePosteeL5 = `MentionSpeciale`
- BddAdressePosteeL6 = concaténation de `CodePostal` et `LibelleCommune`
- BddAdressePosteeL7 = FRANCE (en dur a priori)
- vérifier que `&#x2028;` en entrée de batch se transforme en `
` en sortie de batch (c'est le code pour signifier un retour à la ligne pour l'édition des courriers par l'éditique) => tester avec `<Enq_MailAssistance>https://enquetes.stat-publique.fr/tic&#x2028;Rubrique « Contacter l’assistance »</Enq_MailAssistance>`
- tester le cas où il manque une variable dans la balise `Metadonnees` ou dans la balise `Metadonnees_Ue` par rapport au modèle souhaité (normalement plantage du batch)
- tester le cas où il y a une variable en trop dans la balise `Metadonnees` ou dans la balise `Metadonnees_Ue` par rapport au modèle souhaité (normalement le batch filtre et c'est ok)
- tester l'option use-sample dans le step output `<Option type="use-sample">yes</Option>`
- si `yes`, ça doit aller chercher les infos dans le fichier de perso et pas dans Platine pilotage
- si `no`, ça va chercher dans Platine pilotage
- tester l'envoi d'un courrier avec questionnaire
- vérifier le nommage du fichier xml en sortie
- vérifier le calcul de IdOperation (avec `_QST` à la fin)
- tester l'envoi d'un courrier non standard
- vérifier le nommage du fichier xml en sortie
- vérifier le calcul de IdOperation = COLM_ `idSource` _ CUST
- Tests spécifiques à l'envoi de mails
- vérifier la présence des modèles de mails sous applishare (sur chaque plateforme dv, dv2, beta, prod)
- tester l'envoi des mails standards pour tous les modèles existants ("operation-type", "operation-mode","operation-protocol")
- tester l'envoi d'un mail non standard
## extractdata
(= extraction différentielle des données et des paradonnées)
préalable : avoir validé le questionnaire d'une ou plusieurs UE
vérifier pour chaque campagne où des UE ont été validées (càd que l'état de questionnaire de l'UE = VALIDATED) :
- la création d'un fichier data.diff.IDCAMPAGNE.JOUR_ET_HEURE_DE_L_EXTRACTION.xml dans `\\hp_as_st_d2_50\st_data_hp\sic_dv2\batch\out\extractData\extractdata\IDCAMPAGNE\differential\data` contenant les données de questionnaire de chacune des UE validées
- la création d'autant de fichier de paradatas que d'UE extraites : paradata.diff.IDCAMPAGNE.IDUE.json dans `\\hp_as_st_d2_50\st_data_hp\sic_dv2\batch\out\extractData\extractdata\IDCAMPAGNE\differential\paradata`
Vérifier pour les UE extraites le passage d'état de questionnaire à EXTRACTED
NB : pour consulter l'état de questionnaire d'une UE => api platine questionnaire : state-data-controller endpoint **GET** /api/survey-unit/id/state-data
## extractdataComplete
vérifier l'extraction des datas/paradatas des validés/partiels pour une campagne (faire plusieurs tests pour voir si ça extraie bien ce qui est demandé : uniquement les datas des partiels, datas+paradatas des validés, datas+paradatas des validés+partiels, etc.)
- Pour les datas : création d'un fichier data.complete.partial.IDCAMPAGNE.JOUR_ET_HEURE_DE_L_EXTRACTION.xml dans `\\hp_as_st_d2_50\st_data_hp\sic_dv2\batch\out\extractData\extractdata\IDCAMPAGNE\complete\data`
- Pour les paradatas : création de fichiers paradata.complete.IDCAMPAGNE.IDUE.json pour chaque UE extraite dans `\\hp_as_st_d2_50\st_data_hp\sic_dv2\batch\out\extractData\extractdata\IDCAMPAGNE\complete\paradata`
- une extraction des partiels (que ce soit les datas ou paradatas) doit faire l'extraction pour les UE dont l'état de questionnaire est à INIT
- une extraction des validés (que ce soit les datas ou paradatas) doit faire l'extraction pour les UE dont l'état de questionnaire est >= VALIDATED (en pratique aujourd'hui : VALIDATED/EXTRACTED)
NB : pour consulter l'état de questionnaire d'une UE => api platine questionnaire : state-data-controller endpoint **GET** /api/survey-unit/id/state-data
## importPND
préalable : avoir une campagne en cours de collecte
Démarche générale :
- préparer un fichier fictif de PND de la forme de ceux qu'on reçoit de l'éditique avec des UE qui appartiennent à une campagne en cours de collecte
- mettre le fichier dans le dossier \\hp_as_st_d2_50\st_data_hp\sic_dv2\batch\in\editique
- lancer le batch importPND
- vérifier que le fichier a été traité : déplacé du dossier `...\editique` au dossier `...\editique\treated`
- vérifier dans Moog que l'évènement PND est bien ajouté aux UE qui étaient dans le fichier (si elles sont bien dans le champ, voir les cas de tests ci-dessous)
Cas de tests :
- une UE dans une campagne en cours
- une UE dans une campagne pas démarrée
- une UE dans une campagne terminée
- une UE en interséquence
- etc. (jouer sur les dates et s'assurer notamment des dates limites jour de début de collecte, jour de fin de collecte)
- 2 fichiers PND en même temps dans le dossier
## reinitPasswordPostalMail
- faire une demande de nouveau mot de passe via le portail de promotion
- pour un compte sans adresse email
- pour un 2e compte sans adresse email
- pour un compte avec adresse email
- vérifier que les fichiers de demandes unitaires sont créées sous applishare Platine : 2 demandes (les 2 pour qui il n'y avait pas d'adresse email)
- lancer le batch reinitPasswordPostalMail
- vérifier la création du fichier xml pour l'éditique (un fichier avec les 2 UE ci-dessus)
- vérifier le bon fonctionnement du nouveau mot de passe (dans les 2 cas mail/courrier)
## synchronizeQuestionnaireStates
- pour une UE, valider un questionnaire
- pour une autre UE, démarrer le questionnaire sans le valider
- lancer le batch synchronizeQuestionnaireStates
- vérifier dans Moog :
- l'ajout de l'évènement VALIDATED pour la 1ère UE (ainsi que l'horaire)
- l'ajout de l'évènement PARTIELINT pour la 2e UE (ainsi que l'horaire)
(possibilité aussi de vérifier dans la base Platine pilotage)
Nb : actuellement l'horaire de l'événement est celui du passage du batch, et non pas celui de modification de l'état du questionnaire
# Autres
- test du flux interapplicatif d'import des PND depuis l'éditique vers l'applishare Platine (UNIQUEMENT EN PROD, nécessite de se coordonner avec l'éditique) - à vérifier lorsqu'il y a une migration applishare ou autre
- vers le dossier `\\pd_as_st_d1_50\st_data_pd\sic_pd\batch\in\editique` quand enquête web sous Platine
- vers le dossier `\\pd_as_st_d1_50\st_data_pd\sic_pd\batch\in\editique\hors-platine` sinon
- test du flux interapplicatif de dépôt des fichiers de courriers de Platine vers l'editique (UNIQUEMENT EN PROD, nécessite de se coordonner avec l'éditique)
- cas RNVP = yes
- cas RNVP = no
#
idées : chargement de masse d'event dans moog