Skip to content

Ajoute snapshot des auteurs lors de l'import depuis openalex

Fainstein requested to merge feat/retrieve-authors-from-openalex into dev

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 : openalexSnapshot garde 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
  • projectId invalide → 400

Régression

  • Menu : plus Authors / AuthorSearch
  • Édition annotation manuelle inchangée
  • Stats auteurs : pas de régression visible

Merge request reports

Loading