Aller au contenu
L’UGP v1.0 est une ébauche soumise aux commentaires du public. Commentaires jusqu’au 23 novembre 2026. Les seuils A–D sont provisoires.Ébauche publique · jusqu’au 23 novembre 2026Commenter l’ébaucheCommenter →
UGPUniversal Grading Protocol
Développer

Dérivation de référence

Traduction en révision — la version anglaise fait foi jusqu’à la révision. Lire en anglais →

Comment un dossier UGP devient un statut, un grade, un indicateur Premium et un code de base, sous forme d’étapes qu’une implémentation peut suivre.

Le grade, le statut et le code de base sont dérivés du dossier par une fonction déterministe, et ne sont jamais saisis à la main. §4.4 L’implémentation de référence du gestionnaire de la norme s’appelle computeUgp(record) et renvoie { status, reasons[], grade, premium, core_code }. Cette page présente les mêmes étapes en pseudocode, pour que vous puissiez construire votre propre implémentation et la vérifier à l’aide des exemples de référence.

1. Tranche de batterie

text
si aucune batterie, ou scellé           → na
sinon si test de maintien de charge     → CP : standard · CF : service
sinon si aucune lecture ni déclaration  → unknown
sinon si santé < 80                     → service
sinon si santé ≥ 90 et mesurée          → premium
sinon                                   → standard      (80–89 mesurée, ou déclarée ≥ 80)

§8.2 · §8.4

2. Statut : la première règle applicable

text
PROHIBITED   déclaré perdu ou volé; contrefaçon; rappelé pour sécurité; IMEI non concordant ou altéré
ENCUMBERED   verrous = E ou U
UNSANITIZED  données = X ou U, et non scellé
PARTS        esthétique = E;  ou fonctionnel = FK avec destination : pièces
REPAIR       esthétique = K;  ou fonctionnel = FM, FJ ou FK;  ou tranche de batterie = service (CF compris)
NOT GRADED   esthétique = N;  ou fonctionnel = FX sur un appareil non scellé;  ou tranche de batterie = unknown;
             ou identity.blacklist.status = unchecked  (motif lost_stolen_unchecked)
READY        aucun des cas ci-dessus

Rassemblez dans reasons[] les codes du lexique ou des axes qui ont déclenché la règle. §11.1

3. Grade

Seul un dossier prêt (READY) reçoit un grade, et exactement un :

text
esthétique S        → NS  Neuf scellé
esthétique O        → OB  Neuf, boîte ouverte   (kit H → "Neuf, boîte ouverte · appareil seul")
esthétique A ou A0  → A   Comme neuf
esthétique B ou B0  → B   Très bon état
esthétique C ou C0  → C   Bon état
esthétique D ou D0  → D   État acceptable

La valeur esthétique elle-même découle des nombres de défauts par zone et du tableau des tolérances : le meilleur grade dont la colonne convient à chaque zone, suivi de 0 lorsque la zone AA ne présente aucun défaut. §11.2 · §5.5

4. Premium

text
premium = grade = A  et  esthétique = A0  et  tranche de batterie = premium (≥ 90 %, mesurée)  et  pièces = G

§10.3

5. Code de base

Écrivez chaque segment dans l’ordre fixe, en codant un axe qui ne s’applique pas comme sans objet, sans jamais l’omettre :

text
U{major}-{class}-C{cos}-F{func}-B{bat}-L{lock}-R{op}-D{data}-P{parts}-K{kit}[~ext,…]

ext : src:supplier lorsque axes.cosmetic.mapped_from est renseigné

Vérifiez le résultat à l’aide de l’expression régulière du §12.2. §12.1 · §12.3

6. Indications

Avec le résultat, énumérez ce que chaque affichage du grade indique : le verrouillage opérateur s’il y a verrouillage, chaque pièce non d’origine, le contenu s’il n’est pas complet, et la base de la batterie. Deux autres indications viennent des axes d’identité et esthétique : lost_stolen_declared lorsque « non déclaré perdu ou volé » repose sur une déclaration, et supplier_mapped lorsque la valeur esthétique comporte mapped_from; un code transposé du fournisseur se termine aussi par ~src:supplier. §9.3 · §13.6 §11.4

Cette page est informative. En cas de divergence entre celle-ci et la spécification, la spécification prévaut, et les fichiers de référence déterminent ce que renvoie une implémentation correcte.