Skip to content

Latest commit

 

History

History
264 lines (195 loc) · 8.15 KB

prise-en-main.md

File metadata and controls

264 lines (195 loc) · 8.15 KB

Prise en main

Survol des services Web

  • nginx sert l'application frontal (en vuejs) accessible aux utilisateurs
  • datapi donne accès à certaines données de notre base de données au frontal, en respectant les droits de l'utilisateur qui les demande
  • fider est un système externe permettant d'échanger avec les utilisateurs du frontal

Developpement Datapi et frontal en local

1. Configuration

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"

2. Lancer la base de données en local avec Docker

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 fichier config.toml.

Pour tester la connexion:

$ docker exec -it sf-postgres psql -U postgres
# => puis taper ctrl-D pour quiter

3. Initialiser la base de données locale

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 puis docker rm sf-postgres.

4. Lancer keycloak (fournisseur identité oauth2) avec Docker

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 et keycloakPassword du fichier config.toml.
  • Plus tard, pensez à couper le serveur avec docker ps, docker kill puis docker rm.

5. Lancer datapi

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

6. Créer un utilisateur sur Keycloak

  1. Ouvrir http://localhost:8080/auth/admin/master/console/#/realms/master
  2. Se connecter avec identifiants fournis au lancement du container keycloak
  3. Créer un client signauxfaibles (comme client ID et nom)
  4. 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 !)
  1. Depuis l'onglet "Roles" de ce client, créer un role urssaf
  2. Dans "Users", ouvrir le username mykeycloak
  3. Depuis l'onglet "Role Mappings" de cet utilisateur: choisir le "Client Role" signaux-faibles puis ajouter urssaf dans "Assigned Roles"

7. Lancer le serveur web frontal

  1. 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
  2. Ouvrir http://localhost:8081/ dans votre navigateur.

Étape de calculs pour populer "Features"

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.

1. Lancement de mongodb avec Docker

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

2. Préparation du répertoire de données ${DATA_DIR}

Exécutez les commandes suivantes:

$ DATA_DIR=$(pwd)/opensignauxfaibles-data-raw
$ mkdir ${DATA_DIR}
$ touch ${DATA_DIR}/dummy.csv

3. Installation et configuration de sfdata

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

4. Ajout de données de test

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

5. Exécution des calculs pour populer la collection "Features"

./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

6. En cas d'erreur – afficher le journal de MongoDB

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"