v0.3.8-pre.013
This commit is contained in:
106
crates/ksp-app-store-desk/README.md
Normal file
106
crates/ksp-app-store-desk/README.md
Normal file
@@ -0,0 +1,106 @@
|
||||
<!-- file: crates/ksp-app-store-desk/README.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# `ksp-app-store-desk`
|
||||
|
||||
`ksp-app-store-desk` est l’application desktop spécialisée d’inspection read-only du Store KSP.
|
||||
|
||||
Elle reste une couche de composition Tauri : Config sélectionne le profil Store et Logging, `ksp-store-lib` possède la façade backend-neutral et les contrats d’inspection, et le backend physique reste entièrement masqué à l’application comme au frontend.
|
||||
|
||||
## Package
|
||||
|
||||
```text
|
||||
package : ksp-app-store-desk
|
||||
lib : ksp_app_store_desk_lib
|
||||
bin : ksp-app-store-desk
|
||||
```
|
||||
|
||||
Le binaire est un launcher mince. La bibliothèque applicative possède le bootstrap, le lifecycle Store, les DTOs Tauri, les commands, les projections de détail bornées et le bridge de tracing frontend.
|
||||
|
||||
## Composition
|
||||
|
||||
```text
|
||||
ksp-config-lib -> composite, profils, secrets et runtime packagé
|
||||
ksp-core-lib -> erreurs et primitives communes
|
||||
ksp-store-lib -> façade Store backend-neutral et contrats RAW/inspection
|
||||
ksp-logging-lib -> logging/tracing applicatif
|
||||
ksp-app-store-desk -> orchestration Tauri + projections sûres read-only
|
||||
```
|
||||
|
||||
L’application ne dépend pas directement de `ksp-store-api`, `ksp-store-postgres-lib`, `tokio-postgres` ou d’un autre backend physique. Elle ne possède aucun SQL.
|
||||
|
||||
## Vues
|
||||
|
||||
La surface utilisateur comprend :
|
||||
|
||||
- **Overview** : état du runtime Store, health portable, réseau, backend logique, migration et compteurs de pool sûrs ;
|
||||
- **RAW Transactions** : inspection DataTables server-side, filtres de slot et direction, état de rétention et détail explicite ;
|
||||
- **RAW Accounts** : inspection DataTables server-side, filtre pubkey exact, plage de slots, direction et détail explicite ;
|
||||
- **Diagnostics** : projection sûre du shell, de Config et du runtime Store.
|
||||
|
||||
Les détails Transaction et Account contiennent également leurs observations dans des DataTables server-side dédiées lorsque ces observations existent.
|
||||
|
||||
## Pagination et inspection
|
||||
|
||||
Store Desk utilise la surface d’inspection random-access de `ksp-store-lib` : `offset + limit` avec counts exacts. DataTables est l’unique propriétaire de la pagination visible et les tailles admises sont `25`, `50` et `100`.
|
||||
|
||||
Cette voie d’inspection humaine ne remplace pas la pagination cursor/keyset du Store. Les workers, jobs et autres consumers machine peuvent continuer à utiliser `RawPageCursor` / `RawPageRequest`; Store Desk ne consomme pas ces cursors.
|
||||
|
||||
Le frontend conserve `draw` localement et ne transmet ni search globale DataTables, ni ordre de colonnes arbitraire, ni cursor, ni réseau physique au Store.
|
||||
|
||||
## Rows, détails et observations
|
||||
|
||||
Les rows de table ne transportent jamais les bytes RAW complets :
|
||||
|
||||
- Transaction : identité, slot, format, hash, taille éventuelle et état de rétention ;
|
||||
- Account : pubkey, slot, state hash, owner, lamports, executable, rent epoch et longueur de data ;
|
||||
- Observation : provenance d’acquisition sûre et metadata bornées, sans source payload bytes.
|
||||
|
||||
Un détail est chargé explicitement pour une seule entité. Les previews payload Transaction et data Account sont limitées à **512 bytes**, rendues en hexadécimal et accompagnées de la taille exacte et d’un indicateur de troncature.
|
||||
|
||||
Pour une Transaction, les états `Full`, `Archived` et `Purged` restent distincts. Un état `Purged` est représenté via son tombstone ; Store Desk n’offre aucune action d’archive, purge ou force-rehydrate.
|
||||
|
||||
## Valeurs longues et copie
|
||||
|
||||
Les signatures, hashes, pubkeys, owners et autres identifiants longs sont tronqués visuellement au centre tout en restant disponibles via tooltip et bouton de copie. La copie n’ajoute aucune capability Tauri : elle utilise le WebView et le tracing ne transporte que l’identifiant logique du champ, jamais la valeur copiée.
|
||||
|
||||
## Config et réseaux
|
||||
|
||||
Le composite dédié est :
|
||||
|
||||
```text
|
||||
cfg.composite.ksp-app-store-desk
|
||||
```
|
||||
|
||||
Les profils committed couvrent `mainnet`, `devnet` et `testnet`. Mainnet est le profil par défaut. Le composite contient uniquement Logging + Store ; aucun Transport n’est ouvert par l’application.
|
||||
|
||||
Le frontend ne reçoit jamais URI Store, credential, secret Config, SQL, handle pool ou type backend physique.
|
||||
|
||||
## Sécurité et ownership
|
||||
|
||||
Store Desk est read-only par contrat applicatif : aucun command Tauri d’écriture Store n’est exposé. Les capabilities guest restent limitées à `core:default` et `tracing:default`.
|
||||
|
||||
Le frontend ne possède ni accès réseau navigateur direct, ni persistence navigateur des données RAW, ni accès filesystem, ni dialogue natif pour contourner les façades KSP.
|
||||
|
||||
Les comptes et counts `u64` susceptibles d’excéder le domaine entier sûr JavaScript traversent IPC sous forme décimale et sont vérifiés avant conversion côté TypeScript.
|
||||
|
||||
## Ports et développement
|
||||
|
||||
```text
|
||||
Vite HTTP : 1438
|
||||
Vite WS : 1439
|
||||
```
|
||||
|
||||
Lancement :
|
||||
|
||||
```bash
|
||||
(cd crates/ksp-app-store-desk && cargo tauri dev)
|
||||
```
|
||||
|
||||
Build production :
|
||||
|
||||
```bash
|
||||
(cd crates/ksp-app-store-desk && cargo tauri build)
|
||||
```
|
||||
|
||||
Voir également [`USAGE.md`](USAGE.md), [`../ksp-store-lib/README.md`](../ksp-store-lib/README.md), [`../../docs/architecture/008-DATA_MATERIALIZATION_AND_STORE.md`](../../docs/architecture/008-DATA_MATERIALIZATION_AND_STORE.md) et [`../../docs/validation/025-V0_3_8_STORE_DESK.md`](../../docs/validation/025-V0_3_8_STORE_DESK.md).
|
||||
Reference in New Issue
Block a user