Appearance
Moteurs de valorisation M1, M2 et M3
Date : 2026-09-14.
Environnement : staging.
Version de règle : pdf-2026-09-14.
M1 valorise une carte loose, M2 un produit scellé et M3 une carte gradée. Les identités et les preuves ne sont jamais mélangées entre moteurs. Une valeur absente reste null, jamais 0.
Sources dans l'environnement actuel
Cardmarket et eBay ne sont pas ouverts à Snag au niveau API. Le backend ne les appelle donc pas en direct et ne remplace pas une source manquante par une fausse donnée.
| Source | Usage staging |
|---|---|
| CardTrader | ancre alternative NM structurée pour M1 récent ; toujours étiquetée cardtrader |
| GCC | ventes réussies exactes pour M2/M3 |
| eBay/Cardmarket | observations uniquement via feed ou import autorisé et revu |
| Valeur personnelle | repli local dans l'application lorsqu'aucune cote qualifiée n'est possible |
Les observations sont conservées dans valuation_evidence, les décisions dans valuation_decisions, et l'échelle M1 dans m1_prices/m1_refusals.
M1 — cartes loose
États du document : Poor, Played, Light Played, Good, Excellent et Near Mint. Mint n'est pas couvert.
Blocs récents
Pour Méga-Évolution, Écarlate et Violet, et Épée et Bouclier, le moteur part du premier prix NM dans la langue sélectionnée puis applique :
| État | Coefficient |
|---|---|
| Near Mint | 100 % |
| Excellent | 85 % |
| Good | 60 % |
| Played | 40 % |
| Poor | 20 % |
Le PDF ne donne aucun coefficient Light Played. Snag refuse donc de l'inventer et propose une valeur personnelle. En staging, CardTrader peut remplacer techniquement l'ancre Cardmarket indisponible ; la source alternative reste visible dans la réponse.
Autres blocs
M1 utilise uniquement les ventes eBay réussies dans l'état exact. Il choisit la première fenêtre non vide : 30 jours, 3 mois, 6 mois, puis 12 mois, et calcule la moyenne. Sans couverture eBay prouvée ou sans vente sur 12 mois, aucune cote n'est publiée et la valeur personnelle est proposée.
GET /cards/:id/m1-prices?language=&variant= renvoie les six états en une requête. L'application change de valeur immédiatement lorsque l'utilisateur change l'état.
M2 — produits scellés
L'identité exacte inclut le produit, la langue, le format/SKU, la variante et la devise.
- Prendre le premier prix Cardmarket dans la langue.
- Ajouter toutes les ventes réussies eBay/GCC de la première fenêtre non vide : 30 jours, 3 mois, 6 mois, 12 mois.
- Donner à l'ancre le même poids qu'à une vente.
- Calculer la moyenne, retirer les valeurs hors ±30 %, puis recalculer une fois.
- Sans vente sur 12 mois ou sans ancre qualifiée, ne pas publier de cote.
GCC peut alimenter les ventes, mais une moyenne GCC seule n'est pas présentée comme une cote M2 conforme. Tant que l'ancre Cardmarket autorisée manque, le frontend affiche l'indisponibilité et permet une valeur personnelle.
M3 — cartes gradées
La carte, la langue, la variante, la société de gradation, la note et le qualifier doivent correspondre exactement. M3 n'extrapole jamais depuis le raw et ne convertit jamais automatiquement une note entre graders.
- Marché clair : au moins trois ventes exactes eBay/GCC sur les trois derniers mois calendaires ; moyenne, retrait hors ±30 %, nouvelle moyenne.
- Marché peu clair : au moins une vente exacte sur 12 mois ; le plus bas listing exact Cardmarket/eBay, fixe, actif et plausible remplace la dernière vente seulement s'il est moins cher.
- Marché douteux : aucune vente exacte sur 12 mois ; aucune cote, valeur personnelle possible.
Lorsque les listings eBay/Cardmarket ne sont pas disponibles, la dernière vente exacte reste la meilleure preuve et la décision porte l'avertissement listings-unavailable. Une annonce GCC n'est pas substituée silencieusement.
Contrat frontend
GET /valuations sert un marché M2/M3 exact et GET /valuations/batch alimente les totaux de collection sans N+1. Les cotes de plus de 48 heures ne sont pas servies. Le frontend montre la source, la taille d'échantillon et la fraîcheur, et propose une valeur personnelle M1/M2/M3 lorsque le moteur refuse de chiffrer.
Cette livraison cible staging. Elle ne constitue ni un merge ni un déploiement de main en production.