Cette application sert de serveur et d'espace d'administration pour eva
Pour voir les autres projets de eva :
Anciens dépôts que nous n'utilisons plus aujourd'hui :
Autre dépendences :
-
Base de données et assimilé
PostgreSql Redis -
Création de la base
rake db:create
-
Initialisation de la base
rake db:migrate
&&rake db:seed
Avant de pouvoir commencer des tests utilisateurs, il vous faut créer une campagne avec l'interface d'administration décrite ci-dessous.
-
Lancer les tests
bundle exec rake spec
ouguard
-
Lancer storybook en développement
Générer le fichier de description des composants :
bundle exec rake view_component_storybook:write_stories_json
Pour démarrer storybook (votre serveur rails doit être démarré) :
npm install
npm run storybook
Pour générer des nouvelles stories :
rake view_component_storybook:write_stories_json
-
Espace d'administration accessible à l'url
/admin
, un compte admin est créé avec l'execution du seed. À ce jour le compte créé est[email protected]
avec le mot de passepassword
(pour le développement seulement bien sûr ;-)) -
Variables d'environnement
PROTOCOLE_SERVEUR=http
HOTE_SERVEUR=localhost:3000
URL_CLIENT=http://localhost:7700/jeu
[email protected]
METABASE_SITE_URL=http://metabase.eva.beta.gouv.fr
METABASE_SECRET_KEY=<SECRET_METABASE>
INCLUSION_CONNECT_CLIENT_ID=local_inclusion_connect
INCLUSION_CONNECT_CLIENT_SECRET=<SECRET_IC>
INCLUSION_CONNECT_BASE_URL=https://recette.connect.inclusion.beta.gouv.fr
Sans ces variables, le projet ne se lancera pas correctement en local. <SECRET_METABASE> se trouve sur metabase https://metabase.eva.beta.gouv.fr/admin/settings/embedding-in-other-applications/standalone Demander le <SECRET_IC> à l'équipe
L'api est accessible au point /api
Requête
POST /api/evaluations
{
"nom": "Roger",
"code_campagne": "Mon code de campagne",
"terminee_le": "2021-10-06T16:13:24+0000"
}
Réponse
{
"anonymise_le": null,
"campagne_id": "09209dea-0fa7-40ea-aba8-cbadc1957f4d",
"created_at": "2021-10-08T09:27:09.754+02:00",
"email": null,
"id": "51b4b749-7ac2-40b4-b8f8-b8c9e5663c69",
"nom": "Roger",
"telephone": null,
"terminee_le": "2021-10-03T22:15:24.000+02:00",
"updated_at": "2021-10-08T09:27:09.754+02:00"
}
Requête
PATCH /api/evaluations/:id
{
"email":"[email protected]",
"telephone":"06",
"terminee_le":"2021-10-03T22:15:24+02:00"
"age":"23",
"genre":"Femme",
"dernier_niveau_etude":"Niveau Collège",
"derniere_situation":"Alternance"
}
Réponse
{
"anonymise_le": "2021-10-06T17:04:49.780+02:00",
"campagne_id": "09209dea-0fa7-40ea-aba8-cbadc1957f4d",
"created_at": "2021-10-03T20:51:18.490+02:00",
"email": "[email protected]",
"id": "569cdc17-554d-4227-acfe-1d5d3a4afdbc",
"nom": "Roger",
"telephone": "06",
"terminee_le": "2021-10-06T16:13:24.000+02:00",
"updated_at": "2021-10-08T09:16:38.943+02:00"
"age":"23",
"genre":"Femme",
"dernier_niveau_etude":"Niveau Collège",
"derniere_situation":"Alternance"
}
POST /api/evaluations/:id/fin
Réponse
{
"competences_fortes": [
{
"nom_technique": "id_competence",
"nom": "nom_competence",
"description": "Description de la compétence.",
"picto": "http://host/assets/competence.svg"
}
]
}
Requête
GET /api/questionnaires/:id
Réponse
[
{
"id": "d5e892ff-6747-4e21-ad60-2f3255ffb314",
"type": "qcm",
"intitule": "Ma question",
"description": "Ma description",
"choix": []
}
]
POST /api/evenements
Contenu:
{
"date": 1551111089238,
"nom": "ouvertureContenant",
"session_id": "baf2c86c-6c34-11e9-901c-c34362f7423a",
"situation": "inventaire",
"donnees": {"idContenu": "6"},
"evaluation_id": "1",
}
POST /api/evaluations/:evaluation_id/collections_evenements
Contenu:
{
"evenements": [
{
"date":1632317532817,
"session_id":"54af3010-315c-4755-b268-08c4bf520f64",
"situation":"bienvenue",
"nom":"reponse",
"donnees": {
"question":"f728be21-6f19-4901-ba07-0ac26ad702d7",
"reponse":"5f5ce41c-a2f0-4512-b266-39a4945dbeba"
},
"evaluation_id":"b80e3b14-737e-4712-a2ff-3f22f5bdcd4d",
"position": 2
},
// ...
]
}
Requête
GET /api/campagnes/:code_campagne
Réponse
{
"libelle": "Ma campagne",
"code": "FRT61000",
"questions:": [],
"situations": [
{
"id": "569cdc17-554d-4227-acfe-1d5d3a4afdbc",
"libelle": "Tri",
"nom_technique": "tri",
"questionnaire_id": "f958d99d-4adb-455b-8d85-c7e89ab7025c",
"questions:": [
{
"id": "d5e892ff-6747-4e21-ad60-2f3255ffb314",
"type": "qcm",
"intitule": "Ma question",
"nom_technique": "ma-question",
"illustration": "https://stockagepreprod.eva.beta.gouv.fr/7yii4m9m7t7bjvl42z7qmofuie7w?filename=bienvenue_background.jpg",
"description": "Ma description",
"choix": []
}
],
"questionnaire_entrainement_id": "f958d99d-4adb-455b-8d85-c7e89ab7025c",
"questions_entrainement": [
{
"id": "d5e892ff-6747-4e21-ad60-2f3255ffb314",
"type": "qcm",
"intitule": "Ma question",
"nom_technique": "ma-question",
"illustration": "https://stockagepreprod.eva.beta.gouv.fr/7yii4m9m7t7bjvl42z7qmofuie7w?filename=bienvenue_background.jpg",
"description": "Ma description",
"choix": []
}
]
}
]
}
Nous utilisons plusieurs services de géolocalisation :
- Nominatim (openstreetmap) pour la doc chercher Nominatim dans cette page https://github.com/alexreisner/geocoder/blob/master/README_API_GUIDE.md
- geo.api.gouv.fr/communes (https://api.gouv.fr/les-api/api-geo)
- geo.api.gouv.fr/departements (https://api.gouv.fr/les-api/api-geo)
Le premier service est utilisé pour rechercher la position GPS du code postal d'une structure, le second service pour valider les codes postaux et rechercher leurs informations au moment de la recherche de structure par code postal. Les deux derniers services sont utilisés pour retrouver la region.
Un graphique de la structure de la base peut être généré afin de mieux comprendre les intérractions entre les différents modèles.
Pour générer ce graphique:
bundle exec rake erd
Ce logiciel et son code source sont distribués sous licence AGPL.