# Communications Pearl/Queen
Récapitulatif des communications
| Id | Expéditeur | Destinataire | Objectif / message |
| --- | ---------- | ------------ | ------------------------------------------ |
| 1 | Pearl | Queen | Synchroniser Queen |
| 2 | Pearl | Queen | Ouvrir Queen selon un contexte |
| 3 | Pearl | Queen | HealthCheck |
| 4 | Queen | Pearl | Synchronisation terminée (succès ou échec) |
| 5 | Queen | Pearl | Questionnaire démarré |
| 6 | Queen | Pearl | Questionnaire complété à 100% |
| 7 | Queen | Pearl | Demande de fermeture de Queen |
| 8 | Queen | Pearl | Retour healthCheck |
5-6: envoyer l'évènement dès qu'il survient.
Pas d'évènement mixte.
Question : un questionnaire est marqué comme terminé, l'enquêteur
## De Pearl à Queen
### 1) Synchronisation
Pour déclencher la synchronisation de Queen, Pearl envoie un évènement à Queen :
postMessage
```
message = {
type : 'PEARL',
command:'SYNCHRONIZE'
}
```
### 2) Ouverture d'un questionnaire
Pour déclencher l'ouverture de Queen dans un certain contexte, l'application Pearl communique le context via l'url :
exemple :
http://pearl.insee.fr/queen/survey-unit/123
Redirect par Queen -> http://pearl.insee.fr/queen/questionnaire/simpsons/survey-unit/123
"simpsons" récupére par Queen (l'info est dans survey-unit)
"simpsons" est l'id de questionnaire (pas de campagne)
- queen ouvre le questionnaire "simpsons" avec les donnnées de l'unitée enquêtées "123"
Pas de message dans ce cas.
### 3) HealthCheck
Pour vérifier si Queen est bien embarqué dans Pearl
postMessage
```
message = {
type : 'PEARL',
command:'HEALTH_CHECK'
}
```
## De Queen à Pearl
### 4) Synchronisation terminée
Pour notifier que la synchronisation de Queen est terminée (avec le bilan), Queen envoie un évènement à Pearl :
postMessage
```
message = {
type : 'QUEEN',
command : 'UPDATE_SYNCHRONIZE',
state: 'SUCCESS/FAILURE'
}
```
### 5) Questionnaire démarré
Pour notifier que le questionnaire est démarré (au moins une variable collectée dans Queen), Queen envoie un évènement à Pearl :
postMessage
```
message = {
type : 'QUEEN',
command : 'UPDATE_SURVEY_UNIT',
surveyUnit : '123',
state: 'STARTED'
}
```
### 6) Questionnaire terminé (100%)
Pour notifier que le questionnaire est terminé à 100%, Queen envoie un évènement à Pearl :
postMessage
```
message = {
type : 'QUEEN',
command : 'UPDATE_SURVEY_UNIT',
surveyUnit : '123',
state: 'COMPLETED'
}
```
### 7) Fermer Queen
Pour déclencher la fermeture de Queen, Queen envoie un évènement à Pearl :
postMessage
```
message = {
type : 'QUEEN',
command : 'CLOSE_QUEEN'
}
```
propostion de nouvel endPoint
```
{
"operations": ["simpsons2020x00", "vqs2021x00"],
"reporting-units": [
{ "id": "11", "operation": "simpsons2020x00" },
{ "id": "12", "operation": "simpsons2020x00" },
{ "id": "13", "operation": "simpsons2020x00" },
{ "id": "14", "operation": "simpsons2020x00" },
{ "id": "20", "operation": "vqs2021x00" },
{ "id": "21", "operation": "vqs2021x00" },
{ "id": "22", "operation": "vqs2021x00" },
{ "id": "23", "operation": "vqs2021x00" }
],
"nomenclatures": ["cities2019", "regions2019"]
}
```
### 8) Retour healthCheck
Pour notifier que Queen est bien embarqué dans Pearl, Queen envoie un évènement à Pearl :
postMessage
```
message = {
type : 'QUEEN',
command : 'HEALTH_CHECK',
state: 'READY'
}
```