Projet
Plan d'action
En bref
- Fait au 25/10/2026 :
- le socle en marque blanche, avec deux instances qui tournent : Paris-Saclay et Paris 1 (démonstration) ;
- la moisson complète de 11 sources, régénérée intégralement le 25/10/2026 ;
- la fusion et la publication des fiches en JSON et Markdown ;
- les sites générés statiquement, avec la recherche Pagefind ;
- la mesure de couverture et l'observabilité.
- Reste :
- obtenir les arbitrages (questions ouvertes) : liste des Graduate Schools, règle des personnes, accès scanR et OpenAlex ;
- tester la vitrine sur les données CRISalid (Projection) ;
- écrire les présentations manquantes ;
- traiter l'i18n et les pages éditoriales propres à chaque instance.
- Les cases cochées sont faites et vérifiées (tests, build, contrôle des pages). Le détail technique est dans architecture/ et decisions/.
État
| Brique | Où | État |
|---|---|---|
| Configuration d'instance validée | instances/*/research.config.ts, src/config/ | Fait, 2 instances |
| Moisson complète | pnpm data:extract → data/raw/ | 18 sources sur 20 ; theses.fr en échec sur les deux, voir Q3 |
| Qualité et liens | pnpm data:links, data/coverage/<instance>/qualite.md | Fait |
| Accessibilité | pnpm a11y | 0 violation automatique |
| Couverture par source | pnpm data:probe → data/coverage/ | Fait, historique daté |
| Fusion et publication | pnpm data:build → data/public/ | Fait |
| Sites | pnpm build:<instance> | Saclay : 23 444 pages, Paris 1 : 4 802 (fr + en) |
| Recherche | Pagefind | 18/20 sur les deux instances (27/10/2026, ADR 009) |
| Observabilité | exploitation/observabilite.md | Fait |
| CRISalid | Projection | Instance de test branchée (29/10/2026) ; test à faire |
TODO par phase
Phase 0 — Socle et décisions
- Configuration d'instance et son schéma validé
- Sondes de couverture sur 9 sources ouvertes, par instance
- Choix de la seconde instance (Paris 1, ADR 007)
- Usage du proxy scanR validé par le MESR (Q1)
- Clé OpenAlex (Q2)
- Liste officielle des structures : annuaire de l'établissement (issu de BiblioLabs), rapproché du RNSR (ADR 013)
- Validation des écarts annuaire / RNSR et rattachements aux Graduate Schools (Q7, Q8)
- Décision : vitrine propre ou Studio scanR (audit, « Valeur ajoutée »)
Phase 1 — Sources
- Moissonneurs RNSR, scanR, HAL (publications, AureHAL, domaines), ROR, Wikidata, ORCID, OpenAIRE, theses.fr, OpenAlex, annuaire institutionnel
- Manifeste par instance, écriture atomique, reprise source par source
- AureHAL interrogé par numéro RNSR : 69 % des structures reliées à HAL au lieu de 45 %
- Relancer theses.fr, en échec sur les deux instances (Q3) ; OpenAlex a répondu sans clé le 25/10/2026, à confirmer dans la durée (Q2)
-
Moissonneur ANRécarté après mesure (27/10/2026) : le jeufr-esr-aap-anr-projets-retenus-participants-identifiesne couvre que 14 % des 3 057 projets ANR publiés (435 appariés) et n'apporterait qu'un résumé manquant. Or scanR ne donne d'URL pour aucun projet ANR, et cette URL se déduit du code du projet (https://anr.fr/Projet-<code>, vérifié par échantillon, un code inventé répondant 404) : 99 % des projets ANR ont désormais un lien, sans source nouvelle à maintenir ni 15 Mo de brut par instance - Moissonneur IdRef (résolution des personnes sans IdHAL ni ORCID) — suspendu : il élargirait la population publiée, or la règle de publication des personnes attend l'avis de la DPO (Q11). Écrire le moissonneur avant l'arbitrage reviendrait à préparer une collecte que la DPO peut refuser
- Les 248 fiches de l'annuaire lues via le sitemap (chemins à plusieurs niveaux du CEA compris) : moisson complète, 248 sur 248
- Export BiblioLabs au lieu de la lecture des pages publiques (Q4)
- Moissonneur et sonde CRISalid sur l'instance locale de l'audit (Q6)
- Sonde « sites des unités » : lien vivant, fraîcheur
Phase 2 — Fusion
- Structures : RNSR ∪ scanR, priorités de champs, provenance par champ
- Groupes et thématiques calculés par domaines HAL, repli RNSR (ADR 011)
- Personnes filtrées par activité HAL récente (ADR 010)
- Projets scanR ∪ OpenAIRE
- Liste manuelle des membres d'un groupe (
assignment: 'manual') - Tests de fusion sur jeu figé (
tests/fixtures/raw/), sans réseau : 7 tests - Rapport de qualité (
data/coverage/<instance>/qualite.md) : libellés divergents, structures orphelines, fiches incomplètes, liens morts - Contrôle des liens sortants (
pnpm data:links) ; les liens morts cèdent la place à la source suivante
Phase 3 — Publication et rendu
- JSON et Markdown par entité (
data/public/<instance>/) - Pages : accueil, structures, fiche structure, groupes, thématiques, chercheurs (index alphabétique et fiches), projets, recherche, « À propos des données »
- Génération statique de toutes les fiches, sitemap complet, redirection
/centres - Données structurées schema.org sur les fiches de structures
- Écrire
sync_runsà chaque publication (aujourd'hui : horodatage destats.json) - Rédaction des présentations manquantes : 49 structures de Paris-Saclay sur 248 (20 %), 31 sur 37 à Paris 1 (84 %). La liste s'exporte pour la communication :
pnpm data:export→data/export/<instance>/presentations-manquantes.csv. Ces textes ne peuvent pas être générés : ils décrivent des unités réelles - Contrôle d'accessibilité (axe, WCAG 2.1 AA) : 0 violation, revérifié le 27/10/2026 sur les deux instances après la refonte du parcours de recherche ; audit RGAA humain restant
Phase 4 — Recherche
- Pagefind, filtres par type et groupe, structures en tête des résultats, mesure de l'issue des recherches
- Jeu de 20 requêtes de référence par instance (
pnpm search:eval) : 18/20 sur les deux, après correction de deux comportements de Pagefind 1.4.0 (ADR 009). Les deux échecs restants par instance tiennent au vocabulaire des fiches visées - Si nécessaire : Meilisearch et recherche d'expertise sémantique
Phase 5 — Marque blanche
- Thème calculé depuis 4 couleurs, logos, libellés et navigation pilotés par la configuration
- Deuxième instance (Paris 1) qui tourne avec sa seule configuration
- Un dossier de build et un port par instance
- Version anglaise sous
/en: dictionnaire typé, libellés d'instance, hreflang, index de recherche par langue (ADR 012) - Pages légales au nom de l'éditeur de l'instance
- Contenu juridique des pages légales, validé par le service juridique et la DPO
- Parseur d'annuaire générique, modes
pagesetcards, configuré par instance ; Paris 1 branché sur son annuaire (ADR 013) - Découpage
packages/core,packages/ui,apps/*si une instance doit diverger (Q17)
Phase 6 — CRISalid et gouvernance
- Accès en lecture à l'instance CRISalid de développement de Paris-Saclay (DiBISO, 29/10/2026)
- Test de la vitrine sur un extrait CRISalid (protocole)
- Adaptateur CRISalid (priorité 0 dans la fusion)
- Circuit de correction : signaler → source d'origine
- Validation des fiches par les directions d'unité ; procédure de retrait (Q13)
Phase 7 — Ouverture du code
- Licence : MIT, appliquée par défaut (ADR 014) — titulaire des droits à nommer et choix à confirmer par la DSI
- Guide « créer son instance » (base : architecture/marque-blanche.md)
- Présentation à la communauté CRISalid
Décisions prises
ADR 007 instances, ADR 008 chaîne de données, ADR 009 Pagefind, ADR 010 personnes, ADR 011 rattachement par domaines. Les questions en attente sont dans questions-ouvertes.md.