Dunipod : indexeur de données on-chain et off-chain avec couche P2P et API GraphQL unifiée

Je suis en train d’implémenter une requête vers le dunipod pour la données de distance et la prochaine certification à renouveler (wot wizard dans Tikka).

Mais il manque la donnée nommé “qualité” de wot wizard. J’ai demandé à l’IA quoi te demander comme données pour afficher la qualité comme dans wot wizard

xx% (référents à stepmax - 1 / total référents)

Penses-tu, connaissant le gql, que la colonne qualité peut être implémentée correctement maintenant ou qu’elle nécessite d’autres données du serveur. S’il manque des données pour la qualité, lesquelles (je peux les demander au développeur).

Bonne question — j’ai le schéma complet sous les yeux, voici l’analyse précise.

Verdict : la qualité ne peut pas être implémentée correctement avec le schéma actuel

Pourquoi

La règle de qualité est identique à la règle de distance, mais avec stepMax − 1 pas
(au lieu de stepMax). Or le schéma dunipod n’expose qu’un seul snapshot de distance par identité :

type Identity {
  ...
  distanceRule: DistanceRuleSnapshot   # ← un seul, avec maxDepth fixe
}

type DistanceRuleSnapshot {
  perbill: Int!
  accessibleReferees: Int!
  effectiveAccessibleReferees: Int!
  refereeCount: Int!
  effectiveRefereeCount: Int!
  passes: Boolean!
  maxDepth: Int!              # vraisemblablement = stepMax
  minimumRequiredPerbill: Int!
  refereeThreshold: Int!
  ...
}

Il n’y a aucun qualityRule, aucun second snapshot à maxDepth − 1, et rien dans DistanceRuleCalculationConfig (config globale) qui suggère un calcul de qualité séparé.
Pourquoi on ne peut pas la déduire côté client

effectiveAccessibleReferees est le nombre de référents atteints à maxDepth = stepMax. Pour la qualité, il faudrait le même comptage à stepMax − 1 — c’est-à-dire la distribution des distances (combien de référents à 1 pas, 2 pas, …), qui n’est pas exposée. Aucune transformation de perbill/ accessibleReferees ne peut produire la valeur à stepMax − 1 : c’est un résultat de calcul de graphe, pas un dérivé.

Ce qu’il faut demander au développeur dunipod

La demande la plus simple, qui réutilise l’existant :

Sur le type Identity, ajouter un second champ calculé au même format que distanceRule, mais avec maxDepth = stepMax − 1 :
graphql qualityRule: DistanceRuleSnapshot
Variantes acceptables (à proposer si l’architecture dunipod préfère) :

  • un paramètre sur le champ : distanceRule(maxDepth: Int): DistanceRuleSnapshot (permet de demander stepMax ou stepMax − 1 — plus flexible, couvre aussi les dev futures),
  • ou, dans le snapshot existant, un champ supplémentaire : qualityPasses: Boolean! + qualityPerbill: Int! + qualityAccessibleReferees: Int! (le strict minimum pour l’onglet : % = qualityAccessibleReferees / effectiveRefereeCount * 100, mais moins propre).

La première option (qualityRule: DistanceRuleSnapshot sur Identity) est la plus propre et la plus alignée avec la règle officielle.

Voilà, si tu le veux bien, l’ajout de la qualité dans Dunipod serait un must pour Tikka et autres clients palliant l’absence de Wot Wizard.