Integration Survey Solutions
Cette page documente l'integration entre PCH-SIG et Survey Solutions pour la collecte de donnees terrain.
Vue d'ensemble
Survey Solutions est un outil de collecte de donnees de la Banque Mondiale. L'integration permet de :
- Synchroniser les menages collectes sur le terrain
- Importer les donnees de l'enquete
- Mettre a jour les informations des menages existants
Architecture
┌─────────────────┐ ┌─────────────────┐ ┌──────────────┐
│ Survey │ Sync │ PCH-SIG │ Store │ Database │
│ Solutions │ ------> │ API │ ------> │ PostgreSQL │
│ (Tablettes) │ │ │ │ │
└─────────────────┘ └─────────────────┘ └──────────────┘
Endpoints
Le SIG va chercher les interviews sur le serveur Survey Solutions : il n'y a pas d'endpoint où Survey Solutions pousserait des données.
Import de ménages
| Endpoint | Methode | Permission | Description |
|---|---|---|---|
/api/menages/survey-solutions/import | POST | registre.import | Importe des interviews d'un questionnaire |
/api/menages/survey-solutions/sync | POST | registre.import | Synchronise un questionnaire, ou tous les questionnaires ménage actifs |
/api/menages/survey-solutions/questionnaires | GET | registre.import | Questionnaires de type ménage |
/api/menages/survey-solutions/stats | GET | registre.menages_view | Statistiques d'import |
Mise à jour de ménages existants
| Endpoint | Methode | Permission | Description |
|---|---|---|---|
/api/menages/survey-solutions/updates/process | POST | registre.menages_edit | Applique des interviews de mise à jour |
/api/menages/survey-solutions/updates/sync | POST | registre.menages_edit | Synchronisation manuelle des mises à jour |
/api/menages/survey-solutions/updates/questionnaires | GET | registre.menages_view | Questionnaires de type mise à jour |
/api/menages/survey-solutions/updates/stats | GET | registre.menages_view | Statistiques de mise à jour |
Synchronisation
POST /api/menages/survey-solutions/sync
{ "questionnaireId": "<uuid du questionnaire dans le SIG>" }
Sans questionnaireId, tous les questionnaires ménage actifs sont synchronisés.
{
"success": true,
"message": "Synchronisation terminée: 120 ménage(s) importé(s), 25 doublon(s), 5 erreur(s)",
"resultats": {
"succes": 120,
"doublons": 25,
"erreurs": 5,
"questionnaires": [
{ "id": "…", "title": "Questionnaire ménage", "result": { "…": "détail par interview" } }
]
}
}
Erreurs : 404 Questionnaire non trouvé, 400 Aucun questionnaire de type ménage configuré.
Import ciblé
POST /api/menages/survey-solutions/import
{
"questionnaireId": "<uuid du questionnaire dans le SIG>",
"interviews": [{ "id": "…", "key": "12-34-56-78" }]
}
questionnaireId est obligatoire (400 ID du questionnaire requis) et le questionnaire doit être de type ménage. Le détail de chaque interview porte un statut success, duplicate ou une erreur ; un doublon n'est pas réimporté.
Mapping des champs
Menage
| Survey Solutions | PCH-SIG | Description |
|---|---|---|
interview__id | collecteId | ID unique de l'interview |
menage_code | code | Code du menage |
region | region.nom | Nom de la region |
secteur | secteur.nom | Nom du secteur |
localite | localite.nom | Nom de la localite |
gps__Latitude | latitude | Latitude GPS |
gps__Longitude | longitude | Longitude GPS |
gps__Accuracy | precisionGps | Precision en metres |
taille_menage | tailleMenage | Taille du menage |
nb_enfants_0_4 | nbEnfants04 | Enfants 0-4 ans |
nb_enfants_5_14 | nbEnfants514 | Enfants 5-14 ans |
distance_ecole | distanceEcole | Distance ecole (km) |
distance_sante | distanceSante | Distance centre sante (km) |
Chef de menage
| Survey Solutions | PCH-SIG | Description |
|---|---|---|
chef_nom | chefMenage.nomComplet | Nom complet |
chef_sexe | chefMenage.sexe | Sexe (M/F) |
chef_age | chefMenage.age | Age |
chef_telephone | chefMenage.telephone | Telephone |
chef_education | chefMenage.niveauEducation | Niveau education |
Logement
| Survey Solutions | PCH-SIG | Description |
|---|---|---|
type_logement | logement.typeLogement | Type de logement |
statut_occupation | logement.statutOccupation | Statut d'occupation |
nb_pieces | logement.nbPieces | Nombre de pieces |
materiau_mur | logement.materiauMur | Materiau des murs |
materiau_toit | logement.materiauToit | Materiau du toit |
source_eau | logement.sourceEau | Source d'eau |
type_toilette | logement.typeToilette | Type de toilettes |
Nouveaux champs
Distance aux services
Les champs de distance aux services sociaux ont ete ajoutes :
| Champ | Type | Description |
|---|---|---|
distanceEcole | decimal | Distance a l'ecole la plus proche (km) |
distanceSante | decimal | Distance au centre de sante (km) |
distanceMarche | decimal | Distance au marche (km) |
distanceEauPotable | decimal | Distance au point d'eau (km) |
Ces champs sont utilises pour :
- Le calcul du score PMT
- L'analyse de vulnerabilite
- Le ciblage geographique
Gestion des conflits
Strategie de mise a jour
L'import ne remplace jamais un ménage existant : une interview déjà importée est comptée comme doublon et ignorée. La mise à jour d'un ménage existant passe par les routes /api/menages/survey-solutions/updates/*.
Champs proteges
Certains champs ne sont pas mis a jour apres la premiere collecte :
code(code menage)dateEnregistrementcreatedAt
Validation des donnees
Regles de validation
| Champ | Regle | Message d'erreur |
|---|---|---|
region | Doit exister | "Region non trouvee" |
tailleMenage | > 0 | "Taille menage invalide" |
latitude | -90 a 90 | "Latitude hors limites" |
longitude | -180 a 180 | "Longitude hors limites" |
Gestion des erreurs
Chaque interview en erreur apparaît dans le détail du résultat avec son index et le message d'erreur ; les autres interviews du lot sont importées.
Configuration
Variables d'environnement
SUSO_API_URL=https://survey.example.org
SUSO_API_USER=<utilisateur API>
SUSO_API_PASSWORD=<voir gestionnaire de secrets>
SUSO_WORKSPACE=<workspace>
Un projet peut avoir sa propre configuration de synchronisation (GET/PUT /api/projets/{id}/synchronisation) ; à défaut, la configuration globale s'applique.
Planification
php bin/console app:survey-solutions:sync
Bonnes pratiques
- Testez en preprod : Validez le mapping avant la production
- Verifiez les GPS : Controlez la qualite des coordonnees
- Monitoring : Surveillez les erreurs de synchronisation
- Backup : Exportez les donnees Survey Solutions regulierement