# TODO Platine pour couvrir les fonctionnalités de Coltrane
:::info
Documentation
* Les fonctionnalités Coltrane: https://miro.com/app/embed/uXjVOFM3tpE=/?pres=1&frameId=3458764521029897625
* Les concepts Coltrane: https://gitlab.insee.fr/sic/collecte-web/platine-batch/-/wikis/Concepts
* La documentation platine batch: https://gitlab.insee.fr/documentation-metallica/documentation-utilisateur-platine-batch/-/wikis/home
* Le modèle de données Platine: https://github.com/InseeFrLab/datacollection-management-api/tree/main/docs
:::
# Global
## Répondre à un questionnaire Orbeon
* Intégrer un questionaire (FILLSTROMAE)
* Créer STEPDATACOLLECTION spécifique Orbeon
* Aiguillage vers questionnaire sur Orbeon
:warning: attention, 2 bases Orbeon sur Coltrane. Le pool est déterminé selon le nom de la source dans le fichier http://qfcoltpilldb01.ad.insee.intra:8080/exist/rest/db/Pilotage/Meta/SourcesBases.xml/. Pas d'équivalent de cette répartition dans Platine pour le moment
* Implémenter les WS dont a besoin le serveur Orbeon:
Informations personnalisées dans le questionnaire pour les répondants
Orbeon utilise le WS de Pilotage "GET" path="/informations/questionnaire/{$idSource}/{$millesime}/{$idPeriode}" (dans informations.xqm)
http://qfcoltpilldb02.ad.insee.intra:8080/exist/apps/Pilotage/informations/questionnaire/acemotrim/2023/m01?idContact=ZCB2F2U
WS en GET "/interrogations/{$idCampagne}/{$idUniteEnquetee} (dans la base Pilotage, interrogation.xqm => concerne l'assistance? accès au site miroir?
http://qfcoltpilldb01.ad.insee.intra:8080/exist/apps/Pilotage/interrogations/emb-2021-m12/999999017
* Adapter le jar d'authentification Orbeon (pour répondants et site miroir)
répondants: appel au Webservice qui renvoie les habilitations des contacts
restxq=/apps/Pilotage/contacts/
http://qfcoltpilldb01.ad.insee.intra:8080/exist/restxq/contacts/BETTYBE
gestionnaires: appel au webservice /apps/Pilotage/utilisateurColtranes/{idep} pour vérifier le role et les sources
http://qfcoltpilldb01.ad.insee.intra:8080/exist/restxq/utilisateurColtranes/Y72WVH
* Extraction des réponses Orbeon
## Adpater queen pour la gestion de plusieurs contacts sur une UE
## Intégrer les enquêtes en dépôt retrait
* Ajout d'un paramètre dépot retrait au niveau de la source?
* Adapter le step ldap pour ajouter les habilitations LDAP nécessaires au dépot-retrait: upload_nomSource, download_nomSource et 999999033_nomSource_coltrane (999999033 est l'identifiant de l'UE)
* Créer un tableau "Mes enquêtes en dépot retrait" ?
https://gitlab.insee.fr/plateformes-collecte/coltrane/documentation/coltrane-doc/-/blob/master/Maintenance/Travaux%20Portail/depot-retrait/MaquetteDepotRetrait.png
* Mettre en place le retrait fichier et dépôt fichier via appel au WS R2D2
* Suivi des dépots-retraits?
# Batch
## Gestion du contact principal
* Récupération du contact principal précédent dans le batch "PersoLdap" ou "step Pilotage" (mois d'avant, année d'avant... selon la campagne), à faire en amont du step Ldap
* Vérifier que les endpoint Pilotage et le batch ne permettent pas de crééer 2 contacts principaux pour un même questionnaire et inversement que si il y a un seul contact pour une interrogation, il est automatiquement principal
* Quel processus (par batch ou endpoint) à mettre en place pour modifier le contact principal d'une interrogtation?
Actuellement dans Coltrane, c'est possible:
1. via batch avec Traitement/Type = 'Mise à jour' et Contact/Type = Creation
2. via Pilotage: l'ajout d'une habilitation à un contact rend ce contact principal, et remplace de ce fait le contact principal d'une interro si il en existe déjà un
* Gérer l'envoi du mail et du courrier au contact principal (pour l'instant logique 1-1)
## Associer des gestionnaires à une interrogation dans le step Pilotage (pour l'assistance)
cf https://gitlab.insee.fr/sic/collecte-web/platine-batch/-/wikis/Existant-Coltrane/Le-batch-PERSOCHAINE
* Relier les gestionnaires aux interrogations
Le modèle de données intègre les gestionnaires (cf Operator et OperatorService dans https://github.com/InseeFrLab/datacollection-management-api/blob/main/docs/questioning.jpg) mais ils ne sont pas associés à une interrogation pour le moment
* ajouter les gestionnaires dans le fichier sampleProcessing (balise optionnelle) et adapter le step Pilotage pour les intégrer.
:warning: impact sur MIT
:warning: quel fonctionnement côté ménages?
:::info
Traitement des interrogations dans Coltrane: les gestionnaires sont inclus dans le fichier de personnalisation (optionnel) et associés à une interrogation
Si Traitement/Type = 'Initialisation'
si interro existe deja
si un contact principal existe pour cette interro, on le recupère,
sinon, on prend en contact principal le premier contact du fichier
update interro avec infos du fichier pour les gestionnaires
sinon
creation interro avec infos du fichier de perso
Si Traitement/Type = 'Mise à jour' (verif existence interro plus haut)
si Contact/Type = Creation ou si il n'y a pas de contact dans le fichier de perso et pas de contact précédent(le batch crée dans ce cas un nouveau contact)
update contact principal de l' interro avec le nouveau contact créé dans les étapes précédentes
sinon
RIEN au niveau du contact principal
Dans tous les cas, update interro avec infos du fichier pour les gestionnaires
:::
## Suppression des informations par batch
Deux batchs dans Coltrane: **InformationSuppression** et **Suppression**
Le batch InformationSuppression crée des fichiers contenant les informations (réponses, ldap ... ) à supprimer, campagne par campagne. LA MOA dépose ensuite manuellement ces fichiers en entrée du batch SUPPRESSION pour la suppression effective des données.
* type: réponses
60 jours après la date de fermeture de la campagne
* type: réponses DMZ
réponses en DMZ: pas plus de 24h
* type: habilitations
1 jours après la date de fermeture de la campagne
:warning: Pb potentiel dans Platine: l'info concernant le contact principal est stocké dans les habilitations (alors que c'est dans les interrogations côté Coltrane). Si on supprime en base au bout de 1 jour, on n'a plus la profondeur pour rechercher le contact principal précédent
* type: interrogations
400 jours après la date de fermeture de la campagne (pour garder suffisamment de profondeur pour la récupération du contact principal)
* type: contacts
contact créé depuis plus de X ans (3 ans?) et qui n'ont plus d'habilitations
## Envoi de mails et de courrier par batch
* Gérer la récupération des infos de contact en base et non dans le fichier de perso pour l'envoi de mail et de courrier
### Mails
Synchroniser l'envoi de mail sur la date d'ouverture de l'enquête
Date d'ouverture si mail d'ouverture, date du jour si relance.
-> création d'un nouveau batch style SpocByNight
### Courriers
* Informations courrier: récupérer les informations en base
Adresse envoi: contact ou UE selon le courrier
Gestionnaires: adresse retour
Signataire (service collecteur)
Ministere (service collecteur)
Logo (service collecteur)
...
* Gestion du modèle de courrier
```java
"entreeCOL","ouvertureCOL","accompagnementCOL","relanceCOL","medCOL","cnrCOL","Sans"
String idModeleCourrier = traitement.getTypeCourrier().getModeleCourrier();
if ("Oui".equalsIgnoreCase(traitement.getQuestionnaire())) {
String nomModele = (idSource + millesime + idPeriode + modele).toLowerCase();
fileOut = new File(dirProcessing, "/xml_d_" + nomModele + idModeleCourrier + "_" + idEdition + ".xml");
}
else {
fileOut = new File(dirProcessing, "/xml_d_" + idModeleCourrier + "_" + idEdition + ".xml");
```
...
* Suivi de l'envoi du courrier (1 seule ouverture possible, xrs relances, mise en demeure possible si avis de non réponse envoyé précedemme etc...)
* RNVP: envoi des infos au RNVP puis batch courrier qui intègre ce retour RNVP (micro- batch qui tourne toutes les 15 min côté Coltrane)
## Extraction de données par batch
### Extraire les réponses
* Choix ou non d'extraire les réponses selon un paramètre ( je suppose que tout le monde extrait les réponses...)
* Cadencement de l'extraction modifiable depuis un paramêtre
* Extraction différentielle depuis la dernière extraction ou depuis une date passée en paramèetre du batch
### Extraire les contacts
* Choix ou non d'extraire les contacts selon un paramètre
* Cadencement de l'extraction modifiable depuis un paramêtre
* Extraction différentielle depuis la dernière extraction ou depuis une date passée en paramèetre du batch
# Front
## Contacter l'assistance ...
Cf existant Coltrane pour les gestionnaires
https://gitlab.insee.fr/sic/collecte-web/platine-batch/-/wikis/Existant-Coltrane/Interrogations
### ...depuis le questionnaire
* Affichage des tel des gestionnaires (si xrs gestionnaires, plusieurs tel). A defaut, teléphone du service collecteur
* Affichage de l'adresse des gestionnaires (1 seule adresse pour une liste de gestionnaires). A défaut, adresse du service collecteur
* Envoi de mail au pool de gestionnaire (1 seule adresse pour une liste de gestionnaires) ou à défaut au service collecteur
https://gitlab.insee.fr/plateformes-collecte/coltrane/coltrane/-/blob/main/coltrane-portail/src/main/java/fr/insee/coltranebis/portail/ihm/action/AssistanceAbstract.java
https://gitlab.insee.fr/plateformes-collecte/coltrane/coltrane/-/blob/main/coltrane-portail/src/main/java/fr/insee/coltranebis/portail/ihm/action/AssistanceQuestionnaireAction.java
:warning: vérifier la modélisation dans Platine (plusieurs gestionnaires avec un seul mail et une seule adresse)
### ...depuis le portail
* Récupération des habilitations pour afficher la liste des sources * UE possibles dans le formulaire de contact et le pré-remplir
* Envoi mail à insee contact
### ...en mode déconnecté
* Envoi mail à insee contact
## Fusionner ses comptes et associer une ou plusieurs enquêtes à son compte depuis le portail
* Associer autres enquêtes liées à mon adresse de messagerie (récupérer les contacts avec le meme mail)
* Fusionner son compte avec un autre compte (en fournissant idec et mot de passe du compte à associer)
## Personnaliser son mot de passe depuis le portail mes enquêtes
* Personnaliser son mot de passe dans 'Mon compte'
## Personnaliser les messages d'accueil (administration Platine)
* pour Portail et Pilotage