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'un catalogue #284

Closed
13 tasks done
florimondmanca opened this issue Jun 14, 2022 · 11 comments
Closed
13 tasks done

Création d'un catalogue #284

florimondmanca opened this issue Jun 14, 2022 · 11 comments
Assignees
Labels

Comments

@florimondmanca
Copy link
Collaborator

florimondmanca commented Jun 14, 2022

User stories

  • ETQ responsable d'organisation, j'ai besoin de créer et gérer mon catalogue sur catalogue.data.gouv.fr afin de partager cette connaissance.
  • ETQ administrateur de catalogue.data.gouv.fr, j'ai besoin de pouvoir créer un catalogue sur catalogue.data.gouv.fr afin de répondre à une demande dans un ministère.
  • ETQ responsable d'organisation, j'ai besoin de proposer l'ajout d'un catalogue afin que les administrateurs puissent le valider avant sa création.
  • ETQ responsable d'organisation, j'ai besoin d'ajouter des champs propres au catalogue de mon organisation en complément du schéma commun afin d'enrichir la description métier des jeux de données.

Critères d'acceptation

Sur l'instance de production :

  • Un catalogue ne peut exister sans organisation.
  • Un catalogue ne peut avoir qu'un schéma. Schéma = schéma commun + (en option) champs complémentaires.
  • On peut ajouter un catalogue sur l'instance de prod via une PR sur https://github.com/etalab/catalogage-donnees-config.
  • Le schéma d'un catalogue, y compris les champs complémentaires, est défini à sa création.
  • A sa création, un catalogue ne contient aucune entrée (fiche jeu de données). Les fiches doivent être créées par les contributeurs dans l'outil. (L'import d'un catalogue avec l'interface n'est pas un must have de ce ticket.)

Implémentation

Parcours

Flowchart

Idées pour la suite

  • Modifier le schéma d'un catalogue après sa création #277
  • Un administrateur peut créer un catalogue depuis l'UI de catalogue.data.gouv.fr
    • Configurer l'organisation : nom et SIRET de l'organisation
    • Ajouter un ou plusieurs "responsables d'organisation"
  • Un administrateur peut changer la configuration (nom et SIRET de l'organisation) après la création du catalogue.
  • Un administrateur peut, depuis l'UI de création du catalogue, importer un catalogue si celui-ci est un fichier conforme au schéma.
@florimondmanca
Copy link
Collaborator Author

florimondmanca commented Jun 14, 2022

@johanricher J'ai réfléchi à la notion de de "responsable d'organisation" dans #288, donc je réagis à ceci :

ETQ responsable d'organisation, je peux créer un catalogue sans l'intervention de l'équipe technique

Techniquement, un utilisateur ne peut être "responsable d'organisation" qu'une fois que l'organisation existe.

Dès lors, la création de l'organisation se fait-elle réellement par un responsable d'organisation ? Pour ce faire, celui-ci devrait déjà avoir un compte, mais selon #124 cela nécessite de s'affecter à une organisation... On boucle !

Par contre, voici un parcours qui ne boucle pas :

  1. Le responsable-d'organisation-en-devenir (qui n'a pas encore de compte) fait une demande à l'admin DINUM. [Par échange de mails ? Si oui, comment savoir qui contacter ?]
  2. L'admin DINUM évalue la demande puis crée l'organisation et son catalogue. [Si échange de mails -- l'option qui semble nécessiter le moins de développement --, on peut imaginer que l'admin DINUM se rende alors de lui-même dans une page de gestion des organisations, et clique sur 'Ajouter'.]
  3. Le responsable d'organisation crée dans la foulée son compte pour cette organisation. C'est le 1er compte lié à cette organisation, il sera donc automatiquement enregistré comme "responsable d'organisation". Pour éviter le risque qu'un autre agent ne crée un compte avant et préempte ainsi le rôle de "responsable d'organisation", on peut imaginer ceci : lors de la création de l'organisation, l'admin DINUM peut renseigner un email à qui on envoie un lien spécial donnant accès au formulaire de création de compte. Jusqu'à ce que ce 1er compte soit créé, il est impossible de créer un compte lié à cette organisation par la voie normale (Enregistrement et connexion #124).

Je remarque que cela ajoute encore un élément à un certain "back office" / page d'administration générale, distincte de la page d'administration d'une organisation (dont il est d'ailleurs question dans ce ticket). Devrait-on envisager un epic "Interfaces d'administration" ?

@johanricher
Copy link
Member

johanricher commented Jun 22, 2022

J'ai mis à jour la description du ticket avec ce qui paraît assez "sec" sur cette question. Néanmoins on est encore dans la réflexion / exploration et j'attends que vous challengiez les hypothèses. Celui qui trouve le plus de failles à gagné !

A ce stade, le parcours utilisateur que tu décris me paraît correct, j'y apporte des mineures corrections et des réponses à tes questions :

