128 lines
5.8 KiB
Markdown
128 lines
5.8 KiB
Markdown
<!-- file: deltas/0.3.8/pre.001.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta v0.3.8-pre.1 — audit, brainstorming et planification Store Desk
|
|
|
|
## Base requise
|
|
|
|
```text
|
|
v0.3.7
|
|
workspace.package.version = 0.3.7
|
|
```
|
|
|
|
La source de code est exclusivement l'archive stable KSP v0.3.7 fournie. kbot3 a été extrait séparément et utilisé uniquement comme référence fonctionnelle/UX conformément au prompt 027.
|
|
|
|
## Résumé
|
|
|
|
Cette tranche ouvre v0.3.8 sans scaffold Tauri lourd. Elle vérifie archives/règles, audite Store/API/PostgreSQL, les Desks KSP et DataTables, réaudite les fonctions Store historiques de kbot3, puis fixe capabilities/gaps/screens/tables/pagination/DTO/threat model et sizing.
|
|
|
|
Décision centrale issue du brainstorming pagination :
|
|
|
|
```text
|
|
RawPage cursor/keyset existant = conservé comme primitive canonique machine
|
|
nouvelle pagination inspection = offset + limit + totaux + summaries backend-neutral
|
|
DataTables serverSide = consommateur de la primitive inspection via Tauri invoke
|
|
pagination visible = UNE SEULE, le pager DataTables
|
|
```
|
|
|
|
Cette décision évite la double pagination kbot3 sans sacrifier la pagination keyset existante. L'offset/count est confiné à une capability d'inspection réutilisable hors Tauri et à son implémentation backend privée ; aucun DTO DataTables ni SQL n'entre dans l'application ou le contrat RAW canonique.
|
|
|
|
## Recalibrage explicite du prompt 027
|
|
|
|
Le prompt supposait initialement une pagination Store cursor distincte d'un paging DataTables local, avec possibilité `paging: false`. `pre.001` avait précisément pour mission de trancher cette question avant planification. Le résultat du brainstorming remplace cette hypothèse UI par :
|
|
|
|
```text
|
|
séparation des contrats oui
|
|
séparation visuelle des pagers non
|
|
```
|
|
|
|
Les frontières normatives restent inchangées : Store Desk dépend uniquement de `ksp-store-lib`, aucune dépendance backend/SQL, Config reste owner des targets/secrets, V1 reste read-only et kbot3 reste uniquement fonctionnel.
|
|
|
|
## Vérification des archives
|
|
|
|
- KSP v0.3.7 : SHA-256 `d57132960e4c280a67e59bea02ce08a61665890bdfb6ef16b7faf1b3c57070ae`, 1 702 entrées, ZIP propre ;
|
|
- kbot3 : SHA-256 `ee47643b9f8b582ee8db97b2381ec107e45aef8c009fee44757531514615d318`, 2 501 entrées, ZIP propre ;
|
|
- aucune entrée absolue, traversal, séparateur inversé ou lien symbolique ZIP ;
|
|
- `workspace.package.version = 0.3.7` et `deltas/0.3.7/rel.001.md` confirmés ;
|
|
- Store API/lib/PostgreSQL et Backfill Desk stable confirmés.
|
|
|
|
## Audits locaux avant modification
|
|
|
|
```text
|
|
General Rust rule audit: clean
|
|
Rust export completeness audit: 0 candidate(s)
|
|
KSP workspace Rust rule audit: clean
|
|
Markdown table audit: clean (301 table(s), 687 file(s))
|
|
```
|
|
|
|
`cargo` est absent de l'environnement d'assemblage. `cargo fmt/check/clippy/test` ne sont donc pas déclarés PASS localement. Le journal opérateur fourni rapporte un gate stable v0.3.7 complet et reste une preuve externe de baseline.
|
|
|
|
## Audits post-modification
|
|
|
|
```text
|
|
General Rust rule audit: clean
|
|
Rust export completeness audit: 0 candidate(s)
|
|
KSP workspace Rust rule audit: clean
|
|
Markdown table audit: clean (283 table(s), 153 file(s))
|
|
```
|
|
|
|
Le diff contre la base contient exactement `Cargo.toml`, le plan, la validation et le delta `pre.001`, sans suppression. Les gates Cargo restent non exécutés localement faute de binaire `cargo`.
|
|
|
|
## Architecture d'inspection retenue
|
|
|
|
Contrats candidats à matérialiser à partir de `pre.003` :
|
|
|
|
```text
|
|
RawInspectionPageRequest { offset, limit }
|
|
RawInspectionPage<T> { items, total_items, filtered_items }
|
|
RawTransactionInspectionQuery
|
|
RawAccountStateInspectionQuery
|
|
RawTransactionSummary
|
|
RawAccountStateSummary
|
|
RawTransactionInspectionRead
|
|
RawAccountStateInspectionRead
|
|
```
|
|
|
|
Les traits existants `RawTransactionRead` / `RawAccountStateRead` restent inchangés afin de ne pas casser les implémentations externes et de préserver le chemin keyset.
|
|
|
|
DataTables V1 : `serverSide: true`, `ajax` fonction custom vers Tauri, `searching: false`, page length 25/50/100, ordre canonique Store seulement. `recordsTotal` / `recordsFiltered` proviennent des counts exacts Store. Aucun second pager n'est rendu.
|
|
|
|
## Décisions complémentaires
|
|
|
|
- `GABARIT STORE DESK = KSP` ; aucune source de shell/package/assets/code depuis kbot3 ;
|
|
- ports Vite/HMR : 1438/1439 ;
|
|
- dépendances KSP V1 : Config + Logging + Store facade ; aucun Store API/PostgreSQL direct ;
|
|
- npm : socle KSP + `datatables.net-bs5 ^3.0` ; Select reporté faute de fonction réelle ;
|
|
- audit externe du 2026-09-03 : DataTables 3.0.3 / Select 4.0.1 ; ranges KSP conservés ;
|
|
- composite prévu : Logging + Store uniquement ;
|
|
- navigation initiale : Overview / RAW Transactions / RAW Accounts ;
|
|
- observations intégrées aux détails puis listing ajouté après extension Store backend-neutral ;
|
|
- rows principales alimentées par summaries Store, sans N+1 ni gros bytes ;
|
|
- `u64` projetés comme chaînes décimales IPC ; counts vérifiés JS-safe avant DataTables ;
|
|
- V1 strictement read-only.
|
|
|
|
## Fichiers ajoutés
|
|
|
|
- `docs/plans/029-V0_3_8_STORE_DESK_PLAN.md` ;
|
|
- `docs/validation/025-V0_3_8_STORE_DESK.md` ;
|
|
- `deltas/0.3.8/pre.001.md`.
|
|
|
|
## Fichier modifié
|
|
|
|
- `Cargo.toml` : header `444` vers `445`, version workspace `0.3.7` vers `0.3.8-pre.1` conformément à `VER-ID-009`.
|
|
|
|
## Non inclus
|
|
|
|
- aucune crate `ksp-app-store-desk` encore créée ;
|
|
- aucun Rust/TypeScript/HTML/SASS applicatif ;
|
|
- aucun composite runtime créé ;
|
|
- aucun SQL ou changement backend ;
|
|
- aucune capability Store encore ajoutée ;
|
|
- aucune reprise de code kbot3 ;
|
|
- aucune modification CHANGELOG/ROADMAP ;
|
|
- aucune publication stable.
|
|
|
|
## Suite prévue
|
|
|
|
`pre.002` crée uniquement le scaffold KSP de `ksp-app-store-desk`. `pre.003` introduit ensuite les contrats backend-neutral d'inspection ; `pre.004` et `pre.005` implémentent respectivement les vertical slices PostgreSQL Transaction et Account avant le branchement des tables DataTables métier.
|