106 lines
4.6 KiB
Markdown
106 lines
4.6 KiB
Markdown
<!-- file: crates/ksp-app-backfill-desk/README.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# `ksp-app-backfill-desk`
|
|
|
|
`ksp-app-backfill-desk` est l'application desktop spécialisée de contrôle d'un backfill historique `RawTransaction` KSP.
|
|
|
|
Elle reste une couche de composition Tauri : Config sélectionne les profils, Transport possède les endpoints/rôles/retry/rate-limit, Store possède la persistence et le backend, et `ksp-job-backfill-lib` possède découverte, hydratation, frontier/checkpoint et lifecycle du job.
|
|
|
|
## Package
|
|
|
|
```text
|
|
package : ksp-app-backfill-desk
|
|
lib : ksp_app_backfill_desk_lib
|
|
bin : ksp-app-backfill-desk
|
|
```
|
|
|
|
Le binaire est un launcher mince. La bibliothèque applicative possède le bootstrap, l'état Rust single-run, les DTOs Tauri, les commands et le bridge latest-value vers le frontend.
|
|
|
|
## Composition
|
|
|
|
```text
|
|
ksp-config-lib -> composite, profils, secrets et runtime packagé
|
|
ksp-core-lib -> erreurs, Pubkey et registre Program IDs
|
|
ksp-onchain-transport-lib -> HTTP pool, rôles, admission, retry/rate-limit
|
|
ksp-store-lib -> façade Store backend-neutral
|
|
ksp-job-api -> lifecycle Job commun
|
|
ksp-job-backfill-lib -> request/runtime/checkpoint/snapshots Backfill
|
|
ksp-logging-lib -> logging/tracing applicatif
|
|
ksp-app-backfill-desk -> orchestration Tauri + projections sûres
|
|
```
|
|
|
|
L'application ne dépend pas directement de `ksp-store-api`, `ksp-store-postgres-lib`, `tokio-postgres`, `reqwest`, `tonic` ou `yellowstone-grpc-proto`.
|
|
|
|
## Capacités
|
|
|
|
La surface utilisateur comprend :
|
|
|
|
- quatre scopes : latest address, before address, after address et explicit signatures ;
|
|
- engagements `finalized` et `confirmed` ;
|
|
- sélection d'un rôle HTTP logique compatible avec `getSignaturesForAddress` et `getTransaction` ;
|
|
- bornes page/candidats/concurrence validées côté Rust par le contrat Backfill ;
|
|
- validation de la requête avant Start ;
|
|
- un seul run actif ;
|
|
- monitoring latest-value par événement `ksp-backfill-status` avec resynchronisation explicite ;
|
|
- Cancel ciblé par JobId backend et idempotent ;
|
|
- Resume in-session lorsqu'un checkpoint terminal est disponible ;
|
|
- autocomplete libre des Program IDs provenant du registre canonique `ksp-core-lib`.
|
|
|
|
L'autocomplete n'est jamais une allow-list : une adresse Solana valide non enregistrée reste saisissable.
|
|
|
|
## Checkpoint et Resume
|
|
|
|
Le checkpoint concret ne traverse jamais IPC. Le backend conserve uniquement en mémoire Rust le dernier terminal compatible et la requête nécessaire à une reprise dans la même session.
|
|
|
|
Un Resume crée un nouveau JobId backend. `ksp-job-backfill-lib` valide le checkpoint contre la requête d'origine puis le réémet pour ce nouveau Job sans modifier le scope fingerprint ni la frontier. Il n'existe pas de checkpoint durable de Backfill Desk après redémarrage de l'application.
|
|
|
|
## Config et réseaux
|
|
|
|
Le composite dédié est :
|
|
|
|
```text
|
|
cfg.composite.ksp-app-backfill-desk
|
|
```
|
|
|
|
Les profils committed couvrent `mainnet`, `devnet` et `testnet`. Mainnet est le profil par défaut. Transport et Store doivent sélectionner exactement le même réseau avant que la composition soit déclarée ready.
|
|
|
|
Les profils Store committed utilisent actuellement TLS PostgreSQL `disabled`; cette politique de profil n'enlève pas le support `verify_full` du Store/schema.
|
|
|
|
Le frontend ne reçoit jamais URI Store, URL RPC, credential provider, secret Config ou backend physique.
|
|
|
|
## Monitoring et sécurité
|
|
|
|
Le monitoring expose des compteurs et codes sûrs : lifecycle, phase, boundary, candidats, entités/observations, missing/conflicts/holes, concurrence maximale, frontier contiguë, présence de checkpoint et éventuel domain/code d'échec.
|
|
|
|
Il n'expose pas :
|
|
|
|
- payload RAW ;
|
|
- adresse ou signatures de campagne ;
|
|
- checkpoint/cursor concret ;
|
|
- endpoint URL ou credential ;
|
|
- contexte d'erreur arbitraire.
|
|
|
|
Le frontend ne possède ni accès direct filesystem/réseau, ni persistence navigateur de données Backfill. Les capabilities Tauri guest restent `core:default` et `tracing:default`.
|
|
|
|
## Ports et développement
|
|
|
|
```text
|
|
Vite HTTP : 1436
|
|
Vite WS : 1437
|
|
```
|
|
|
|
Lancement :
|
|
|
|
```bash
|
|
(cd crates/ksp-app-backfill-desk && cargo tauri dev)
|
|
```
|
|
|
|
Build production :
|
|
|
|
```bash
|
|
(cd crates/ksp-app-backfill-desk && cargo tauri build)
|
|
```
|
|
|
|
Voir également [`USAGE.md`](USAGE.md), [`../ksp-job-backfill-lib/README.md`](../ksp-job-backfill-lib/README.md), [`../../docs/architecture/009-ACQUISITION_WORKERS_AND_JOBS.md`](../../docs/architecture/009-ACQUISITION_WORKERS_AND_JOBS.md) et [`../../docs/validation/024-V0_3_7_BACKFILL_DESK.md`](../../docs/validation/024-V0_3_7_BACKFILL_DESK.md).
|