Ajoute snapshot des auteurs lors de l'import depuis openalex
Résumé
Import de travaux OpenAlex en annotations, avec auteurs liés automatiquement, relecture post-import et snapshot OpenAlex figé pour repérer les champs modifiés manuellement.
Changements fonctionnels
Import d’annotation depuis OpenAlex
- Depuis le tableau des travaux OpenAlex d’un projet : prévisualisation puis import comme annotation.
- Envoi du snapshot du travail + auteurs mappés depuis OpenAlex.
- Endpoint :
POST /articles/from-openalex(remplace/articles/import). - Auteurs upsertés par
(id OpenAlex, projectId)— pas de doublon sur plusieurs imports. - Après succès : ouverture de la modale d’édition article standard.
Snapshot auteur (openalexSnapshot)
- Copie normalisée des données OpenAlex à l’import (nom, ORCID, institutions, pays, topics, compteurs…).
- Enregistré une fois à la création (
$setOnInsert), non écrasé par un PUT ultérieur. - Référence pour détecter une modification manuelle vs OpenAlex.
Relecture des auteurs après import
- Nouvel onglet dans la modale post-import : revue des auteurs importés.
- Liste, sélection, édition (
AuthorViewer), retrait d’un auteur de la liste de relecture. - Sauvegarde auteur depuis cet onglet.
Champs modifiés (auteurs)
- Si nom ou ORCID ≠ snapshot → badge avec valeur OpenAlex d’origine (même logique que les articles).
Cartes annotation & métadonnées
- Cartes : affichage de la source (
openalex/ manuel), plus le statut OA brut. - Métadonnées article alignées sur la source.
Nettoyage UI
- Suppression des pages Authors et AuthorSearch (entrées menu retirées).
Technique
- Schéma partagé :
AuthorImportInput,OpenAlexAuthorSnapshot, topics factorisés. - Tests backend :
POST /articles/from-openalex. - Tests frontend Vitest : mapping OA, détection d’override.
Notes relecteurs
| Point | Détail |
|---|---|
| Données existantes | Auteurs sans openalexSnapshot : pas de badge tant qu’ils n’ont pas transité par ce flux d’import. |
Plan de test manuel
Prérequis
-
Backend + frontend démarrés -
Utilisateur non invité sur un projet de test -
Accès au tableau OpenAlex (travaux pas tous annotés)
Import sans auteur (ou liste vide côté OA)
-
Prévisualiser un travail → importer -
Réponse 201, annotation dans l’onglet annotations -
Modale d’édition article s’ouvre -
Carte : source OpenAlex visible (pas oa_status)
Import avec auteurs
-
Importer un travail avec ≥ 2 auteurs -
Auteurs liés à l’article -
Onglet revue des auteurs : liste, sélection, champs préremplis
Upsert (pas de doublon)
-
Importer un 2ᵉ travail avec un auteur déjà importé (même id OA) -
Une seule fiche auteur (id, projectId) -
Les deux articles pointent le même auteur
Override vs snapshot
-
Modifier nom ou ORCID → sauvegarder → recharger -
Badge override + valeur OpenAlex d’origine -
Remettre la valeur du snapshot → badge disparaît
Snapshot non écrasé
-
Après modification : openalexSnapshotgarde les valeurs d’import (API ou DB)
Modale & retrait
-
Retirer un auteur de la liste de relecture : UI OK -
Fermer / rouvrir l’annotation : données cohérentes
Droits & erreurs
-
Sans auth → 401 -
Invité → 403 -
Même id travail réimporté → 409 -
projectIdinvalide → 400
Régression
-
Menu : plus Authors / AuthorSearch -
Édition annotation manuelle inchangée -
Stats auteurs : pas de régression visible