feat(balance): data layer — vehicle_type + custom_label migrations, starters, service [Etape 1] #202

Closed
opened 2026-06-01 00:14:53 +00:00 by maximus · 0 comments
Owner

Couche donnees de l'Etape 1 du chantier Bilan (audit docs/audit-bilan-2026-05.md). Atome indivisible : migrations v12+v13, refonte des comptes starter, types et service CRUD+validation dans une seule PR (couplage lib.rs / balance.service.ts).

WARNING vehicle_type = enveloppe fiscale (unregistered,tfsa,rrsp,rrif,fhsa,resp), PAS un vehicule automobile.
WARNING Ne jamais modifier une migration <= v11 (checksum SHA-384 sqlx) - uniquement v12/v13 neuves.

Fichiers concernes

  • src-tauri/src/lib.rs (V12_SQL + V13_SQL + tests chaine v9->v13)
  • src-tauri/src/database/consolidated_schema.sql (colonnes + seeds reclasses + starters CELI/REER -> other + vehicle_type)
  • src/shared/types/index.ts (BalanceVehicleType, custom_label, vehicle_type, types joints, Input types)
  • src/services/balance.service.ts (normalizeVehicleType, vehicle_type_invalid, INSERT/UPDATE + SELECT/JOIN etendus, STARTER_ACCOUNTS/proposeStarterAccounts/getStarterCollisions)
  • src/services/balance.service.test.ts, src/components/balance/StarterAccountsModal.test.tsx

Depends on

  • (aucune)

Criteres d'acceptation

  • cargo test vert ; AUCUN diff sur les migrations <= v11
  • Test Rust chaine v9->v13 : comptes ex-tfsa/rrsp re-rattaches a other, vehicle_type conserve, snapshot_lines identiques avant/apres, seeds tfsa/rrsp is_active=0
  • Test Rust consolidated complet : init profil neuf OK, 4 comptes starter, 0 balance_category_id NULL, 5 categories actives
  • CHECK vehicle_type rejette une valeur hors enum ; cash backfille en vehicle_type NULL
  • Editer un compte/categorie ne perd pas vehicle_type/custom_label (SELECT etendus)
  • npm test (service) vert

Review caveats

  • [CRITICAL] Profil neuf casse si starters non refondus -> test consolidated obligatoire
  • [CRITICAL] Starters service reinjectent tfsa/rrsp -> categoryKey=other + filtre is_active=1
  • [HIGH] UPDATE efface les colonnes si absentes du SELECT -> SELECT/JOIN etendus
  • [HIGH] Pas de Down -> migrations idempotentes + conditionnelles (EXISTS other, is_seed=1)
  • [MEDIUM] Backfill defensif bug I (i18n_key ecrase -> custom_label, cle restauree)

Decisions prises ce soir

  • vehicle_type nullable ; enum reduit (unregistered/tfsa/rrsp/rrif/fhsa/resp)
  • cash -> vehicle NULL ; CELI/REER -> classe Autres + vehicle tfsa/rrsp
  • custom_label sur toutes les categories

Spec source

spec-decisions-bilan-axe-vehicule.md + spec-plan-bilan-axe-vehicule.md

Couche donnees de l'Etape 1 du chantier Bilan (audit `docs/audit-bilan-2026-05.md`). **Atome indivisible** : migrations v12+v13, refonte des comptes starter, types et service CRUD+validation dans une seule PR (couplage lib.rs / balance.service.ts). WARNING `vehicle_type` = **enveloppe fiscale** (`unregistered,tfsa,rrsp,rrif,fhsa,resp`), PAS un vehicule automobile. WARNING **Ne jamais modifier une migration <= v11** (checksum SHA-384 sqlx) - uniquement v12/v13 neuves. ## Fichiers concernes - src-tauri/src/lib.rs (V12_SQL + V13_SQL + tests chaine v9->v13) - src-tauri/src/database/consolidated_schema.sql (colonnes + seeds reclasses + starters CELI/REER -> other + vehicle_type) - src/shared/types/index.ts (BalanceVehicleType, custom_label, vehicle_type, types joints, Input types) - src/services/balance.service.ts (normalizeVehicleType, vehicle_type_invalid, INSERT/UPDATE + SELECT/JOIN etendus, STARTER_ACCOUNTS/proposeStarterAccounts/getStarterCollisions) - src/services/balance.service.test.ts, src/components/balance/StarterAccountsModal.test.tsx ## Depends on - (aucune) ## Criteres d'acceptation - [ ] cargo test vert ; AUCUN diff sur les migrations <= v11 - [ ] Test Rust chaine v9->v13 : comptes ex-tfsa/rrsp re-rattaches a `other`, vehicle_type conserve, snapshot_lines identiques avant/apres, seeds tfsa/rrsp is_active=0 - [ ] Test Rust consolidated complet : init profil neuf OK, 4 comptes starter, 0 balance_category_id NULL, 5 categories actives - [ ] CHECK vehicle_type rejette une valeur hors enum ; cash backfille en vehicle_type NULL - [ ] Editer un compte/categorie ne perd pas vehicle_type/custom_label (SELECT etendus) - [ ] npm test (service) vert ## Review caveats - [CRITICAL] Profil neuf casse si starters non refondus -> test consolidated obligatoire - [CRITICAL] Starters service reinjectent tfsa/rrsp -> categoryKey=other + filtre is_active=1 - [HIGH] UPDATE efface les colonnes si absentes du SELECT -> SELECT/JOIN etendus - [HIGH] Pas de Down -> migrations idempotentes + conditionnelles (EXISTS other, is_seed=1) - [MEDIUM] Backfill defensif bug I (i18n_key ecrase -> custom_label, cle restauree) ## Decisions prises ce soir - vehicle_type nullable ; enum reduit (unregistered/tfsa/rrsp/rrif/fhsa/resp) - cash -> vehicle NULL ; CELI/REER -> classe Autres + vehicle tfsa/rrsp - custom_label sur toutes les categories ## Spec source spec-decisions-bilan-axe-vehicule.md + spec-plan-bilan-axe-vehicule.md
maximus added this to the overnight-2026-06-01-bilan-axe-vehicule milestone 2026-06-01 00:14:53 +00:00
maximus added the
status:ready
type:schema
source:human
labels 2026-06-01 00:14:53 +00:00
maximus added
status:in-progress
and removed
status:ready
labels 2026-06-02 00:23:16 +00:00
maximus added
status:approved
and removed
status:in-progress
labels 2026-06-02 00:42:54 +00:00
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: maximus/Simpl-Resultat#202
No description provided.