Skip to content

Release : refonte articles/auteurs, OpenAlex, stats et migration schéma

Fainstein requested to merge dev into main

Livrer la refonte articles/OpenAlex/stats et le schéma oaId

Résumé

Cette MR fusionne ~109 commits de dev vers main. Elle livre une refonte majeure de ReviewPilot : nouveau tableau de bord articles (work table), formulaire d'annotation modernisé, intégration OpenAlex renforcée, page statistiques complète, schéma de données unifié via le package shared (Zod), et couverture de tests CI front + back.

La migration prod (articles / authors → schéma canonique avec oaId) est déjà effectuée. Cette MR déploie le code aligné sur la base migrée.


Changements fonctionnels

Tableau de bord articles (work table)

  • Nouvelle page Work table : onglets articles annotés et recherche OpenAlex.
  • Import d'un article depuis OpenAlex avec aperçu (titre, auteurs, métadonnées).
  • Création d'une annotation à partir d'un snapshot OpenAlex.
  • Pagination et recherche déléguées au backend (GET /articles avec filtres).

Formulaire d'annotation (article)

  • Refonte complète : onglets Article et Auteurs, header avec actions (sauvegarde, suppression, fermeture).
  • Sélection de sous-corpus dans le formulaire.
  • Mode lecture seule pour les invités (guest) et en mode view pour les utilisateurs connectés.

Auteurs

  • Fiche auteur éditable (AuthorViewer) : champs modifiables, statuts alignés sur la base.
  • Import OpenAlex : snapshot des auteurs conservé à l'import.
  • GET /authors?ids= pour charger plusieurs auteurs par identifiants.
  • Onglet auteurs du formulaire article : ajout / retrait d'auteurs via React Query.

Statistiques

  • Nouvelle page Stats : graphiques articles, auteurs, couplage bibliographique, stats croisées.
  • Version démo accessible (landing HomeDemo).
  • Recalcul automatique des stats après CRUD articles/auteurs.
  • Routes stats réorganisées (/stats/...), contrôle d'accès par rôle.

Accès invité (guest)

  • Consultation articles et auteurs du projet public sans authentification.
  • Formulaires en lecture seule ; création / modification / import réservés aux rôles user et admin.
  • Routes stats ouvertes en lecture au niveau guest.

Infrastructure & qualité

  • Package @reviewpilot/shared : schémas Zod articles/auteurs, taxonomie OpenAlex, rôles.
  • Backend : modèles Mongoose en TypeScript, repositories, validation Zod sur les routes.
  • CI GitLab : tests Vitest front + back à chaque pipeline ; lint + build front sur MR.
  • Dev local : Docker Compose MongoDB, guide database-setup.md.
  • Scripts et doc migration : migrations/scripts/migrate.ts, migrations/MIGRATION.md (référence pour futurs environnements).

Notes relecteurs

Sujet Détail
Migration prod Déjà faite. Base prod au format canonique (oaId, relations articles/auteurs normalisées).
Compatibilité deploy Code et BDD prod alignés — pas de fenêtre maintenance migration à prévoir.
Vérif post-deploy Contrôler que les données migrées s'affichent et s'éditent correctement dans la nouvelle UI.
Backup Backup pré-migration déjà réalisé ; conserver jusqu'à validation post-deploy.
Stats Recalcul déclenché au CRUD ; vérifier affichage stats sur données prod migrées.
Rôles Hiérarchie guest < user < admin. Comptes inactifs → 403.
CI Build backend non exécuté en CI MR ; tests back + build front validés avant merge.
Déploiement Coolify redéploie sur push main. Config nixpacks.toml pour le monorepo.
Volume du diff ~270 fichiers ; pas de squash recommandé.

Plan de test manuel

Prérequis

  • Migration prod effectuée
  • Backup prod conservé
  • Pipeline CI verte sur la MR

Données migrées (prod)

  • Articles existants s'affichent dans la work table avec métadonnées complètes
  • Ouverture d'un article migré : formulaire pré-rempli, auteurs liés correctement
  • Édition puis sauvegarde d'un article migré : pas d'erreur 4xx/5xx, données persistées après refresh
  • Fiche auteur migrée : champs cohérents, édition OK
  • Recherche / pagination sur la liste articles avec le volume prod réel

Accès & rôles

  • Sans login : accès work table et liste articles du projet public
  • Sans login : formulaire article en lecture seule
  • Sans login : 403 sur un projectId non public
  • Guest connecté : lecture seule
  • User : création, édition, suppression article
  • Compte inactif : 403

Work table & OpenAlex

  • Recherche OpenAlex : résultats + pagination OK
  • Aperçu œuvre OpenAlex (modal)
  • Import depuis OpenAlex → article créé
  • Création annotation depuis snapshot OA : champs pré-remplis, auteurs importés

Formulaire article

  • Création manuelle : sauvegarde OK
  • Édition : modifications persistées
  • Sélection sous-corpus enregistrée
  • Mode view : champs non éditables
  • Suppression article

Auteurs

  • Ajout / retrait auteur sur un article
  • Fiche auteur : édition et sauvegarde
  • Statut auteur conforme à la base

Statistiques

  • Page Stats : tous les onglets chargent sans erreur
  • Graphiques affichés avec données prod migrées
  • Landing démo (HomeDemo) accessible

Post-deploy prod

  • Smoke test : login user → ouvrir article migré → éditer → sauver
  • Smoke test : import OpenAlex sur prod
  • Logs Coolify sans erreur Mongoose / validation

Branche source : dev → cible : main

Merge request reports

Loading