Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Création d'une organisation #334

Closed
9 tasks done
florimondmanca opened this issue Jul 6, 2022 · 8 comments
Closed
9 tasks done

Création d'une organisation #334

florimondmanca opened this issue Jul 6, 2022 · 8 comments
Assignees
Labels

Comments

@florimondmanca
Copy link
Collaborator

florimondmanca commented Jul 6, 2022

User stories

  • ETQ agent dans un ministère, j'ai besoin que celui-ci existe sur catalogue.data.gouv.fr afin de pouvoir avoir un accès et parcourir les catalogues des différents ministères.
  • ETQ administrateur de catalogue.data.gouv.fr, j'ai besoin de créer une organisation sans catalogue afin de prendre le temps de définir le projet de catalogage avec les responsables de l'organisation.

Critères d'acceptation

Sur l'instance de production :

  • Une page publique explique comment demander la création d'une organisation (dépend de Documentation à destination des utilisateurs #359)
  • On peut ajouter une organisation sur l'instance via une PR sur https://github.com/etalab/catalogage-donnees-config
  • Une organisation peut être créée sans catalogue (i.e. un catalogue peut être créé au moment de ou après la création de son organisation).
  • Après la création d'une organisation, modifier ou supprimer le fichier config de l'organisation n'a pas d'effet sur l'instance. (La modification ou suppression d'une organisation par le système décrit ici n'est pas un must have.)
  • Une personne peut faire une demande par email de création d'organisation qui sera traitée par les administrateurs de l'instance.

Organisation sans catalogue

