This commit is contained in:
2026-04-21 18:46:52 +02:00
parent dcee5c9447
commit e754cb63bf
14 changed files with 1691 additions and 200 deletions

View File

@@ -61,11 +61,11 @@ Le projet doit pouvoir évoluer progressivement vers les capacités suivantes :
## 4. Configuration cible
La configuration applicative sera stockée dans un fichier `config.json`.
La configuration applicative est stockée dans un fichier `config.json`.
### 4.1. Points à couvrir dans la configuration
Le fichier devra à terme permettre de configurer :
Le fichier doit permettre de configurer :
- les endpoints HTTP,
- les endpoints WebSocket,
@@ -93,12 +93,13 @@ Le fichier devra à terme permettre de configurer :
### 4.3. Exigences particulières
Chaque endpoint devra pouvoir porter sa propre configuration, par exemple :
Chaque endpoint doit pouvoir porter sa propre configuration, par exemple :
- nom logique,
- URL,
- provider,
- présence ou non dune clé API,
- variable denvironnement pour clé API,
- plafond de requêtes,
- burst,
- timeout,
@@ -116,7 +117,7 @@ Exemples de rôles futurs :
## 5. Tracing cible
Le tracing devra être centralisé dans `kb_lib`.
Le tracing est centralisé dans `kb_lib`.
### 5.1. Exigences initiales
@@ -139,83 +140,132 @@ Le tracing devra être centralisé dans `kb_lib`.
## 6. Phasage par versions
## 6.1. Version `0.0.2` — Socle conforme
### 6.1. Version `0.0.2` — Socle conforme
Objectif : corriger le squelette et poser la base de travail.
À faire :
Réalisé :
- corriger `kb_lib/src/lib.rs`,
- créer `KbError`,
- créer `KbConfig`,
- créer `init_tracing`,
- créer les constantes Solana officielles,
- préparer les modules `ws_client` et `http_client`,
- remettre `kb_app/src/lib.rs` en conformité,
- documenter `kb_app/src/splash.rs`,
- garder une UI minimale avec bouton connect / disconnect et zone de sortie.
- correction de `kb_lib/src/lib.rs`,
- création de `KbError`,
- création de `KbConfig`,
- création de `init_tracing`,
- création des constantes Solana officielles,
- préparation des modules `ws_client` et `http_client`,
- remise de `kb_app/src/lib.rs` en conformité,
- documentation de `kb_app/src/splash.rs`,
- UI Tauri minimale.
Livrables :
- squelette propre,
- config JSON minimale,
- tracing centralisé,
- UI Tauri minimale opérationnelle,
- premiers types partagés.
## 6.2. Version `0.1.x` — Transport WebSocket générique
### 6.2. Version `0.1.x` — Transport WebSocket générique
Objectif : construire un vrai `WsClient` asynchrone clonable.
À faire :
Réalisé :
- `connect`, `disconnect`, `is_connected`,
- `connect`, `disconnect`, `connection_state`,
- flux de lecture séparé du flux décriture,
- identifiant incrémental interne par client,
- canal sortant borné,
- émission dévénements internes,
- support de larrêt propre,
- fermeture avec timeout.
Contraintes :
- aucune reconnexion implicite au départ,
- pas dusage de `solana-pubsub-client`,
- fermeture avec timeout,
- tests offline avec serveur mock.
## 6.3. Version `0.2.x` — Couche JSON-RPC WS Solana
### 6.3. Version `0.1.1` — Intégration Tauri minimale du `WsClient`
Objectif : valider le transport via lapplication desktop.
Réalisé :
- intégration minimale de `WsClient` dans `kb_app`,
- boutons start/stop,
- zone de logs,
- validation du flux `frontend -> tauri -> kb_lib -> frontend`.
### 6.4. Version `0.2.0` — Couche JSON-RPC WS Solana
Objectif : séparer clairement transport, réponses RPC et notifications.
À faire :
Réalisé :
- enveloppes JSON-RPC 2.0,
- gestion des `request_id`,
- registre des requêtes en attente,
- distinction entre requêtes standard et subscribe/unsubscribe,
- parsing des réponses,
- séparation stricte des notifications.
- parsing des réponses et erreurs,
- parsing des notifications,
- premiers helpers JSON-RPC sur `WsClient`.
Livrables :
- registre `request_id -> pending kind`,
- registre `subscription_id -> metadata`,
- tests de corrélation et de séparation des flux.
## 6.4. Version `0.3.x` — Registre subscriptions / notifications
### 6.5. Version `0.3.0` — Registre subscriptions / notifications
Objectif : fiabiliser la gestion des subscriptions.
À faire :
Réalisé :
- stockage des subscriptions actives,
- mapping entre requête de subscribe et `subscription_id` serveur,
- unsubscribe propre avant fermeture,
- timeout dattente sur unsubscribe,
- purge locale même si le serveur ne répond pas,
- purge locale si nécessaire,
- routage séparé des notifications.
## 6.5. Version `0.4.x` — Transport HTTP générique
### 6.6. Version `0.3.1` — Helpers subscribe/unsubscribe WebSocket
Objectif : ajouter les helpers haut niveau correspondant aux principales méthodes PubSub Solana.
Réalisé :
- helpers pour `account`, `block`, `logs`, `program`, `root`, `signature`, `slot`, `slotsUpdates`, `vote`,
- helpers dunsubscribe correspondants,
- premiers tests de validation des noms de méthodes.
### 6.7. Version `0.3.2` — Helpers typed et notifications typed
Objectif : sappuyer principalement sur `solana-rpc-client-api` pour typer les subscribe et les notifications.
Réalisé :
- helpers typed pour `account`, `block`, `logs`, `program`, `signature`,
- parsing typed des notifications,
- base de travail pour réduire lusage direct de `serde_json::Value`.
### 6.8. Version `0.3.3` — Distinction API typed / raw
Objectif : clarifier lAPI publique de `WsClient`.
Réalisé :
- suffixe `_raw` sur les helpers raw,
- conservation des helpers typed comme interface plus propre,
- préparation dune hiérarchie API plus explicite.
### 6.9. Version `0.3.4` — Fenêtre `Demo Ws` dans `kb_app`
Objectif : tester manuellement les souscriptions live dans une fenêtre dédiée.
Réalisé :
- fenêtre séparée `demo_ws`,
- ouverture depuis la fenêtre principale,
- connexion/déconnexion dun client de démo,
- test de souscriptions live,
- affichage des événements raw et typed,
- premiers tests réels sur `wss://api.mainnet.solana.com`.
### 6.10. Version `0.3.5` — Stabilisation de `Demo Ws`
Objectif : rendre la fenêtre de démonstration robuste sous flux élevé et cohérente avec la configuration.
À faire :
- lire correctement les endpoints activés depuis la config et refléter les URLs résolues avec `api_key_env_var`,
- améliorer la sélection réelle des endpoints affichés et utilisables,
- ajouter du throttling / rate limiting de laffichage UI sous fort débit,
- limiter ou résumer les événements affichés côté fenêtre,
- conserver lintégralité des traces côté `tracing`,
- éviter le gel de la fenêtre sur `logsSubscribe` et `programSubscribe`,
- conserver des compteurs et états UI exploitables,
- mieux gérer les fermetures/ralentissements dendpoints publics.
### 6.11. Version `0.4.x` — Transport HTTP générique
Objectif : construire un `HttpClient` clonable et limité.
@@ -226,15 +276,11 @@ Objectif : construire un `HttpClient` clonable et limité.
- burst configurable,
- délais configurables,
- profils par endpoint,
- endpoints publics ou API-key.
Livrables :
- `HttpClient`,
- endpoints publics ou API-key,
- abstraction de requêtes JSON-RPC HTTP,
- premiers appels sur endpoints Solana.
## 6.6. Version `0.5.x` — Base de données SQLite
### 6.12. Version `0.5.x` — Base de données SQLite
Objectif : poser la persistance locale.
@@ -245,7 +291,7 @@ Objectif : poser la persistance locale.
- premières tables techniques,
- stockage des endpoints, événements, tokens observés, subscriptions actives si utile.
## 6.7. Version `0.6.x` — Détection technique on-chain / RPC
### 6.13. Version `0.6.x` — Détection technique on-chain / RPC
Objectif : commencer la détection utile pour lapplication.
@@ -256,7 +302,7 @@ Objectif : commencer la détection utile pour lapplication.
- débuts de normalisation dévénements,
- premiers connecteurs DEX.
## 6.8. Version `0.7.x` — DEX connectors v1
### 6.14. Version `0.7.x` — DEX connectors v1
Objectif : structurer les connecteurs par protocole.
@@ -276,7 +322,7 @@ Cibles initiales possibles :
- création de types métiers propres,
- enrichissement des métadonnées token/pool/pair.
## 6.9. Version `0.8.x` — Analyse et filtrage
### 6.15. Version `0.8.x` — Analyse et filtrage
Objectif : transformer les événements bruts en signaux exploitables.
@@ -288,7 +334,7 @@ Objectif : transformer les événements bruts en signaux exploitables.
- statistiques de comportement,
- premiers patterns.
## 6.10. Version `1.x.y` — Wallets et swap préparatoire
### 6.16. Version `1.x.y` — Wallets et swap préparatoire
Objectif : préparer la couche daction.
@@ -300,7 +346,7 @@ Objectif : préparer la couche daction.
- préparation dordres et de swaps,
- simulation et garde-fous.
## 6.11. Version `2.x.y` — Trading semi-automatisé
### 6.17. Version `2.x.y` — Trading semi-automatisé
Objectif : brancher lanalyse à laction tout en gardant des garde-fous explicites.
@@ -312,7 +358,7 @@ Objectif : brancher lanalyse à laction tout en gardant des garde-fous exp
- confirmations explicites ou semi-automatiques,
- journaux dexécution.
## 6.12. Version `3.x.y` — Yellowstone gRPC
### 6.18. Version `3.x.y` — Yellowstone gRPC
Objectif : ajouter le connecteur gRPC dédié.
@@ -325,7 +371,7 @@ Objectif : ajouter le connecteur gRPC dédié.
## 7. Organisation des modules ciblés
## 7.1. `kb_lib`
### 7.1. `kb_lib`
Modules cibles à court terme :
@@ -338,8 +384,9 @@ Modules cibles à court terme :
- `http_client.rs`
- `rpc_json.rs`
- `rpc_ws.rs`
- `rpc_ws_solana.rs`
## 7.2. `kb_app`
### 7.2. `kb_app`
Responsabilités cibles :
@@ -347,7 +394,8 @@ Responsabilités cibles :
- commandes UI,
- affichage des états et messages,
- réception des événements venant de `kb_lib`,
- persistance future des préférences UI.
- persistance future des préférences UI,
- fenêtres de démonstration / diagnostic isolées.
## 8. Ligne de conduite sur le `WsClient`
@@ -393,7 +441,8 @@ Plus tard, ce comportement pourra devenir configurable dans `config.json` et pil
Le projet doit maintenir au minimum :
- un `README.md` global,
- un `Roadmap.md` global,
- un `ROADMAP.md` global,
- un `CHANGELOG.md` global,
- des `README.md` et `TODO.md` par crate à mesure de lévolution,
- des tests unitaires robustes,
- les bindings TS générés via `cargo test export_bindings` lorsque les types partagés évoluent.
@@ -402,11 +451,8 @@ Le projet doit maintenir au minimum :
La priorité immédiate est la suivante :
1. corriger le squelette,
2. poser `KbError`,
3. poser `KbConfig`,
4. poser `init_tracing`,
5. poser les constantes Solana,
6. préparer `ws_client` et `http_client`,
7. remettre `kb_app` en conformité,
8. conserver une UI minimale, puis brancher progressivement les clients réseau.
1. stabiliser `Demo Ws`,
2. corriger la lecture/exposition des endpoints activés depuis la config,
3. améliorer la robustesse de lUI sous fort débit,
4. préparer ensuite le transport HTTP générique,
5. poursuivre la structuration des connecteurs DEX.