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

BriqueOùÉtat
Configuration d'instance validéeinstances/*/research.config.ts, src/config/Fait, 2 instances
Moisson complètepnpm data:extract → data/raw/18 sources sur 20 ; theses.fr en échec sur les deux, voir Q3
Qualité et lienspnpm data:links, data/coverage/<instance>/qualite.mdFait
Accessibilitépnpm a11y0 violation automatique
Couverture par sourcepnpm data:probe → data/coverage/Fait, historique daté
Fusion et publicationpnpm data:build → data/public/Fait
Sitespnpm build:<instance>Saclay : 23 444 pages, Paris 1 : 4 802 (fr + en)
RecherchePagefind18/20 sur les deux instances (27/10/2026, ADR 009)
Observabilitéexploitation/observabilite.mdFait
CRISalidProjectionInstance 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 jeu fr-esr-aap-anr-projets-retenus-participants-identifies ne 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 de stats.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 pages et cards, 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.