Les personnes qui ont un compte Datapass rattaché à une organisation sans catalogue sur l'instance peuvent s'inscrire (#124) et se connecter ETQ utilisateurs.
Ces utilisateurs ne peuvent pas contribuer au catalogue de leur organisation (puisqu'il n'existe pas).
Ces utilisateurs peuvent parcourir les catalogues des autres organisations (les entrées qui n'ont pas un accès restreint cf. #289). Une recherche filtrée par une organisation sans catalogue renvoie "0 jeux de données".
L'onglet "Contribuer" indique que le catalogue n'existe pas encore (à désigner).

Demande de création

N'importe qui peut faire une demande de création d'organisation. La FAQ (#359) explique comment faire une demande.

Un lien vers un formulaire Zammad (todo @johanricher à préciser avec DINUM).

Informations nécessaires pour vérifier la demande :

  • nom et SIRET de l'organisation
  • nom, prénom, intitulé du poste, service et adresse email de la personne

Un administrateur échange par email avec la personne pour vérifier qu'elle fait bien partie de l'organisation.

L'échange permet de décider si la création du catalogue se fait en même temps que la création de l'organisation ou plus tard (par exemple si le projet de catalogage et de définition des champs complémentaires est encore en cours).

Implémentation

  • 1 dépôt public (pas d'informations sensibles), qui contient :
  • 1 dossier par organisation, qui contient :
  • 1 fichier organisation.yaml (format quelconque, par ex YAML) qui contient :
  • 2 champs : {name, siret}

Le système valide automatiquement qu'un fichier d'organisation contient un paramètre et une valeur qui définissent le numéro SIRET de l'organisation et un paramètre et une valeur qui définissent le libellé de l'organisation.

Le fait que les valeurs pour chaque paramètre soient correctes est vérifié par un humain (un SIRET d'une organisation qui a le droit d'être sur catalogue.data.gouv.fr, un nom qui lui correspond).

Parcours

Flowchart

Pour créer une organisation :

  1. Créer une PR.

Le système (par exemple avec Github Actions) vérifie la présence et la validité d'un fichier configuration d'organisation.

  1. Valider et merger la PR.

Le système (par exemple avec Github Actions) déclenche un job qui ajoute l'organisation nouvelle.

⚠️ La création de catalogue (qui peut être être fait à la création de son organisation ou plus tard) est détaillé dans #338

Design

(TODO @DaFrenchFrog maquettes après exploration)

Découpage technique

@florimondmanca florimondmanca added this to the catalogue.data.gouv.fr milestone Jul 6, 2022
@florimondmanca florimondmanca changed the title Création organisation par un admin Repo de configuration d'organisations pour usage admin Jul 6, 2022
@Volubyl
Copy link
Collaborator

Volubyl commented Jul 6, 2022

Proposition d'implem (que dois faire la CI ?)

Valider le/les fichiers de configurations.

On pourrait uiliser la github action validate JSON pour valider le format des fichiers de configurations.

Validate JSON se base sur une JSON schema

Pour le schéma du catalogue de l'organisation on peut se référer à ce schéma

👉 Spec https://json-schema.org/

❓ Question(s) :

  • est-ce qu'il faudrait créer un schéma de validation spécifique (et inspiré de Table Schéma ) au schéma d'organisation que l'on souhaite avoir ?

Créer l'organisation sur le/les DB

Au merge, une github action va être déclanchée. Son but est d'appeler un endpoint REST pour créer l'organistion

endpoint : POST /organisations

Une organisation est une entité avec :

  • un numéro de SIRET (string)
  • un nom (string)

❓ Question(s) :

  • cela va sans doute nécessité la création d'un script. On le fait en bash ? en Python? en node JS ?
  • est-ce que l'on doit être capable de créer des organisations sur chaque instance (demo et staging) ?

@florimondmanca
Copy link
Collaborator Author

florimondmanca commented Jul 6, 2022

@Volubyl

On pourrait uiliser la github action validate JSON pour valider le format des fichiers de configurations.

Je lis sur le site de FrictionlessData (à l'origine de Table Schema) qu'il y a une lib Python qui fournit un CLI de validation : https://framework.frictionlessdata.io/docs/guides/validation-guide#validate-functions. @johanricher ça te semble adéquat de passer par là ?

est-ce qu'il faudrait créer un schéma de validation spécifique (et inspiré de Table Schéma ) au schéma d'organisation que l'on souhaite avoir ?

On peut en ajouter un, ça permet d'échouer lors de la PR en cas de mauvais formattage. Mais sachant que l'endpoint d'API devra renvoyer une erreur si le payload n'est pas au format attendu (comme pour le schéma).

cela va sans doute nécessité la création d'un script. On le fait en bash ? en Python? en node JS ?

En tout cas on n'a besoin de rien d'autre qu'un client HTTP pour ce script qu'on stockerait dans le dépôt.

Le repo pourrait avoir cette structure :

.github/
  workflows/
    ci.yml

orgs/
  <org1>/
    config.json
    schema.json
  <org2>/
  ...

tools/
  push_orgs.py

Makefile

Le script pourrait :

  • Être lancé uniquement lorsque orgs/ change (avec un filtre)
  • Pour chaque dossier, lire la config et le schéma, puis envoyer le tout en un seul payload JSON à ${API_URL}/api/organizations.
    • L'endpoint répond 201 Created si l'organisation a été créée, ou 202 Accepted si elle existe déjà (vérification basée sur le siret). Dans le second cas, elle n'est pas modifiée.
    • La variable d'environnement API_URL permettrait de tester l'outil en local. On la configurerait dans les [secrets] du repo à la valeur de "prod" (https://catalogue.multi.coop)

Ce fonctionnement "J'envoie tout à chaque fois, au pire ça existe déjà" évite d'avoir à ajouter un endpoint GET /api/organizations/ que le script appellerait pour savoir quels dossiers sont "nouveaux".

L'endpoint de création devra être protégé. Il faudra donc ajouter une authentification par clé d'API au back. On en génère une qu'on stocke dans les secrets du repo, le script la lit par variable d'environnement et l'envoie avec les requêtes via un Authorization: Api-Key <api_key>.

@florimondmanca
Copy link
Collaborator Author

@Volubyl Pour des vérifications additionnelles à une simple validation TableSchema, on peut utiliser ça : https://framework.frictionlessdata.io/docs/guides/validation-guide#custom-checks

@florimondmanca florimondmanca changed the title Repo de configuration d'organisations pour usage admin Création d'une organisation Jul 7, 2022
@johanricher
Copy link
Member

Suite aux dernières discussion, notamment pendant l'atelier avec l'équipe data.gouv.fr et nos travaux sur le flowchart, j'ai mis à jour le ticket.

La création d'un catalogue (notamment tout ce qui a trait à la validation d'un schéma) doit être discutée et détaillée sur #284

@johanricher
Copy link
Member

johanricher commented Sep 20, 2022

Je vois que le catalogue (716 jeux de données) de l'organisation legacy est toujours présent sur l'instance de prod.

Le merge de etalab/catalogage-donnees-config#6 a t-il créé une nouvelle organisation sur l'instance ? Le cas échéant comment les 2 cohabitent ? est-il prévu de le supprimer le catalogue legacy ?

[EDIT] Vu avec @florimondmanca.Sur l'instance de prod :

  • La nouvelle organisation "Ministère de la Culture" a été ajoutée et son catalogue est vide.
  • Les jeux de données (716) qu'on voit actuellement sur l'instance appartiennent au catalogue de l'organisation "legacy".
  • Pour l'instant l'organisation "legacy" a vocation à rester (mais à discuter sur Nettoyage de l'organisation "legacy" #389) et les utilisateurs "super administrateurs" (cf. Rôles des membres des organisations #288) à en faire partie.
  • Le fichier du catalogue du MC sera prochainement importé et le contenu du catalogue de l'orga "legacy" sera supprimé.
  • Les "super administrateurs" auront le droit de modifier les fiches de tous les catalogues mais, dans le cas de la création d'une nouvelle fiche, ne pourront pas choisir le catalogue donc par défaut ce sera dans le catalogue de l'organisation "legacy" (ce qui n'aura aucune utilité).

@johanricher
Copy link
Member

Tous les critères d'acceptation sont validés et je ferme ce ticket, merci à tous ! 🎉 On voit là la fin d'un gros chantier "epic" et le premier d'une longue série.

@florimondmanca
Copy link
Collaborator Author

florimondmanca commented Sep 20, 2022

👏 Un jalon en soi, cette première fermeture d'epic. 😉


NB :

Une personne peut faire une demande par email de création d'organisation qui sera traitée par les administrateurs de l'instance.

Pour info, pour l'instant la page d'information pour créer une orga n'affiche pas d'email à contacter :

Votre compte n’est associé à aucune organisation enregistrée...

Vous ne pouvez pas accéder au service pour le moment, mais vous pouvez effectuer une demande d’enregistrement afin d’intégrer votre organisation à notre outil.

Or je pense qu'on ne peut pas deviner à quel email il faut s'adresser ?

J'imagine qu'ajouter l'email dépend de #370 ?

@johanricher
Copy link
Member

Pour l'ajout d'une organisation, il faut diriger vers cette partie de la doc : https://github.com/etalab/catalogage-donnees/wiki/Documentation-%C3%A0-destination-des-utilisateurs#comment-inscrire-mon-organisation-sur-cataloguedatagouvfr-

Sachant que plus bas dans cette doc j'ai ajouté des adresses email.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants