v0.1.0-pre.071

This commit is contained in:
2026-07-31 16:54:45 +02:00
parent d6bd91c305
commit c5327b0283
16 changed files with 938 additions and 37 deletions

View File

@@ -0,0 +1,20 @@
<!-- file: kb-app-demo-desktop/CHANGELOG.md -->
<!-- version: 1 -->
# CHANGELOG — kb-app-demo-desktop
## 0.1.0-pre.071
- ajout du contrat documentaire complet de la crate mixte ;
- documentation de la bibliothèque, du binaire et de linterface Tauri ;
- ajout dexemples frontend pour les principales familles de commandes ;
- clarification de la persistance de létat WebSocket hors cycle de vie de la fenêtre ;
- inscription des travaux ElGamal et Metaplex restants dans le TODO.
## 0.1.0-pre.062
- migration de lapplication de démonstration vers `kb-app-demo-desktop` ;
- maintien dun package unique bibliothèque et binaire ;
- migration des fenêtres HTTP, WebSocket, SQL, backfill, extraction, replay et exécution ;
- raccordement aux crates consolidées bot3 ;
- validation connue de 117 tests.

View File

@@ -0,0 +1,51 @@
<!-- file: kb-app-demo-desktop/README.md -->
<!-- version: 1 -->
# kb-app-demo-desktop
`kb-app-demo-desktop` est lapplication Tauri de démonstration et de validation opérateur de `khadhroony-bot3`.
La crate reste volontairement mixte :
- bibliothèque `kb_app_demo_desktop_lib` ;
- binaire `kb-app-demo-desktop`.
## Responsabilités
- démarrage Tauri et gestion dune instance unique ;
- chargement de la configuration et du logging ;
- fenêtres de diagnostic et démonstration ;
- commandes Tauri pour HTTP, WebSocket, SQL, backfill, extraction Core et replay ;
- commandes de simulation et exécution Devnet ;
- adaptation TS-RS des résultats des crates réutilisables ;
- gestion de progression, annulation et état applicatif.
## Frontière architecturale
La logique générique reste dans :
- `kb-pipeline-demo-scenarios` pour les scénarios réutilisables ;
- `kb-pipeline` pour lorchestration ;
- `kb-onchain-transport` pour les communications réseau ;
- `kb-store` pour PostgreSQL ;
- `kb-lib` pour décodage, exécution et matérialisation ;
- `kb-wallet` pour les signers locaux.
Le desktop ne doit pas devenir lunique endroit où un scénario fonctionnel existe.
## Validation frontend
La validation autorisée est :
```bash
cargo tauri dev -c kb-app-demo-desktop/tauri.conf.json
```
Ne pas utiliser `npm --prefix kb-app-demo-desktop run build` comme validation du desktop.
## Documentation
- [USAGE.md](USAGE.md)
- [TODO.md](TODO.md)
- [CHANGELOG.md](CHANGELOG.md)
- [Scénarios réutilisables](../kb-pipeline-demo-scenarios/README.md)

View File

@@ -0,0 +1,15 @@
<!-- file: kb-app-demo-desktop/TODO.md -->
<!-- version: 1 -->
# TODO — kb-app-demo-desktop
- [ ] Registre ElGamal - laisser le panneau non exécutable tant que le déploiement réseau et les preuves requises ne sont pas confirmés.
- [ ] Registre ElGamal - raccorder un handler fonctionnel uniquement après validation du scénario réutilisable hors desktop.
- [ ] Metaplex Token Metadata - ajouter les panneaux nécessaires aux scénarios complétés de la future `0.4.7`.
- [ ] Architecture - continuer à extraire les scénarios réutilisables vers `kb-pipeline-demo-scenarios`.
- [ ] Tests - maintenir les adaptateurs Tauri et payloads TS-RS synchronisés avec les APIs réutilisables.
- [ ] Tests - compléter les tests des cycles douverture, fermeture et réouverture des fenêtres.
- [ ] WebSocket - garantir que la fermeture de `demo_ws` ne ferme pas une session active.
- [ ] WebSocket - restaurer létat courant lors de la réouverture de `demo_ws`.
- [ ] Documentation - produire un guide opérateur des fenêtres et effets réseau.
- [ ] Sécurité - réévaluer les capabilities Tauri à chaque nouvelle fenêtre ou commande.

View File

