MedGuru Docsv0.17.0 Voir le changelog
Skip to content

Guide de bout en bout — De l'upload au tarif en base

Ce guide enchaîne les étapes complètes d'un import magazine, de la réception du PDF jusqu'à la facturation automatique des publicités détectées. Il consolide les manuels existants en un parcours linéaire.

mermaid
flowchart LR
    A[1. Upload PDF] --> B[2. Identification magazine]
    B --> C[3. Détection IA]
    C --> D[4. Review & validation]
    D --> E[5. Export / facturation]
    C -.-> F[Rate Card Sandbox]
    F -.-> D
    D -.-> G[Proposer nouveau format]

Étape 1 · Upload du PDF

Écran : /imports → bouton « + Nouveau »

Drag & drop un PDF magazine. Taille max : 50 Mo. Le système détecte immédiatement :

  • Le titre du magazine (via Claude Vision sur la couverture)
  • ISSN, éditeur, année si visibles

→ Manuel détaillé : Identification magazine à l'upload

Étape 2 · Identification + correction

Avant le lancement effectif, le système affiche les candidats trouvés dans le catalogue Magazine avec un score de confiance :

BadgeConfianceAction recommandée
🟢 Vert ≥ 85 %Match fiableValider directement
🟠 Ambre 60–84 %Match probableVérifier puis valider
⚪ Gris < 60 %Aucun matchChoisir dans dropdown OU créer nouveau magazine

Si le magazine n'existe pas → bouton « Créer ce magazine dans le catalogue » ouvre Backstage avec le titre pré-rempli.

Étape 3 · Détection IA des publicités

Une fois l'import lancé, le pipeline tourne en arrière-plan :

  1. Split PDF → images page
  2. Classify (Claude Haiku) → isAd ? layout ?
  3. Extract (Claude Sonnet 4.6) → détection pubs + bounding boxes
  4. Post-processing → dédup, validation surfaces
  5. Color analysis → palette + contraste WCAG
  6. Persist → base ads + index Méditathèque

Prompt utilisé : extract v3 (stable) avec bloc <catalog> injecté si le magazine a des AdFormats actifs → chaque pub détectée est automatiquement rattachée au format tarifé.

Si aucune pub détectée

Deux options sur la page /imports/{id}/verify :

  • Bouton « Voir le prompt » (depuis la liste Imports) → drawer avec le prompt actif et le catalogue injecté. Utile pour debug.
  • Bouton violet « Re-analyser en mode deep » (sur la page verify) → relance avec prompt 5-passes agressif (canvas → strips → inserts → cover → legal-only). Durée 5–10 min.

→ Manuels : Détection ciblée · Prompt Studio

Étape 4 · Review & validation

Écran : /imports/{id}/verify

Bannières contextuelles (en tête de page)

Selon l'état du magazine, jusqu'à 3 bannières peuvent apparaître :

BannièreConditionCTA
🟠 Magazine inconnuImport.magazine = NULL« Créer un magazine » → Backstage
🔵 Magazine sans tarifsMagazine existe mais 0 AdFormat actif« Importer les tarifs » → Sandbox
Pubs non classéesAds avec proposed_new_format_dataCard éditable + « Valider le format (N) »

Actions sur chaque publicité

  • Approve — valide telle quelle
  • ✏️ Edit — corriger company/produit/molécule/bbox avant validation
  • Reject — pub fausse positive, avec raison

Raccourcis clavier : A = approve, R = reject, flèches = navigation pub suivante/précédente.

Propositions IA de nouveaux formats

Dans le panel « Pubs non classées », chaque proposition regroupe les ads avec le même label (surface/position similaire). Tu peux :

  • Éditer le label / position / surface avant validation
  • Valider le format (N) → crée un AdFormat draft rattaché au magazine, les N ads sont liées + formatUnknown est levé
  • Ignorer → la proposition est masquée pour la session

Étape 5 · Import des tarifs (Rate Card Sandbox)

Si le magazine n'a pas encore de grille tarifaire, on la crée depuis un PDF/XLSX/HTML/CSV fourni par la régie.

