155 lines
4.8 KiB
Markdown
155 lines
4.8 KiB
Markdown
<!-- file: crates/ksp-app-solprices-desk/README.md -->
|
|
<!-- version: 2 -->
|
|
|
|
# `ksp-app-solprices-desk`
|
|
|
|
`ksp-app-solprices-desk` est l'application desktop spécialisée de visualisation et de refresh manuel des prix SOL/USD fournis par `ksp-offchain-transport-lib`.
|
|
|
|
L'application reste une **HID provider-neutral** : elle consomme le registry, les observations, les disponibilités et les opérations génériques du service Off-chain sans connaître les endpoints, credentials, limites ou wire formats propres aux providers.
|
|
|
|
## Package
|
|
|
|
```text
|
|
package : ksp-app-solprices-desk
|
|
lib : ksp_app_solprices_desk_lib
|
|
bin : ksp-app-solprices-desk
|
|
```
|
|
|
|
Le binaire reste un launcher mince. La bibliothèque applicative possède l'assemblage Tauri, le bootstrap Config/Logging/Off-chain, l'état de présentation en mémoire et les commands Tauri.
|
|
|
|
## Responsabilités
|
|
|
|
```text
|
|
ksp-config-lib -> composite, profils, secrets et runtime packagé
|
|
ksp-offchain-transport-lib -> providers, HTTP, registry, availability, limits et refresh
|
|
ksp-logging-lib -> logging/tracing applicatif
|
|
ksp-app-solprices-desk -> orchestration Tauri + projections provider-neutral sûres
|
|
```
|
|
|
|
Le Desk ne possède aucun client HTTP provider et ne réimplémente ni admission, ni cooldown, ni retry provider.
|
|
|
|
## Vues
|
|
|
|
### Prices
|
|
|
|
La vue `Prices` affiche l'inventaire SOL/USD dans l'ordre stable du registry et conserve chaque observation séparée.
|
|
|
|
La projection comprend notamment :
|
|
|
|
- identité/display provider et paire ;
|
|
- sémantique et mode d'authentification ;
|
|
- availability générique ;
|
|
- prix exact sous forme de `String` ;
|
|
- timestamp provider lorsqu'il existe ;
|
|
- timestamp de réception KSP ;
|
|
- `retry_at` lorsqu'il existe ;
|
|
- état `Refreshing` local à la présentation.
|
|
|
|
Aucune moyenne, aucun fallback automatique et aucun prix canonique ne sont produits par cette application.
|
|
|
|
Les actions manuelles sont :
|
|
|
|
```text
|
|
Refresh
|
|
Refresh selected
|
|
Refresh all
|
|
Select all providers
|
|
Clear selection
|
|
```
|
|
|
|
Le batch applicatif est borné à `1..=64` IDs opaques avant parsing/dispatch. Les doublons, IDs inconnus et conflits `in_flight` sont rejetés avant mutation partielle.
|
|
|
|
### Diagnostics
|
|
|
|
La vue `Diagnostics` expose uniquement des informations de runtime sûres : identité/version applicative, profils résolus et compte de providers. Aucun endpoint, header, API key, payload provider ou prix n'est journalisé comme diagnostic brut.
|
|
|
|
## Config et profils
|
|
|
|
Le composite dédié est :
|
|
|
|
```text
|
|
cfg.composite.ksp-app-solprices-desk
|
|
```
|
|
|
|
Il compose :
|
|
|
|
```text
|
|
logging
|
|
Off-chain Transport
|
|
```
|
|
|
|
Profils committed :
|
|
|
|
```text
|
|
public_keyless profil par défaut
|
|
all_free modes gratuits incluant les credentials Config requis
|
|
tests profil déterministe de composition
|
|
```
|
|
|
|
Le frontend ne sélectionne ni provider concret ni secret. La résolution des credentials reste entièrement possédée par Config.
|
|
|
|
## Frontières desktop
|
|
|
|
Le frontend utilise uniquement :
|
|
|
|
```text
|
|
core:default
|
|
tracing:default
|
|
```
|
|
|
|
Il ne possède aucun accès direct filesystem, HTTP, shell ou persistence navigateur. Les refresh passent uniquement par les commands Rust centralisées dans `tauri.rs`.
|
|
|
|
Il n'existe aucun polling, auto-refresh ou scheduler prix dans le Desk. Les deadlines/cooldowns affichés proviennent de `ksp-offchain-transport-lib`.
|
|
|
|
## Ports et build
|
|
|
|
Les ports réservés sont :
|
|
|
|
```text
|
|
Vite HTTP : 1434
|
|
Vite WS : 1435
|
|
```
|
|
|
|
Le frontend build est isolé sous :
|
|
|
|
```text
|
|
builds/khadhroony-solana-project/ksp-app-solprices-desk/dist
|
|
```
|
|
|
|
La version du binaire et des bundles Tauri provient de la version Cargo résolue. `tauri.conf.json` ne duplique pas cette version ; `package.json` reste un manifeste frontend privé non autoritatif pour la release KSP.
|
|
|
|
## Runtime packagé
|
|
|
|
Les onze resources Config/Schemas enregistrées sont embarquées dans le bundle. Au démarrage release, `ksp-config-lib` prépare la racine KSP user-writable commune, seed les documents absents, resynchronise les schemas et ne bundle jamais `.env`.
|
|
|
|
## Développement et validation
|
|
|
|
```bash
|
|
(cd crates/ksp-app-solprices-desk && cargo tauri dev)
|
|
```
|
|
|
|
Gate Rust courant :
|
|
|
|
```bash
|
|
cargo fmt --all
|
|
python3 scripts/audit_rust_workspace_rules.py
|
|
cargo check --workspace
|
|
cargo clippy --workspace --all-targets
|
|
cargo test -p ksp-app-solprices-desk
|
|
cargo test --workspace
|
|
```
|
|
|
|
Smoke live de composition opt-in :
|
|
|
|
```bash
|
|
cargo test -p ksp-app-solprices-desk --test market_price_composition_live_smoke -- --ignored --nocapture
|
|
```
|
|
|
|
Build production :
|
|
|
|
```bash
|
|
(cd crates/ksp-app-solprices-desk && cargo tauri build)
|
|
```
|
|
|
|
Voir également [`USAGE.md`](USAGE.md), [`../ksp-offchain-transport-lib/README.md`](../ksp-offchain-transport-lib/README.md) et [`../../docs/validation/015-V0_2_12_SOL_PRICES_DESK.md`](../../docs/validation/015-V0_2_12_SOL_PRICES_DESK.md).
|