@@ -0,0 +1,246 @@
<!-- file: kb-app-demo-desktop/USAGE.md -->
<!-- version: 1 -->
# Utilisation de kb-app-demo-desktop
## Objectif
Lapplication expose une interface opérateur pour diagnostiquer, simuler et valider les couches de bot3.
## Lancer le desktop
Depuis la racine du workspace :
```bash
cargo tauri dev -c kb-app-demo-desktop/tauri.conf.json
```
Le binaire applique un verrou dinstance locale. Une deuxième instance doit échouer proprement.
## API Rust publique
La bibliothèque expose uniquement `run()` :
```rust
fn launch_desktop() -> kb_core::Result<()> {
return kb_app_demo_desktop_lib::run();
}
```
Le binaire `kb-app-demo-desktop` appelle cette fonction et convertit son résultat en `ExitCode`.
## Fenêtres initiales
La configuration Tauri crée :
- `splash` ;
- `main`.
Les autres fenêtres sont ouvertes par les commandes Tauri dédiées :
- backfill ;
- HTTP ;
- WebSocket ;
- diagnostics SQL ;
- candidats replay ;
- configuration ;
- extraction Core ;
- decode replay ;
- exécution Solana Core ;
- exécution SPL.
## Interface Tauri publique
Les commandes Tauri constituent linterface applicative frontend/backend. Elles ne sont pas des APIs Rust publiques pour les autres crates.
### Ouvrir une fenêtre
```typescript
import { invoke } from "@tauri-apps/api/core";
await invoke("open_demo_http_window");
await invoke("open_demo_ws_window");
await invoke("open_demo_decode_replay_window");
```
### Charger les options HTTP
```typescript
const options = await invoke("demo_http_options");
console.log(options);
```
### Exécuter une requête HTTP de démonstration
```typescript
const result = await invoke(
"demo_http_execute_request",
{
request: {
role: "standard",
method: "getHealth",
paramsJson: "[]"
}
}
);
console.log(result);
```
Les champs exacts du payload doivent rester synchronisés avec les types TS-RS générés.
### Gérer une session WebSocket
```typescript
const status = await invoke("demo_ws_status");
console.log(status);
await invoke("demo_ws_connect", {
request: {
role: "standard",
method: "logsSubscribe",
paramsJson: "[]"
}
});
await invoke("demo_ws_unsubscribe");
await invoke("demo_ws_disconnect");
```
La fermeture de la fenêtre ne doit pas être assimilée à une demande de déconnexion.
### Lancer un backfill
```typescript
const options = await invoke("demo_backfill_options");
console.log(options);
const summary = await invoke(
"demo_backfill_execute",
{
request: {
profileName: "devnet",
address: "11111111111111111111111111111111",
limit: 100
}
}
);
console.log(summary);
```
### Extraction Core
```typescript
const options = await invoke(
"demo_core_extraction_options"
);
const summary = await invoke(
"demo_core_extraction_execute",
{
request: {
profileName: "devnet",
limit: 1000
}
}
);
console.log(options, summary);
```
Une campagne longue peut être annulée avec `demo_core_extraction_cancel`.
### Decode replay
```typescript
const options = await invoke(
"demo_decode_replay_options"
);
const summary = await invoke(
"demo_decode_replay_execute",
{
request: {
profileName: "devnet",
limit: 1000,
materialize: true
}
}
);
console.log(options, summary);
```
Les diagnostics et annotations sont accessibles par des commandes séparées.
### Scénarios Devnet
Les commandes couvrent notamment :
- `demo_execution_solana_core_execute` ;
- `demo_execution_spl_memo_execute` ;
- `demo_execution_spl_token_execute` ;
- `demo_execution_spl_ata_execute` ;
- `demo_execution_spl_token_2022_execute`.
```typescript
const scenarios = await invoke(
"demo_execution_spl_validation_scenarios"
);
console.log(scenarios);
```
La simulation et lenvoi doivent rester explicitement distingués dans les requêtes.
### Diagnostics PostgreSQL
```typescript
const diagnostics = await invoke(
"load_demo_sql_diag"
);
const rawTables = await invoke(
"load_demo_sql_pg_raw"
);
const coreTables = await invoke(
"load_demo_sql_pg_core"
);
console.log(diagnostics, rawTables, coreTables);
```
## Capabilities Tauri
Les fenêtres autorisées sont listées dans `capabilities/default.json`. La capability active doit inclure au minimum les permissions Tauri Core et tracing nécessaires aux fenêtres déclarées.
Toute nouvelle fenêtre ou commande sensible doit être auditée avant ajout de permissions.
## Erreurs et invariants
- une simulation ne doit jamais envoyer une transaction ;
- une soumission nécessite une confirmation opérateur explicite ;
- les secrets de wallet ne doivent jamais être sérialisés vers le frontend ;
- les résultats frontend doivent refléter les validations réellement exécutées ;
- létat WebSocket appartient à lapplication, pas à la durée de vie de la fenêtre ;
- les commandes Tauri adaptent les APIs réutilisables sans dupliquer leur logique.
## Tests de référence
- tests des options et payloads HTTP ;
- tests de cycle de vie WebSocket ;
- tests de sélection de profil Devnet ;
- tests de System Transfer et Memo ;
- tests ATA, SPL Token et Token-2022 ;
- tests de backfill, extraction Core et decode replay ;
- tests de diagnostics SQL et exports CSV ;
- tests de journalisation frontend ;
- test du verrou détat applicatif et de la séquence splash.
La base validée de `pre.062` contient 117 tests pour cette crate.
## Limites durables
- le desktop est une application de démonstration et validation, pas le worker de production ;
- les payloads Tauri sont une API applicative spécifique au frontend ;
- lapplication nécessite un environnement graphique pour sa validation complète.