Écran : /backstage/rate-cards/sandbox

Déroulé

  1. Upload du fichier grille tarifaire (jusqu'à 25 Mo)
  2. Analyse Claude Opus 4.7 : extraction exhaustive via 2-passes avec cache Anthropic
  3. Accept/Reject par ligne : chaque tarif est validé individuellement (✓/✗)
  4. Bouton « Importer la sélection » → wizard 3 étapes :
    • Régie (autocomplete existantes ou créer)
    • Compléter les champs manquants par magazine (publisher, périodicité…)
    • Confirmer : année(s) d'application, conflit strategy (merge/replace/skip), bouton « Importer maintenant »
  5. Résultat : régie + magazines + AdFormats tarifés créés en 1 transaction

Les magazines déjà existants sont détectés → propose merge (upsert par code+validFrom), replace (écrase l'année ciblée) ou skip (ignorer).

Pour les fichiers Excel avec plusieurs magazines en colonne (type John Libbey) : détection auto + liste ; propositions IA via web search si manque ISSN/périodicité.

Pour les fichiers « grille générique sans magazine nommé » (EDIMARK, AXIS LEN) : web search pour trouver les publications de la régie + possibilité d'ajouter manuellement chaque magazine qui reçoit la grille.

→ Manuel : Sandbox rate card

Étape 6 · Facturation automatique

Une fois les AdFormats du magazine tarifés (priceGrossCents / priceNetCents) :

  • Chaque publicité détectée avec match_confidence ≥ 0.60 est reliée à un AdFormat via ad_format_ref_id
  • Les pubs apparaissent dans la Médiathèque (/mediatheque) avec leur tarif calculé
  • Export possible via Bibliothèque ou SuperFilter pour alimenter la facturation client

Modèles IA utilisés

TâcheModèleRaison
Identification magazineSonnet 4.6 VisionTâche simple, coût faible
Classify pageHaiku 4.5Rapide, binaire
Extract pubs normalSonnet 4.6 VisionPrécision bbox + structured output
Extract pubs deepSonnet 4.6 VisionMême modèle, prompt 5-passes
Extraction rate card PDFOpus 4.7Vision complexe + contexte long
Extraction rate card Excel/HTMLSonnet 4.6Texte structuré, 5× moins cher

Permissions requises (RBAC)

  • import.create : uploader un PDF
  • import.view : voir la liste + drawer prompts
  • ad.view / ad.edit / ad.validate : review des pubs
  • adformat.manage.structure : créer un format depuis proposition IA
  • adformat.manage.pricing : sandbox rate card + commit cascade

Troubleshooting rapide

SymptômeCause probableSolution
0 pubs détectéesMagazine sans catalog OU classify trop strictBouton « Re-analyser en mode deep »
Bounding box décalésModèle Opus utilisé (imprécis spatial)Sonnet est utilisé par défaut depuis v0.18
Magazine inconnu à l'upload1ère page sans titre lisibleChoisir dans dropdown ou créer manuellement
« Réponse Claude non-JSON » SandboxDocument trop volumineux, tronquéSplit par régie / par année
Régie déjà existanteMatch slug/nomChoisir « Link » dans wizard étape 1

→ Troubleshooting détaillé : docs-cms.plan-net.co/backstage/troubleshooting

Glossaire

  • Régie publicitaire : éditeur/mandataire commercial (ex. John Libbey Eurotext, EDIMARK). Peut publier plusieurs magazines.
  • Magazine : titre de presse individuel (ex. Annales de Biologie Clinique).
  • AdFormat : spécification d'un emplacement publicitaire sur un magazine (ex. « 1/2 page quadri intérieur »), avec prix brut/net/validité.
  • Ad : publicité concrète détectée sur une page d'un import.
  • Catalog block : liste des AdFormats actifs d'un magazine injectée dans le prompt Claude Vision pour guider la classification des pubs détectées.
  • Proposition IA : suggestion d'un nouveau format catalogue lorsque Claude détecte une pub qui ne matche aucun AdFormat existant.

Version v0.17.0 — Changelog