**Motivations:** - Changes : supprimer colonne Type et Date (toujours vide en chargement fichier) - Frais Nombre : 0 : clarifier que c'est attendu en chargement fichier (source RPC) **Root causes:** - Type/Date inutiles ou vides pour Changes depuis utxo_list.txt - Frais non stockés dans le fichier (OP_RETURN / RPC uniquement) **Correctifs:** - Changes : en-têtes et cellules Type + Date supprimés - Frais vide : message "Les frais ne sont pas disponibles en chargement fichier (source RPC uniquement)." si utxosFromFile - Doc features/utxo-list-progressive-loading.md mise à jour **Evolutions:** - Aucune **Pages affectées:** - signet-dashboard/public/utxo-list.html - features/utxo-list-progressive-loading.md
3.7 KiB
3.7 KiB
Chargement progressif de la liste UTXO depuis le fichier
Auteur : Équipe 4NK
Date : 2026-01-26
Version : 1.0
Objectif
Raccourcir le chargement de la page Liste des UTXO en utilisant directement le fichier utxo_list.txt au lieu de /api/utxo/list, et afficher une barre de progression pendant le chargement.
Problème initial
- La page UTXO-list est très longue à charger.
- Elle appelait
/api/utxo/list, qui utilisegetUtxoList()(RPC + fichier) et peut être lent ou bloquer le serveur. - Le fichier
utxo_list.txtpeut être en retard par rapport au nœud, mais il est servi rapidement. - Aucun retour visuel pendant le chargement.
Impacts
- Page UTXO-list : Charge désormais depuis
/api/utxo/list.txt(fichier uniquement). - Serveur :
/api/utxo/list.txtenvoieContent-LengthetLast-Modifiedpour la progression et l’affichage de la date de mise à jour. - Utilisateurs : Barre de progression pendant le chargement ; indication que la source est le fichier (potentiellement pas à jour).
Modifications
Serveur (signet-dashboard/src/server.js)
- Route
/api/utxo/list.txt: ajout deContent-LengthetLast-Modified(viastatSync).
Page UTXO-list (signet-dashboard/public/utxo-list.html)
- Source des données :
loadUtxoList()lit/api/utxo/list.txtau lieu de/api/utxo/list. - Streaming : utilisation de
response.body.getReader()+TextDecoderpour traiter le flux par morceaux. - Parsing :
parseUtxoLine()parse le format fichier (category;txid;vout;amount;confirmations;isAnchorChange;blockTime) et produit des objets UTXO compatibles avecrenderTable/renderFeesTable. - Barre de progression :
- Section dédiée avec barre (pourcentage) et texte « X ligne(s) parsée(s) ».
- Progression =
bytes reçus / Content-Length; si pas deContent-Length, 0 % puis 100 % à la fin.
- Source fichier : mention « Source : fichier utxo_list.txt (peut ne pas être à jour) » et, si disponible, « Dernière modif. : … » (depuis
Last-Modified). - Statut : pour les UTXO chargés depuis le fichier (
fromFile: true), la colonne Statut affiche « — » (pas d’info dépensé/verrouillé disponible).
Compatibilité
- Format 7 champs (nouveau) et 6 champs (ancien avec
address) gérés parparseUtxoLine. - Catégories fichier :
bloc_rewards,ancrages,changes(etanchor/change/feesi présents). Le parser accepte les deux formes pour ancrages/changes. actualiserrecharge depuis le fichier (même flux que le chargement initial).- Frais : la section « Frais » reste vide en chargement fichier (données issues du RPC / OP_RETURN, non stockées dans
utxo_list.txt). Message explicatif affiché : « Les frais ne sont pas disponibles en chargement fichier (source RPC uniquement). » - Changes : colonnes « Type » et « Date » supprimées (Date souvent vide depuis le fichier).
Modalités de déploiement
- Redémarrer le dashboard :
sudo systemctl restart signet-dashboard.service. - Vider le cache navigateur si nécessaire puis recharger
/utxo-list.
Modalités d’analyse
- Ouvrir les DevTools (Network) : vérifier que la requête va vers
/api/utxo/list.txtet que les headersContent-LengthetLast-Modifiedsont présents. - Vérifier que la barre de progression s’affiche puis disparaît une fois le chargement terminé.
- Vérifier que les quatre tableaux (Bloc Rewards, Ancrages, Changes, Frais) et la pagination s’affichent correctement.
Pages affectées
signet-dashboard/src/server.js: route/api/utxo/list.txtsignet-dashboard/public/utxo-list.html:loadUtxoList,parseUtxoLine, rendu progression, statutfromFile