Identification du magazine à l'upload
Depuis la version introduisant #538 (F-DETECT-MAGAZINE-ID), chaque PDF uploadé passe par une étape d'identification avant que le pipeline ne démarre.
Déroulé
1 · Dépôt du PDF
Drag & drop ou « Parcourir » depuis la page Imports.
2 · Identification automatique
Claude Vision analyse la 1ère page de chaque PDF (~3 s par fichier, lancé en parallèle) pour extraire :
- Titre du magazine
- ISSN si visible
- Éditeur si visible
- Année d'édition
3 · Match dans le catalogue
Le système cherche ensuite des correspondances dans les magazines déjà enregistrés :
| Niveau de match | Confidence |
|---|---|
| Slug normalisé exact | 0.95 |
| Nom exact (case-insensitive) | 0.90 |
| Nom proche (Levenshtein ≥ 0.7) | 0.60 – 0.85 |
Le badge confidence est color-coded :
- 🟢 Vert ≥ 85 % : match fiable (pré-sélectionné automatiquement)
- 🟠 Ambre 60–84 % : match probable (pré-sélectionné, à vérifier)
- ⚪ Gris < 60 % : aucun match convaincant (dropdown vide, CTA « Créer »)
4 · Confirmation humaine
Pour chaque fichier :
- Le dropdown magazine est pré-rempli avec le meilleur candidat si confidence ≥ 60 %.
- Tu peux toujours corriger — la confirmation humaine est obligatoire avant le lancement.
- Tu peux désactiver l'association (option « Sans magazine — import générique »).
- Si aucun match fiable et Claude a détecté un titre, un CTA « Créer ce magazine dans le catalogue » ouvre Backstage avec le titre pré-rempli.
5 · Lancement de l'upload
Clic sur « Lancer l'upload » → POST /api/imports avec le champ magazine_id rattaché au fichier. Le pipeline d'extraction utilisera ce magazine pour l'association des formats tarifés (phase suivante : F-DETECT-TARGETED PR 2/3).
Cas gérés
| Cas | Comportement |
|---|---|
| PDF d'un magazine existant et bien référencé | Match 85–100 %, pré-sélection auto, user valide |
| PDF d'un magazine existant mais titre mal orthographié | Match fuzzy 60–85 %, user corrige via dropdown |
| PDF d'un magazine inconnu | Aucun match, CTA « Créer » vers Backstage |
| PDF sans titre clairement lisible | Dropdown vide, user choisit manuellement |
| Plusieurs PDFs simultanés | Identification en parallèle, liste par fichier |
Limitations (PR 1)
- L'identification ne consulte que la 1ère page : un titre uniquement présent page 2+ n'est pas détecté.
- Pas encore de matching par ISSN (l'entité Magazine n'a pas de champ ISSN — à ajouter dans une PR future si besoin).
- Le pipeline de détection des publicités lui-même ne change pas encore — il utilisera le
magazine_idrattaché dans F-DETECT-TARGETED PR 2.
Références
- Issue épic : #538
- DDT :
docs/superpowers/specs/2026-04-23-f-detect-magazine-id-design.md - Plan :
docs/superpowers/plans/2026-04-23-f-detect-magazine-id.md - Service backend :
data-api/src/Service/Ingestion/MagazineIdentifier.php - Component frontend :
frontend/src/components/imports/MagazineIdentificationStep.tsx