Release : refonte articles/auteurs, OpenAlex, stats et migration schéma
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 /articlesavec 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 modeviewpour 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
useretadmin. - 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 |
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 projectIdnon 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