MedGuru Docsv0.17.0 Voir le changelog
Skip to content

Uploader une grille tarifaire régie

Ce manuel s'adresse aux SUPER_ADMIN qui intègrent une nouvelle grille tarifaire annuelle envoyée par une régie partenaire. Il couvre la totalité du workflow, des formats acceptés jusqu'au commit idempotent vers le catalogue AdFormat.

Pourquoi cette feature

Onboarder une régie implique historiquement la saisie manuelle de 50 à 100 formats dans l'écran Catalogue > Formats publicitaires, soit plusieurs heures de travail par régie avec un risque d'erreur élevé sur les prix et les dimensions. La fonction d'upload automatise cette saisie :

  • Extraction LLM pour les PDF libres (mise en page, scan, brochure commerciale) via Claude Vision.
  • Parser déterministe pour les CSV et XLSX respectant un template strict publié par MedGuru.
  • Review ligne par ligne avant commit, avec dropdowns Magazine / Format / Canonique.
  • Upsert idempotent sur la clé naturelle (magazine_id, code, valid_from) : re-uploader la même grille ne crée jamais de doublons.

À savoir

Seuls les comptes SUPER_ADMIN munis de la permission adformat.manage.pricing ont accès à l'écran Grilles tarifaires d'une régie. La gouvernance voit les formats créés mais ne peut pas intervenir sur les prix.

Workflow détaillé

1. Accéder à l'écran d'upload

Depuis le menu latéral, ouvrez Organisation > Régies, sélectionnez Plan-net SA, puis l'onglet Grilles tarifaires. Cliquez sur Uploader une grille.

Écran Grilles tarifaires de la régie Plan-net SA

2. Choisir le format de fichier

Trois formats sont acceptés :

FormatExtractionTaille maxCas d'usage
PDFClaude Vision (LLM)25 MoGrille commerciale envoyée par la régie, mise en page libre
CSVParser déterministe5 MoExport depuis un CRM ou saisie interne, template strict
XLSXParser déterministe (PhpSpreadsheet)10 MoClasseur multi-onglets éventuellement, premier onglet lu

Pour CSV et XLSX, téléchargez d'abord le template officiel depuis le bouton Télécharger le template. Les colonnes sont imposées :

magazine_slug, format_code, format_label, canonical_code,
width_mm, height_mm, surface_pct, position_type, is_premium,
price_gross_cents, price_net_cents, valid_from, valid_until

Template strict

Toute colonne manquante ou mal orthographiée provoque un rejet immédiat du fichier avec le message Schema invalide. Les en-têtes sont sensibles à la casse et au snake_case.

3. Lancer l'extraction

Déposez le fichier dans la dropzone et cliquez sur Extraire. Pour un PDF, l'extraction Claude Vision prend environ 30 à 90 secondes selon le nombre de pages. Un RateCardDraft est créé avec le statut pending_review et l'ensemble des lignes extraites.

Progression de l'extraction

4. Réviser le mapping ligne par ligne

La table de review affiche une ligne par format détecté. Chaque ligne porte un score de confiance (de 0 à 1) et trois dropdowns :

  • Magazine : liste des magazines rattachés à la régie, ex. Le Quotidien Médical.
  • Format : création d'un nouveau AdFormat ou rattachement à un existant (clé code).
  • Canonique : proposé par Claude, ex. FULL_PAGE_QUADRI, modifiable manuellement.

Les champs Période (valid_from, valid_until), Prix brut et Prix net sont éditables inline. Les lignes au statut rouge (champ obligatoire manquant, code en conflit) bloquent le commit tant qu'elles ne sont pas résolues.

Table de review ligne par ligne

5. Valider et committer

Cliquez sur Valider le mapping pour ouvrir la modale de résumé. Vous voyez le nombre de formats à créer (created), à mettre à jour (updated) et à ignorer (skipped). Le commit applique l'upsert en transaction unique et passe le draft en statut committed.

Modale de commit avec résumé

Idempotence

Le commit utilise la clé naturelle (magazine_id, code, valid_from). Re-uploader exactement la même grille produit 0 created / 0 updated ; modifier seulement deux prix produit 0 created / 2 updated. Vous pouvez re-uploader sans craindre de duplications.

6. Vérifier le résultat

L'écran Catalogue > Formats publicitaires affiche immédiatement les formats actifs avec leur période de validité. L'historique de la régie conserve la trace de chaque draft (statut, fichier source stocké 90 jours en S3, utilisateur, date).

Historique des grilles uploadées

Cas limites

Ligne sans magazine résolvable

Si le champ magazine_slug (CSV/XLSX) ou magazineHint (PDF) ne correspond à aucun magazine rattaché à la régie, la ligne s'affiche avec un badge Magazine à choisir. Sélectionnez manuellement dans le dropdown ou créez d'abord le magazine via Organisation > Magazines.

Code en conflit

Si deux lignes d'une même grille portent le même code pour le même magazine_id et la même valid_from, le commit est refusé avec Duplicate key. Éditez manuellement l'une des deux pour désambigüiser (ex. FULL_PAGE_QUADRI_A / FULL_PAGE_QUADRI_B).

Période qui chevauche une grille existante

Si vous committez une grille valid_from=2026-01-01 alors qu'une grille valid_until=2026-06-30 existe déjà pour le même format, les deux cohabitent. L'IA et le SuperFilter pioche le format actif à la date du numéro : aucune rupture sur les détections en cours.

Fichier PDF scanné basse qualité

Si Claude Vision retourne un score de confiance < 0.5 sur plus de 30 % des lignes, un bandeau Qualité d'extraction dégradée s'affiche. Préférez alors un ré-upload au format CSV ou XLSX selon le template.

FAQ

Puis-je re-uploader la même grille sans risque ?

Oui, l'upsert est idempotent. Vous pouvez aussi envoyer une grille partiellement corrigée : seules les lignes modifiées produiront updated.

Que devient le fichier source après commit ?

Le PDF / CSV / XLSX est stocké en S3 sous rate-cards/{regieId}/{uuid}-{filename} pendant 90 jours, puis purgé automatiquement. Le RateCardDraft reste en base indéfiniment pour l'audit.

Comment gérer une grille qui couvre plusieurs magazines ?

Un seul upload suffit. La colonne magazine_slug (CSV/XLSX) ou le champ magazineHint (PDF) permet de dispatcher les lignes vers les bons magazines de la régie.

L'IA apprend-elle les nouveaux formats immédiatement ?

Non. Les formats deviennent sélectionnables dans F06 Verify et dans le prompt Claude Vision dès le commit, mais le modèle ne devient vraiment performant sur ces formats qu'après plusieurs dizaines de corrections via la queue Triage (voir le manuel Triage IA).

Puis-je annuler un commit ?

Pas en un clic. Vous pouvez en revanche archiver les formats créés via Catalogue > Formats publicitaires (toggle Statutarchived). Les détections historiques conservent leur rattachement.

Quelles devises sont supportées ?

EUR par défaut, USD et CHF disponibles dans le dropdown. Les prix sont toujours stockés en cents (entier), HT.

Liens utiles

Version v0.17.0 — Changelog