Fonction "queue list" pour les certifs dans les clients

Ce post est un “ticket” pour les clients (Cesium², Ğecko, Ğ1 Companion, Ğ1nkgo, Tikka, …).
@poka @ManUtopiK @vjrj @vit
Je me permettrai donc de poster un ticket Git dans chaque client accessible qui fera le lien sur ce post.

Origine :

Dans la v2 il y a promesse de simplification du processus de certif, car suppression des piscines.
Mais, en contrepartie, le fait d’attendre 5j. avant de procéder à la certif suivante, devient une sorte de régression d’usage, car sur le terrain, gros besoin de prévoir plusieurs certifs lors d’un événement, un marché, …
→le propos serait d’avoir un utilitaire de type “Queue List”.

Périmètre MVP (simplification) :

Inclus dans les releases pour la V2, mars 2026.

  • Gestion de la queue en local. Pas de synchro. / choix par les users d’un client “dédié” pour gérer ses certifs.
  • Liste par défaut : chronologique. Lorsque le délai est écoulé, certifie le premier de la liste.
  • Ordonnancement manuel possible pour donner la priorité aux certifs souhaitées.
  • Nécessité de l’ouverture du client → besoin d’une notif “externalisée”, idéalement push notif, genre daemon local. [ RQ : chercher alternative opensource à Firebase ]

Distinction entre “nouvelle certif” et “renouvellement certif”

  • a minima : signalétique {label: “renouvellement”} dans la liste.
  • mieux : simplification du process de certif : seule vérif à effectuer pour le certifiant = la personne à renouveler est-elle bien encore vivante.
  • mieux : proposition automatique dans le délai approprié (J-5), façon deathreaper.
3 Likes

Ha au fait @poka a codé cette fonction dans Cesium² pendant le hackathon de Lodève, il a même développé la synchro ; la cote est plutôt bonne pour que la fonction se retrouve dans Ğecko ; les autres peuvent éventuellement suivre (du coup je me suis dispensé de mettre un ticket dans le git de chaque client, @ManUtopiK @vjrj (@vit @Moul) le mettront bien à leur loisir s’ils trouvent ça pertinent dans leur client).

Merci !

5 Likes

A bit lost here. A pointer to the cessium v2 code can be helpful.

1 Like

@HugoTrentesaux a parlé de la nécessité d’afficher les certifs expirées donc j’imagine les idées vont vite

@poka
:victory_hand:

oui on a reparlé de ça à Toulouse d’ailleurs.
En attendant : Duniter panel

pas compris

Les idées d’amélioration

Super fonctionnalité !

Peux-t-on avoir un lien vers le code correspondant de @poka ?

J’ai cru voir que les listes étaient stockées sur le datapod Cesium+ V1 centralisé.
Peux-t-on avoir le format des documents et le CRUD des requêtes HTTP ?

Histoire de faire pareil sur Tikka.

Stockage

C’est stocké en tant que champ à la racine du profil CesiumPlus :

{
  "certificationQueue": {
    "issuerIndex": null,
    "issuerAddress": "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",
    "nextIssuableOn": 185420,
    "pendingCertifications": [
      {
        "id": "550e8400-e29b-41d4-a716-446655440000",
        "receiverAddress": "5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty",
        "receiverIndex": 42,
        "receiverUid": "Alice",
        "receiverName": "Alice Martin",
        "addedAt": 1709913600000,
        "expectedAvailableBlock": 185420,
        "expectedAvailableDate": 1709999000000,
        "position": 1,
        "certType": "certification"
      }
    ],
    "lastUpdated": 1709913600000,
    "version": 1
  }
}

CRUD

GET {baseEndpoint}/user/profile/{pubkeyBase58}

  • La réponse contient _source.certificationQueue (peut être null si aucune file)
  • Pubkey b58, comme tout le reste sur cs+

POST {baseEndpoint}/user/profile

{"hash":"SHA256_HEX_UPPERCASE","signature":"BASE64_SIGNATURE","version":2,"issuer":"PUBKEY_BASE58","time":1709913600,"title":"Duniter Wallet","certificationQueue":{...}}

POST {baseEndpoint}/user/profile/{pubkeyBase58}/_update

{"hash":"SHA256_HEX_UPPERCASE","signature":"BASE64_SIGNATURE","version":2,"issuer":"PUBKEY_BASE58","time":1709913600,"title":"...","certificationQueue":{...},...existingFields}
2 Likes

Arf, je trouve ce hack excellent ! :rofl: la souplesse de la stack ES ! Bravo !

Bon par contre il faudra réfléchir à un truc plus propre, hein :joy:

1 Like