Skip to content

Services : Import des données data·inclusion et DORA#7776

Merged
vperron merged 3 commits into
mainfrom
rsebille/services/import-di-data
May 19, 2026
Merged

Services : Import des données data·inclusion et DORA#7776
vperron merged 3 commits into
mainfrom
rsebille/services/import-di-data

Conversation

@rsebille

@rsebille rsebille commented Mar 26, 2026

Copy link
Copy Markdown
Contributor

🤔 Pourquoi ?

https://www.notion.so/gip-inclusion/Import-des-services-et-structures-d-i-DORA-31a5f321b60480a4a74bdded378b87af?v=28e5f321b604809f9e2e000cb57fc84b&source=copy_link

PR qui dépendent de celle-ci :

L'app a été nommée insertion pour coller à la racine URL choisie, le nom pourrais créer une ambiguïté un jour (l'insertion c'est large) mais faute de mieux on est partis sur ça, surtout que le futur de l'intégration des fonctionnalités DORA dans les emplois est incertain donc faisons simple.

🏝️ Comment tester ?

  1. Configurer les variables d'env pour les emplois :
    export DORA_API_BASE_URL="https://api.staging.dora.inclusion.gouv.fr"
    export DORA_API_TOKEN="IT.S-A-SECRET"
  2. Avoir configurer API_DATA_INCLUSION_TOKEN avec token de prod d·i (sinon modifier API_DATA_INCLUSION_BASE_URL)
  3. Lancer le script d'import
    ./manage.py import_structures_and_services --help

@rsebille rsebille requested a review from dmc1985 March 26, 2026 16:32
@rsebille rsebille self-assigned this Mar 26, 2026
@rsebille rsebille added the ajouté Ajouté dans le changelog. label Mar 26, 2026
@rsebille rsebille force-pushed the rsebille/services/import-di-data branch from 0d71d50 to e351693 Compare March 26, 2026 16:42

@dmc1985 dmc1985 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

je continue à lire mais voici quelques commentaires pour débuter

Comment thread config/settings/base.py Outdated
Comment thread config/settings/base.py Outdated
Comment thread config/settings/base.py Outdated
Comment thread itou/utils/apis/dora.py Outdated
Comment thread itou/utils/apis/dora.py Outdated
Comment thread itou/dora/models.py Outdated
@rsebille rsebille force-pushed the rsebille/services/import-di-data branch from e351693 to 979a9e4 Compare March 26, 2026 17:16
Comment thread itou/dora/models.py Outdated
Comment thread itou/dora/models.py Outdated
Comment thread itou/insertion/models.py
Comment thread itou/dora/management/commands/import_structures_and_services.py Outdated
@rsebille rsebille force-pushed the rsebille/services/import-di-data branch from 979a9e4 to e7b6174 Compare April 2, 2026 15:51
@rsebille

rsebille commented Apr 2, 2026

Copy link
Copy Markdown
Contributor Author

Petite passe rapide suite à tes retours, je rajoute les tests et corrige ce que je vais avoir cassé demain ! 😁

@rsebille rsebille force-pushed the rsebille/services/import-di-data branch 2 times, most recently from 8e1975c to 5a416ae Compare April 4, 2026 09:53
@dmc1985

dmc1985 commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

@rsebille même avec tes modifs pour que l'import marche sans Dora, j'ai toujours le même souci quand je lance la commande avec --data {references,structures,services} dans le conteneur clevercloud. Au moment qu'on arrive à

{"message": "HTTP Request: GET https://api.data.inclusion.gouv.fr/api/v1/structures?page=9&size=5000 \"HTTP/1.1 200 OK\"", "logger.name": "httpx", "logger.thread_name": "MainThread", "logger.method_name": "_send_single_request", "date": "2026-04-08T16:18:55.335190+00:00", "status": "INFO", "command.run_uid": "a00d9aea-9d60-4c44-8329-9b50438f6954", "command.name": "itou.dora.management.commands.import_structures_and_services", "command.wet_run": false}

l'import s'arrête sans aucun message d'erreur et ça reste comme ça jusqu'il y a un timeout.

@rsebille rsebille left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

grmbl, j'avais pas validé mes réponses avant les congés... 🤦

Comment thread itou/insertion/models.py
Comment thread itou/dora/models.py Outdated
Comment thread itou/dora/management/commands/import_structures_and_services.py Outdated
@rsebille rsebille added the 1-recette-jetable [Payé à l’heure] Crée une recette jetable sur CC label Apr 13, 2026
@rsebille rsebille force-pushed the rsebille/services/import-di-data branch from b262e27 to b033f6f Compare April 14, 2026 07:43
@rsebille rsebille removed the 1-recette-jetable [Payé à l’heure] Crée une recette jetable sur CC label Apr 14, 2026
@rsebille rsebille force-pushed the rsebille/services/import-di-data branch from b033f6f to 8cba1de Compare April 16, 2026 13:08
Comment thread itou/dora/models.py Outdated
Comment thread itou/insertion/models.py
@dmc1985

