- Survol des services Web
- Developpement Datapi et frontal en local
- Étape de calculs pour populer "
Features
"
nginx
sert l'application frontal (en vuejs) accessible aux utilisateursdatapi
donne accès à certaines données de notre base de données au frontal, en respectant les droits de l'utilisateur qui les demandefider
est un système externe permettant d'échanger avec les utilisateurs du frontal
Créer le fichier config.toml
:
bind = "127.0.0.1:3000"
postgres = "user=postgres dbname=datapi password=mysecretpassword host=localhost sslmode=disable"
keycloakHostname = "http://127.0.0.1:8080"
keycloakClientID = "signauxfaibles"
keycloakRealm = "master"
keycloakAdmin = "mykeycloak"
keycloakPassword = "mysecretpassword"
keycloakAdminRealm = "master"
Après avoir installé Docker, exécutez les commandes suivantes:
$ docker run \
--name sf-postgres \
-P -p 127.0.0.1:5432:5432 \
-e POSTGRES_PASSWORD=mysecretpassword \
-d postgres:10
Note: ces paramètres doivent coincider avec celles fournies dans la variable
postgres
du fichierconfig.toml
.
Pour tester la connexion:
$ docker exec -it sf-postgres psql -U postgres
# => puis taper ctrl-D pour quiter
Exécutez les commandes suivantes:
$ echo "create database datapi;" \
| docker exec -i sf-postgres psql -U postgres
Notes:
- Plus tard, pensez à couper le serveur avec
docker ps
,docker kill
puisdocker rm sf-postgres
.
Exécutez les commandes suivantes:
$ docker run \
-p 8080:8080 \
-e KEYCLOAK_USER=mykeycloak \
-e KEYCLOAK_PASSWORD=mysecretpassword \
-d jboss/keycloak
Notes:
- Les paramètres ci-dessus doivent coincider avec les valeurs fournies dans les variables
keycloakHostname
,keycloakAdmin
etkeycloakPassword
du fichierconfig.toml
.- Plus tard, pensez à couper le serveur avec
docker ps
,docker kill
puisdocker rm
.
L'exécutable datapi s'attend à trouver config.toml dans le répertoire de travail courant, veillez à vous positionner là où vous l'avez créé
$ go get github.com/signaux-faibles/datapi
# Au premier lancement, créer le schéma
$ $(go env GOPATH)/bin/datapi -createschema
# Pour lancer le serveur datapi
$ $(go env GOPATH)/bin/datapi -api
Pour tester:
$ curl 127.0.0.1:3000 # => la requête doit s'afficher dans les logs de datapi
- Ouvrir http://localhost:8080/auth/admin/master/console/#/realms/master
- Se connecter avec identifiants fournis au lancement du container keycloak
- Créer un client
signauxfaibles
(comme client ID et nom) - Depuis l'onglet "Settings" de ce client, spécifier les paramètres suivants:
- Implicit Flow Enabled:
ON
- Valid Redirect URIs:
http://localhost:8081/*
- Base URLs:
http://localhost:8081/
- Web Origins:
http://localhost:8081
(attention: ne pas inclure de slash en fin d'URL !)
- Depuis l'onglet "Roles" de ce client, créer un role
urssaf
- Dans "Users", ouvrir le username
mykeycloak
- Depuis l'onglet "Role Mappings" de cet utilisateur: choisir le "Client Role"
signaux-faibles
puis ajouterurssaf
dans "Assigned Roles"
-
Exécutez les commandes suivantes:
$ git clone https://github.com/signaux-faibles/signauxfaibles-web $ cd signauxfaibles-web $ nvm use 12 # pour utiliser la version 12 de Node.js, dans la mesure du possible $ npm install -g yarn $ PORT=8081 yarn run serve
-
Ouvrir http://localhost:8081/ dans votre navigateur.
Cette étape exécute les calculs effectués après les étapes d'import et de compactage de la collection "DataRaw
", en vue de populer "Features
", la collection qui alimente le modèle prédictif.
Après avoir installé Docker, exécutez les commandes suivantes:
$ docker run \
mongodb:4 \
--name sf-mongodb \
--publish 27017:27017 \
--rm # retirez ce paramètre si vous voulez pouvoir réutiliser ce conteneur plus tard
Pour tester la connexion:
$ docker exec -it sf-mongodb mongo signauxfaibles
> show collections
# puis pressez Ctrl-C pour quitter le client mongo
Exécutez les commandes suivantes:
$ DATA_DIR=$(pwd)/opensignauxfaibles-data-raw
$ mkdir ${DATA_DIR}
$ touch ${DATA_DIR}/dummy.csv
Exécutez les commandes suivantes:
$ git clone https://github.com/signaux-faibles/opensignauxfaibles.git
$ cd opensignauxfaibles
$ make
$ cp config-sample.toml config.toml
$ sed -i '' "s,/foo/bar/data-raw,${DATA_DIR}," config.toml
$ sed -i '' 's,naf/.*\.csv,dummy.csv,' config.toml
Exécutez les commandes suivantes:
$ docker exec -it sf-mongodb mongo signauxfaibles
> db.createCollection('RawData')
> db.Admin.insertOne({
"_id" : {
"key" : "1910",
"type" : "batch"
},
"files" : {
"bdf" : [
"/1910/bdf_1910.csv"
]
},
"complete_types" : [
],
"param" : {
"date_debut" : ISODate("2014-01-01T00:00:00.000+0000"),
"date_fin" : ISODate("2019-10-01T00:00:00.000+0000"),
"date_fin_effectif" : ISODate("2019-07-01T00:00:00.000+0000")
},
"name" : "Octobre"
})
> db.RawData.remove({})
> db.RawData.insertOne({
"_id": "01234567891011",
"value": {
"scope": "etablissement",
"index": {
"algo2": true
}
}
})
# puis pressez Ctrl-C pour quitter le client mongo
./sfdata reduce --until-batch=1910
Puis vérifiez que la collection Features
a bien été populée par la chaine d'intégration:
$ docker exec -it sf-mongodb mongo signauxfaibles
> db.Features_debug.find()
# puis pressez Ctrl-C pour quitter le client mongo
Il peut arriver qu'un traitement de données échoue et retourne le message d'erreur suivant: erreurs constatées, consultez les journaux
.
Dans ce cas, vous pouvez trouver le détail de ces erreurs dans les logs de MongoDB:
$ docker logs sf-mongodb | grep "uncaught exception"