Au lancement de catalogue.data.gouv.fr, le must have me paraît à priori qu'un administrateur seul puisse créer une organisation et son catalogue depuis l'UI. Plus tard (nice to have), on pourrait envisager que la création de catalogue puisse être faite depuis une UI par n'importe qui (sans connexion préalable au service) mais avec une étape de validation par un admin à la fin (la demande de création serait vu par le demandeur comme "pending" puis validée ou rejetée).

Une demande de création de catalogue compte pourrait donc effectivement dans un premier temps se faire via par email, découvrable depuis une page publique de catalogue.data.gouv.fr qui expliquerait la démarche. L'adresse email pourrait par exemple être [email protected] qui redirigerait vers les personnes qui administrent le service (nous et des personnes à la DINUM).

Le parcours de création demanderait le nom de l'organisation, son SIRET, et l'adresse email d'une ou plusieurs personnes en responsabilité au sein de l'organisation (qui se verront alors attribuer le rôle de "responsable d'organisation" à la création de son compte dans l'application).

Pour éviter le risque qu'un autre agent ne crée un compte avant et préempte ainsi le rôle de "responsable d'organisation" (...)

Il ne serait pas possible de créer un compte utilisateur si son organisation n'existe pas déjà. Si l'organisation existe déjà (ce qui implique qu'elle a obligatoirement un responsable d'organisation), un nouvel utilisateur qui la rejoint n'aurait qu'un role user.

"back office" / page d'administration générale, distincte de la page d'administration d'une organisation

La configuration d'une organisation (nom, SIRET) après la création de son catalogue n'est clairement pas un must have pour le lancement.

La création de catalogue me paraît moins un élément de "configuration" qu'une action ponctuelle à faire par un admin donc peut-être un bouton présent dans l'UI (menu, header ou autre).

Quoi qu'il en soit, si le besoin survient sur ce point ou un autre, on pourrait regrouper tous les éléments de configuration en un seul endroit (selon le role de l'utilisateur différentes choses y apparaitraient).

@florimondmanca
Copy link
Collaborator Author

florimondmanca commented Jun 23, 2022

@johanricher Je reporte ici l'idée d'une définition des organisations / catalogues dans l'outil par un système de fichiers de configuration dans un repo (celui-ci ou un autre repo dédié).

Je pense qu'il faut en effet mesurer le travail qu'embarque la réalisation d'une UI d'administration telle que l'état actuel du ticket semble l'envisager : interface de création/gestion de catalogue, interface d'assignation de responsables d'orga.

Si le profil de nos futurs administrateurs est compatible avec un usage GitHub et l'édition de fichiers de conf, se reposer sur des fichiers de conf avec un fonctionnement un peu "Git Ops" npourrait nous épargner ce travail d'UI.

Il semble qu'il faut aussi discuter plus frontalement un point de philosophie : pour octobre, la création d'un catalogue se fait-elle "une bonne fois pour toute", comme on l'a parfois sous-entendu, ou envisage-t-on une administration d'édition avec des changements fréquents ?

On semble se diriger vers le "une bonne fois pour toutes", cf la fin de ton message :

La configuration d'une organisation (nom, SIRET) après la création de son catalogue n'est clairement pas un must have pour le lancement.
La création de catalogue me paraît moins un élément de "configuration" qu'une action ponctuelle à faire par un admin donc peut-être un bouton présent dans l'UI (menu, header ou autre).

Ce qui serait théoriquement assez compatible avec une approche "fichier de conf".


(Should have) Un administrateur peut changer la configuration (nom et SIRET de l'organisation) après la création du catalogue.

Je m'étonne qu'on envisage de pouvoir modifier le SIRET d'une organisation : celui-ci peut-il être amené à changer ?

@florimondmanca
Copy link
Collaborator Author

florimondmanca commented Jun 23, 2022

Il ne serait pas possible de créer un compte utilisateur si son organisation n'existe pas déjà. Si l'organisation existe déjà (ce qui implique qu'elle a obligatoirement un responsable d'organisation), un nouvel utilisateur qui la rejoint n'aurait qu'un role user.

Il faut reconsidérer cette intersection entre inscription et création de catalogue au vu des discussions sur DataPass. On peut en parler sur #124, j'y ai indiqué comment fonctionne le processus d'inscription sur DataPass. Si on l'utilise, ce que tu décris devra se manifester par une étape de notre côté une fois que l'utilisateur s'est connecté via DataPass. "Est-ce qu'une des orgas de l'utilisateur a un catalogue ?" -> Si oui, proposer la liste pour savoir quel catalogue l'utilisateur rejoint ? Si non, afficher une page qui indique : "Si vous pouvez demander la création du catalogue à [cette adresse mail]" ?

À mon avis on n'échappera pas à un bel atelier d'event storming / modélisation de processus pour bien clarifier ces aspects qui pour l'instant apparaissent encore entremêlés : inscription, DataPass, création de catalogue, gestion des rôles...

@johanricher
Copy link
Member

À mon avis on n'échappera pas à un bel atelier d'event storming / modélisation de processus pour bien clarifier ces aspects qui pour l'instant apparaissent encore entremêlés : inscription, DataPass, création de catalogue, gestion des rôles...

C'est programmé ! on prendra des décisions à ce moment-là.

@johanricher
Copy link
Member

johanricher commented Jul 11, 2022

Suite aux dernières discussion, notamment pendant l'atelier avec l'équipe data.gouv.fr et nos travaux sur le flowchart, la création d'un catalogue depuis l'UI n'est plus un must have. J'ai mis à jour le ticket en conséquence.

Le critère d'acceptation proposé est celui-ci :

Un administrateur peut ajouter un catalogue sur catalogue.data.gouv en créant son schéma (conforme Table Schema) et en l'ajoutant sur un dépôt de catalogue.data.gouv.fr, aux côtés du fichier de configuration de l'organisation.

Le détail en cours d'exploration :

  • Le dépôt etalab/catalogage-donnees est réservé au code du logiciel de catalogage (outil générique).
  • Un nouveau dépôt etalab/catalogue.data.gouv.fr est créé pour les ressources nécessaires à la configuration de la future instance de production catalogue.data.gouv.fr, actuellement déployée sur catalogue.multi.coop (service spécifique).
  • Ce dépôt catalogue.data.gouv.fr contient un fichier configuration par organisation. L'ajout d'un fichier de configuration d'organisation permet d'ajouter cette organisation sur catalogue.data.gouv.fr (détaillé sur Création d'une organisation #334).
  • L'ajout d'un fichier schéma lié à l'organisation permet d'ajouter le catalogue pour l'organisation sur catalogue.data.gouv.fr.
  • Une organisation peut être créée sans catalogue.
  • Un catalogue ne peut exister sans son organisation.
  • 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. Idem pour le catalogue. (La modification ou suppression d'une organisation et d'un catalogue par le système décrit ici n'est pas un must have ; fichier config de l'orga et schéma du catalogue ne sont que des sources de vérité que pour leur création.)
  • Le système (probablement avec Github Actions) vérifie la présence et la validité des fichiers config d'orga et schéma avant la création de l'orga et du catalogue.
  • Si un fichier de config d'orga est valide, la vérification passe sinon elle échoue et rien n'est créé.
  • S'il y a un fichier d'orga valide, l'organisation est créée avec le nom et le SIRET configurés.
  • S'il y a un fichier schéma strictement exact au schéma commun qui a été implémenté, alors le catalogue n'aura que les champs déjà implémentés et n'aura pas de champs complémentaires.
  • Si un schéma contient des champs qui ne sont pas dans le schéma commun, des champs complémentaires pourront être inférés et ajoutés à la création du catalogue (à condition que les règles ci-dessous soient respectées).
  • Parmi la spec Table Schema, seuls les types et format de champs et contraintes déjà implémentés par catalogue.data.gouv.fr seront acceptés (liste à définir).

Questions :

  • Comment lier une organisation à son schéma ? idées : ajouter un paramètre catalog_schema à la config de l'organisation (la valeur indique le nom du fichier schéma dans le même dossier que le fichier config) ; s'il existe, lire le fichier catalog_schema.json dans le même dossier que le fichier config.

@florimondmanca @Volubyl A challenger !

@johanricher
Copy link
Member

Commentaire de @florimondmanca

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

(En lien avec mon commentaire juste au-dessus qui détaille un peu plus)
Notre système doit vérifier :

  1. Que le schéma est conforme Table Schema (frictionless validate schema.json)
  2. Que tous les champs du schéma commun sont présents (un script maison qui compare avec notre schéma)
  3. S'il y a des champs additionnels, qu'ils soient déjà implémentés par catalogue.data.gouv.fr (un script maison qui vérifie ça)

A priori les custom checks de frictionless ne vont pas nous servir pour ça (exemples de custom checks pour plus d'infos).

@florimondmanca
Copy link
Collaborator Author

florimondmanca commented Jul 12, 2022

Comment lier une organisation à son schéma ? idées : ajouter un paramètre catalog_schema à la config de l'organisation (la valeur indique le nom du fichier schéma dans le même dossier que le fichier config) ; s'il existe, lire le fichier catalog_schema.json dans le même dossier que le fichier config.

On peut aussi par convention lire catalogue.schema.json dans le dossier de l'orga. Pas besoin d'un paramètre dans organisation.json, je pense.

Une fois ajouté à la BDD, ce lien existera par le biais des tables (catalog.org_siret pointant vers organization.siret, etc).

@johanricher
Copy link
Member

Comme pour #334 je comprends que tous les critères d'acceptation sont validés sauf erreur de ma part @Volubyl @florimondmanca ?

@Volubyl
Copy link
Collaborator

Volubyl commented Sep 21, 2022

en effet! 😁

@johanricher
Copy link
Member

Bravo à tous. 👏

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