dmc1985 commented Apr 17, 2026

Copy link
Copy Markdown
Contributor

je ne vois pas une façon pour trouver le slug Dora d'un service dont la valeur de is_orientable_with_form égal true. ma compréhension est que les services qui sont is_orientable_with_form == True vont permettre la redirection vers la page d'orientation dans Dora. Donc si la source n'est pas Dora, je vois pas comment faire ce lien.

@rsebille rsebille left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

je ne vois pas une façon pour trouver le slug Dora d'un service dont la valeur de is_orientable_with_form égal true. ma compréhension est que les services qui sont is_orientable_with_form == True vont permettre la redirection vers la page d'orientation dans Dora. Donc si la source n'est pas Dora, je vois pas comment faire ce lien.

Je ne suis pas sûr de comprendre, actuellement la logique de création d'URL vers DORA est dans le templatetag dora_service_url de itou/utils/templatetags/dora.py, celui-ci étant fortement modifié dans #7523 afin de prendre en compte le paramètre op.
Est-ce que c'est à ça que tu faisais références ou rien à voir ?

Comment thread itou/dora/models.py Outdated
Comment thread itou/insertion/models.py
@dmc1985

dmc1985 commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

je ne vois pas une façon pour trouver le slug Dora d'un service dont la valeur de is_orientable_with_form égal true. ma compréhension est que les services qui sont is_orientable_with_form == True vont permettre la redirection vers la page d'orientation dans Dora. Donc si la source n'est pas Dora, je vois pas comment faire ce lien.

Je ne suis pas sûr de comprendre, actuellement la logique de création d'URL vers DORA est dans le templatetag dora_service_url de itou/utils/templatetags/dora.py, celui-ci étant fortement modifié dans #7523 afin de prendre en compte le paramètre op. Est-ce que c'est à ça que tu faisais références ou rien à voir ?

je ne vois pas une façon pour trouver le slug Dora d'un service dont la valeur de is_orientable_with_form égal true. ma compréhension est que les services qui sont is_orientable_with_form == True vont permettre la redirection vers la page d'orientation dans Dora. Donc si la source n'est pas Dora, je vois pas comment faire ce lien.

Je ne suis pas sûr de comprendre, actuellement la logique de création d'URL vers DORA est dans le templatetag dora_service_url de itou/utils/templatetags/dora.py, celui-ci étant fortement modifié dans #7523 afin de prendre en compte le paramètre op. Est-ce que c'est à ça que tu faisais références ou rien à voir ?

oui c'est ça, merci de me l'avoir fait remarquer. pour la fiche service, j'aurai besoin du lien vers la page d'orientation qui est très semblable sauf qu'il y a un ajout de /orientation/. il faudrait que j'ajoute un nouveau tag ou c'est possible de parametriser les tags ?

@rsebille

Copy link
Copy Markdown
Contributor Author

oui c'est ça, merci de me l'avoir fait remarquer. pour la fiche service, j'aurai besoin du lien vers la page d'orientation qui est très semblable sauf qu'il y a un ajout de /orientation/. il faudrait que j'ajoute un nouveau tag ou c'est possible de parametriser les tags ?

Parfait que ça soit ça :).
On peux paramétriser le templatetag (c'est déjà un peu ce qu'on fait fait actuellement et dans la PR op), mais je dirais de plutôt faire un nouveau tag (dora_service_orientation_url ?) et de mettre en commun ce qui peux être mis en commun entre les deux templatetags dans une fonction purement python dans le module :

  • Il y a de forte chance qu'on ne veuille pas le même mtm_kwd.
  • Ça se rapproche plus de la gestion classique des URL Django (url("dora:service"), url("dora:service_orientation")) et donc devrais simplifier les remplacements quand les URL seront dans les emplois aussi.
  • Ça permet d'identifier plus facilement (car visible en début de ligne) vers quoi on veux diriger plutôt que de "cacher" ça via un paramètre.

@rsebille rsebille force-pushed the rsebille/services/import-di-data branch 3 times, most recently from 38dfe72 to 75f24fa Compare April 22, 2026 09:18
@rsebille rsebille requested a review from EwenKorr May 6, 2026 07:22
Comment thread itou/utils/apis/dora.py Outdated
@ggounot ggounot force-pushed the rsebille/services/import-di-data branch 2 times, most recently from 3efdf01 to 9cd1590 Compare May 6, 2026 12:55
@ggounot ggounot requested a review from vperron May 11, 2026 13:50

