anchorage_layer_simple/features/utxo-list-progressive-loading.md
ncantu 076b054b70 UTXO list: progressive loading from file with progress bar
**Motivations:**
- Page utxo-list très longue à charger
- Utiliser le fichier utxo_list.txt (peut ne pas être à jour) au lieu de /api/utxo/list
- Proposer un chargement progressif avec barre de progression

**Root causes:**
- /api/utxo/list appelle getUtxoList (RPC + fichier), lent et peut bloquer
- Aucun retour visuel pendant le chargement

**Correctifs:**
- Chargement depuis /api/utxo/list.txt (fichier uniquement)
- Stream du fichier (getReader + TextDecoder), parsing ligne à ligne
- Barre de progression (bytes reçus / Content-Length)
- Content-Length et Last-Modified sur /api/utxo/list.txt
- Statut "—" quand source fichier (pas d'info dépensé/verrouillé)
- Note "Source : fichier utxo_list.txt (peut ne pas être à jour)"

**Evolutions:**
- Chargement plus rapide et non bloquant
- Feedback visuel (progression, lignes parsées)
- Documentation dans features/utxo-list-progressive-loading.md

**Pages affectées:**
- signet-dashboard/src/server.js
- signet-dashboard/public/utxo-list.html
- features/utxo-list-progressive-loading.md
2026-01-26 01:04:32 +01:00

3.2 KiB
Raw Blame History

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 utilise getUtxoList() (RPC + fichier) et peut être lent ou bloquer le serveur.
  • Le fichier utxo_list.txt peut ê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.txt envoie Content-Length et Last-Modified pour la progression et laffichage 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 de Content-Length et Last-Modified (via statSync).

Page UTXO-list (signet-dashboard/public/utxo-list.html)

  • Source des données : loadUtxoList() lit /api/utxo/list.txt au lieu de /api/utxo/list.
  • Streaming : utilisation de response.body.getReader() + TextDecoder pour traiter le flux par morceaux.
  • Parsing : parseUtxoLine() parse le format fichier (category;txid;vout;amount;confirmations;isAnchorChange;blockTime) et produit des objets UTXO compatibles avec renderTable / 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 de Content-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 dinfo dépensé/verrouillé disponible).

Compatibilité

  • Format 7 champs (nouveau) et 6 champs (ancien avec address) gérés par parseUtxoLine.
  • actualiser recharge depuis le fichier (même flux que le chargement initial).

Modalités de déploiement

  1. Redémarrer le dashboard : sudo systemctl restart signet-dashboard.service.
  2. Vider le cache navigateur si nécessaire puis recharger /utxo-list.

Modalités danalyse

  • Ouvrir les DevTools (Network) : vérifier que la requête va vers /api/utxo/list.txt et que les headers Content-Length et Last-Modified sont présents.
  • Vérifier que la barre de progression saffiche puis disparaît une fois le chargement terminé.
  • Vérifier que les quatre tableaux (Bloc Rewards, Ancrages, Changes, Frais) et la pagination saffichent correctement.

Pages affectées

  • signet-dashboard/src/server.js : route /api/utxo/list.txt
  • signet-dashboard/public/utxo-list.html : loadUtxoList, parseUtxoLine, rendu progression, statut fromFile