Sandbox rate card — analyse d'une grille tarifaire
La sandbox permet de tester l'extraction IA d'une grille tarifaire éditeur avant tout import en base. Rien n'est persisté : c'est un dry-run pour valider la qualité avant de lancer l'import cascade.
Accès
Backstage → Catalogue & Tarifs → Sandbox rate card
URL directe : /backstage/rate-cards/sandbox
Requiert la permission adformat.manage.pricing (ROLE_ADMIN).
Formats supportés
| Format | Traitement |
|---|---|
| Claude Vision lit directement (multi-pages, scans inclus) | |
| XLSX / XLS | Conversion en tableau Markdown côté serveur (PhpSpreadsheet) |
| HTML / HTM | Strip des tags, préservation des tableaux |
| CSV / TXT | Envoi brut |
Taille max : 10 Mo. Modèle : Claude Opus 4.7 (16 384 tokens max).
Déroulé
1 · Upload
Glisse-dépose un fichier ou clique pour sélectionner. Une fois sélectionné, clique sur « Analyser ».
2 · Loader progressif
Pendant que Claude Opus traite le document, un loader affiche les étapes en temps réel :
- 📄 Lecture du fichier
- 🚀 Envoi à Claude Opus 4.7
- 🤖 Analyse du document par l'IA
- 🔍 Extraction des magazines et tarifs
- ✨ Finalisation
Durée typique : 8 à 25 secondes selon la taille du document.
3 · Résultat
Le résultat s'affiche sous forme de fiches :
- Régie détectée (nom officiel + hint brut + année + devise + nombre de magazines) avec badge de confiance
- Summary décisions : compteur acceptées / rejetées / en attente
- Une carte par magazine avec :
- Métadonnées (périodicité, ISSN, éditeur)
- Boutons bulk « Tout accepter » / « Tout rejeter »
- Tableau des lignes tarifaires
4 · Illustration du placement
Chaque ligne tarifaire affiche une illustration SVG du placement :
- 2ᵉ couverture : page gauche du magazine (intérieur avant)
- 3ᵉ couverture : page gauche (intérieur arrière)
- 4ᵉ couverture : page droite (dos du magazine)
- Page intérieure : page droite, format courant
La zone publicitaire est surlignée en bleu avec le label « AD ».
5 · Décision ligne par ligne
Pour chaque ligne, deux boutons :
- ✓ vert : accepter (ligne sera importée)
- ✗ rouge : rejeter (ligne ignorée)
Cliquer une seconde fois annule la décision (retour à « en attente »).
La ligne change de couleur de fond :
- Vert clair → acceptée
- Rouge clair + opacité réduite → rejetée
6 · Logs d'analyse
Panneau « Logs d'analyse » ouvert par défaut avec :
- Diagnostics : modèle, taille fichier, tokens in/out, durée HTTP + totale
- Logs horodatés : chaque étape serveur avec contexte JSON
Utile pour debug si l'extraction rate.
7 · JSON brut + réponse LLM brute
Deux accordéons supplémentaires pour :
- Voir le JSON final (structure
ExtractedRateCard) - Voir la réponse brute Claude (avant parsing)
Cas d'usage
| Cas | Action recommandée |
|---|---|
| Nouvelle régie presse jamais importée | Télécharger la grille PDF 2026, analyser, valider le mapping régie + magazines |
| Grille Excel reçue par e-mail | Uploader le .xlsx, vérifier la conversion Markdown, accepter les lignes correctes |
| Page HTML du site régie | Copier le HTML (DevTools → copy outerHTML d'un tableau), uploader |
| Extraction partielle (confiance < 0.6) | Rejeter les lignes douteuses, garder les évidentes |
Prochaine étape : import cascade
Une fois les décisions validées, le bouton « Importer » (feature #516) créera en une transaction :
- La régie (si nouvelle)
- Les magazines rattachés
- Les formats (dédupés via
canonical_formats) - Les lignes tarifaires uniquement pour les lignes acceptées
Cette feature est en cours de développement (DDT + plan mergés dans #517).
Limitations
- Pas de streaming : le loader est simulé côté frontend (timer basé sur stages typiques). La réponse Claude arrive en bloc.
- Pas de cache : chaque upload relance une extraction complète (facture Anthropic).
- Pas d'édition des lignes : uniquement accept/reject. Pour éditer un prix erroné, il faudra passer par l'écran d'import cascade (#516).
- Dédup magazines : non gérée côté sandbox. L'écran d'import cascade proposera de lier à un magazine existant.
Debug
Si l'analyse échoue :
- Vérifier le panneau Logs d'analyse : l'erreur Anthropic y apparaît
- Vérifier les logs serveur :
docker compose logs -f data-api - En cas d'erreur 422 « ANTHROPIC_API_KEY non configurée » : vérifier
.envsur le VPS