@vperron vperron left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ggounot ou @dmc1985 je veux bien une relecture rapide à deux pour voir si on se dit qu'on tente un premier jet de cette PR ou pas. C'est extrêmement long à lire dans les détails, j'ai envie qu'on se jette à l'eau et qu'on teste ?

Comment thread itou/insertion/management/commands/import_structures_and_services.py Outdated
Comment thread itou/insertion/management/commands/import_structures_and_services.py Outdated
@ggounot

ggounot commented May 12, 2026

Copy link
Copy Markdown
Contributor

@ggounot ou @dmc1985 je veux bien une relecture rapide à deux pour voir si on se dit qu'on tente un premier jet de cette PR ou pas. C'est extrêmement long à lire dans les détails, j'ai envie qu'on se jette à l'eau et qu'on teste ?

@vperron Bien sûr, on peut faire ça ensemble.

@vperron vperron force-pushed the rsebille/services/import-di-data branch from 9cd1590 to 4adc7f9 Compare May 13, 2026 14:45
@rsebille rsebille removed their assignment May 14, 2026
@vperron vperron force-pushed the rsebille/services/import-di-data branch 2 times, most recently from edfa919 to b19c2d1 Compare May 18, 2026 12:52
Comment thread itou/insertion/migrations/0002_service_dora_synced_at.py Outdated
Comment thread itou/utils/apis/dora.py
Comment thread itou/utils/apis/data_inclusion.py
Comment thread itou/insertion/models.py
Comment thread itou/insertion/migrations/0002_service_dora_synced_at.py Outdated
Comment thread itou/insertion/migrations/0002_service_dora_synced_at.py Outdated
Comment thread itou/utils/apis/dora.py
Comment thread itou/utils/apis/data_inclusion.py
@vperron vperron force-pushed the rsebille/services/import-di-data branch from b19c2d1 to 375245e Compare May 18, 2026 15:52
@rsebille rsebille removed their assignment May 18, 2026
@vperron vperron force-pushed the rsebille/services/import-di-data branch 2 times, most recently from 0c6dd78 to 3873159 Compare May 19, 2026 07:37
@vperron

vperron commented May 19, 2026

Copy link
Copy Markdown
Contributor

Screenshots de l'admin

Screenshot from 2026-05-19 09-49-40 Screenshot from 2026-05-19 09-49-01 Screenshot from 2026-05-19 09-48-46 Screenshot from 2026-05-19 09-48-31 Screenshot from 2026-05-19 09-48-10

@xavfernandez xavfernandez left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cela me semble bien (modulo ma non-connaissance des modèles de données DORA/DI évidemment 😅 )

Comment thread itou/utils/apis/data_inclusion.py
Comment thread itou/insertion/management/commands/import_structures_and_services.py Outdated
@vperron

vperron commented May 19, 2026

Copy link
Copy Markdown
Contributor

Le souci avec le fichier parquet est que on ne l'a pas "encore" côté DI.
On a un fichier parquet entre la datawarehouse et l'API data⋅inclusion.
Ce fichier contient des données potentiellement sensibles (personnelles de contact, données soliguide non exposables, etc) et est "brut", il passe une seconde passe de validation coté API data⋅inclusion au moment de son import et interprète des colonnes pour en sortir le schéma final validé.

Il faudrait prioriser un chantier côté data⋅inclusion qui serait de proposer un export parquet complet de l'API, incluant Soliguide par exemple, pour le cas spécifique des Emplois. Or actuellement l'API a le mérite d'exister et d'etre déjà assez lourdement utilisée; elle permet de filtrer des données par token, et propose des choses avancées (comme ne pas sélectionner les données des Emplois par exemple)

Mais elle a ses limitations: sa lourdeur et l'offset pagination par exemple. Bref, on s'est dit que ça pourrait commencer comme ça et le jour où l'on priorise des exports parquet (qui doivent donc etre sectorisés en accès à soliguide ou non a minima, sans oublier les coordonnées perso & autres petits aspects juridiques) ou la CursorPagination, on y passera.

@vperron vperron force-pushed the rsebille/services/import-di-data branch from aecec3a to 1a525eb Compare May 19, 2026 09:45
@vperron vperron enabled auto-merge May 19, 2026 12:03
@vperron vperron force-pushed the rsebille/services/import-di-data branch from 1a525eb to a0f119c Compare May 19, 2026 12:03
@vperron vperron disabled auto-merge May 19, 2026 12:03
@vperron vperron force-pushed the rsebille/services/import-di-data branch from a0f119c to 69221be Compare May 19, 2026 12:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

1-recette-jetable [Payé à l’heure] Crée une recette jetable sur CC ajouté Ajouté dans le changelog.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants