anchorage_layer_simple/features/utxo-list-progressive-loading.md
ncantu 7ab718aa9f Fix UTXO-list: accept ancrages/changes from file, restore anchors and changes
**Motivations:**
- Ancrages et Changes affichés à 0 sur /utxo-list en chargement fichier
- Liste perçue comme erronée

**Root causes:**
- utxo_list.txt utilise ancrages/changes; parser n'acceptait que anchor/change
- Lignes ancrages/changes rejetées par parseUtxoLine

**Correctifs:**
- Parser accepte ancrages et changes, push vers anchors/changes
- Doc catégories et limite Frais (fichier) dans features + fixKnowledge

**Evolutions:**
- Aucune

**Pages affectées:**
- signet-dashboard/public/utxo-list.html
- features/utxo-list-progressive-loading.md
- fixKnowledge/utxo-list-file-category-mismatch.md
2026-01-26 01:34:15 +01:00

63 lines
3.5 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`).
## 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`