anchorage_layer_simple/features/utxo-list-progressive-loading.md
ncantu 3389d62401 UTXO-list: remove Type/Date for Changes, explain Fees 0 when from file
**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
2026-01-26 01:45:39 +01:00

64 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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](https://dashboard.certificator.4nkweb.com/utxo-list) 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`.
- Catégories fichier : `bloc_rewards`, `ancrages`, `changes` (et `anchor`/`change`/`fee` si présents). Le parser accepte les deux formes pour ancrages/changes.
- `actualiser` recharge 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
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`