v0.2.12-pre.009

This commit is contained in:
2026-08-27 17:18:29 +02:00
parent d3bb026345
commit 233aaf9bd8
15 changed files with 462 additions and 64 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/019-V0_2_12_SOL_PRICES_DESK_PLAN.md -->
<!-- version: 17 -->
<!-- version: 18 -->
# Plan `0.2.12` — SOL Prices Desk + intégration prix Wallet Desk
@@ -250,9 +250,12 @@ Le périmètre Wallet Desk est volontairement réduit après validation complèt
Wallet Desk existing shell
-> Dashboard / Wallet courant
-> Balance SOL existante
-> une seule case “SOL/USD moyen”
-> “SOL/USD moyen”
-> valeur moyenne dérivée du refresh courant
-> N.A. si aucune observation exploitable
-> “Équivalent USD”
-> balance SOL × moyenne du refresh courant, calcul exact côté Rust
-> N.A. si le prix auxiliaire est indisponible
-> bouton Refresh balance existant
-> getBalance On-chain
-> refresh_all Off-chain des providers éligibles
@@ -262,7 +265,7 @@ Wallet Desk existing shell
Aucun inventaire provider, aucune availability détaillée et aucun bouton prix supplémentaire ne sont dupliqués dans Wallet Desk. Les fonctions avancées restent la responsabilité de `ksp-app-solprices-desk`. Le prix auxiliaire suit le lifecycle du refresh de balance existant et n'ajoute aucun nouveau droit VIEW/OWNER.
**Valorisation USD du solde : toujours hors scope `0.2.12`.** La moyenne est seulement affichée comme information SOL/USD ; aucun calcul `balance SOL × prix` n'est introduit.
**Équivalent USD retenu par décision opérateur.** Il reste une projection auxiliaire strictement dérivée du refresh courant : calcul côté Rust sans `f64`, aucun prix canonique/fallback et aucune dépendance supplémentaire du frontend aux providers.
## 9. DTO map retenue
@@ -342,8 +345,8 @@ refresh_wallet_balance
-> en parallèle : MarketPriceService::refresh_all
-> ne garder que les observations réussies du refresh courant
-> moyenne arithmétique backend sans f64, arrondie à 8 décimales maximum
-> WalletBalanceDto { ..., sol_usd_average: Option<String> }
-> une seule case UI “SOL/USD moyen” ou “N.A.”
-> WalletBalanceDto { ..., sol_usd_average: Option<String>, sol_usd_equivalent: Option<String> }
-> UI compacte “SOL/USD moyen” + “Équivalent USD”, ou “N.A.”
```
La branche prix est **auxiliaire/best-effort** : un runtime Off-chain indisponible, zéro observation ou un échec structurel prix ne rend pas `getBalance` invalide. La balance SOL reste autoritative et la projection prix devient `None`.
@@ -444,7 +447,7 @@ Canari obligatoire : `ksp-app-solprices-desk` référence son propre `package.js
| TS-RS | bindings exportés par tests; prix exact en String |
| workspace | fmt + audits + check + clippy + test |
| SOL Prices Desk dev | parcours splash -> table -> row/many/all sur composition réelle |
| Wallet Desk dev | refresh balance + une case moyenne SOL/USD/N.A. + non-régression Wallet |
| Wallet Desk dev | refresh balance + moyenne SOL/USD + équivalent USD/N.A. + non-régression Wallet |
| live composition | un smoke keyless applicatif opt-in suffit; ne réaudite pas les 8 wires |
| production build | `cargo tauri build` crate-local pour SOL Prices Desk puis Wallet Desk |
@@ -459,7 +462,7 @@ OHLCV/historique/chart
SSE/WebSocket prix
consensus/fallback automatique
provider canonique
valorisation USD du solde Wallet
panneau providers détaillé ou commandes prix dédiées dans Wallet Desk
auto-refresh/polling périodique
Store/worker/job prix
éditeur Config dans Price Desk
@@ -555,7 +558,7 @@ Finalisation de la table responsive sans changer le contrat de dispatch : résum
### `pre.008` — Intégration Wallet minimale + recalibrage de clôture
**Statut : réalisé ; corrigé par `pre.008-fix.001`, `pre.008-fix.002` puis `pre.008-fix.003`, gate opérateur final à confirmer.**
**Statut : réalisé ; corrigé par `pre.008-fix.001`, `pre.008-fix.002` puis `pre.008-fix.003`, gate opérateur final PASS.**
Absorption de l'ancien couloir Wallet `pre.009``pre.011` dans une seule tranche : ajout `offchain_transport/public_keyless` au composite Wallet, runtime Off-chain auxiliaire, `refresh_all` lors de `refresh_wallet_balance`, moyenne SOL/USD backend sans `f64` et projection compacte dans Wallet Desk. La correction `fix.002` complète le besoin opérateur réellement attendu : `WalletBalanceDto` expose également un équivalent USD exact calculé côté Rust à partir des lamports et de la moyenne du refresh courant ; Dashboard et Details affichent le prix moyen et l'équivalent ou `N.A.`. Aucun panneau provider, aucune command prix Wallet et aucun provider ID frontend ne sont ajoutés. La tranche réconcilie également le forecast avec cette réduction de scope.
@@ -573,15 +576,15 @@ Correction du dernier écart fonctionnel de la tranche : le refresh produisait b
#### `pre.008-fix.003` — Correction du littéral de canari version dynamique
**Statut : implémenté ; gate opérateur à confirmer.**
**Statut : réalisé ; gate opérateur Cargo/workspace intégralement PASS.**
Le gate de `pre.008-fix.002` confirme le fonctionnement runtime et visuel attendu : Dashboard et Details affichent la moyenne SOL/USD, l'équivalent USD et la version `0.2.12-pre.8.fix.2`. `cargo fmt`, les audits KSP et `cargo check --workspace` passent. Clippy `--all-targets` s'arrête uniquement sur le canari `desktop_contract.rs` : la raw string `r#"..."#` se ferme prématurément sur le fragment `"#appVersionBadge"`. Le fix remplace cette assertion par une chaîne Rust standard correctement échappée, sans modifier le runtime, le frontend ou le calcul prix.
### `pre.009` — Hardening transversal + gate technique/live final
**Statut : planifié.**
**Statut : implémenté ; gate opérateur live/build à confirmer.**
Fusion des anciens hardenings `pre.008`/`pre.012` et du gate `pre.013` : canaris batch hostile/capabilities/resources, non-régression des deux Desks, workspace complet, smoke live keyless de composition, et `cargo tauri build` final des deux applications modifiées. Aucun nouveau comportement métier n'est ouvert.
Fusion des anciens hardenings `pre.008`/`pre.012` et du gate `pre.013` : la sélection batch Price Desk est bornée à `1..=64` avant parsing des IDs opaques, les canaris capabilities/resources/CWD/version/package et provider-neutralité Wallet sont renforcés, et un smoke live opt-in prouve le chemin composite SOL Prices Desk -> Config -> `MarketPriceService::refresh_all` avec au moins une observation keyless. Les métadonnées npm/Tauri des deux Desks modifiés sont synchronisées avec `0.2.12-pre.9` pour les builds de production finaux. Aucun nouveau comportement métier n'est ouvert ; les seuls gates restant opérateur sont le workspace complet, le smoke live et les deux `cargo tauri build` crate-local.
### `pre.010` — Réconciliation documentaire + préparation de publication