feat(balance): conversion des comptes cotes existants (migration v16) #211

Closed
opened 2026-06-04 01:36:42 +00:00 by maximus · 0 comments
Owner

Convertit chaque compte cote 1-titre existant en compte detaille a 1 position, sans perte (decision Q3). Migration v16 additive, gardee, atomique (transaction sqlx).

Fichiers concernes

  • src-tauri/src/lib.rs (migration v16)
  • tests de migration (src-tauri)

Depends on

Criteres d acceptation

  • v16 cree un balance_securities par symbole de compte cote (normalise upper/trim), dedup via ON CONFLICT DO NOTHING
  • Un holding miroir cree par ligne priced existante (qty/price/value/price_source/price_fetched_at)
  • qty/unit_price des lignes agregees mises a NULL UNIQUEMENT si un holding existe pour la ligne (pas de perte sur priced a asset_type NULL)
  • Comptes priced sans asset_type ou sans symbol : laisses intacts (non convertis)
  • Garde d idempotence (re-execution = no-op) facon v13 + assertion post-migration : toute ligne NULLee a >=1 holding
  • Test integration sur DB peuplee : compte cote 1-titre -> detailed 1-position, valeurs et historique preserves ; rollback si echec injecte

Review caveats

  • SEC (rouge, RESOLU): ne pas NULLer qty/price sans holding cree — UPDATE garde sur presence d un holding + assertion post-migration.
  • ARCH (jaune): gardes d idempotence facon v13 (EXISTS, commentaire).

Decisions prises ce soir

  • (revision) migration purement additive, atomicite sqlx (1 transaction par migration).

Spec source

spec-plan-bilan-detail-titres.md (+ spec-decisions-bilan-detail-titres.md)

Convertit chaque compte cote 1-titre existant en compte detaille a 1 position, sans perte (decision Q3). Migration v16 additive, gardee, atomique (transaction sqlx). ## Fichiers concernes - src-tauri/src/lib.rs (migration v16) - tests de migration (src-tauri) ## Depends on - #210 ## Criteres d acceptation - [ ] v16 cree un balance_securities par symbole de compte cote (normalise upper/trim), dedup via ON CONFLICT DO NOTHING - [ ] Un holding miroir cree par ligne priced existante (qty/price/value/price_source/price_fetched_at) - [ ] qty/unit_price des lignes agregees mises a NULL UNIQUEMENT si un holding existe pour la ligne (pas de perte sur priced a asset_type NULL) - [ ] Comptes priced sans asset_type ou sans symbol : laisses intacts (non convertis) - [ ] Garde d idempotence (re-execution = no-op) facon v13 + assertion post-migration : toute ligne NULLee a >=1 holding - [ ] Test integration sur DB peuplee : compte cote 1-titre -> detailed 1-position, valeurs et historique preserves ; rollback si echec injecte ## Review caveats - SEC (rouge, RESOLU): ne pas NULLer qty/price sans holding cree — UPDATE garde sur presence d un holding + assertion post-migration. - ARCH (jaune): gardes d idempotence facon v13 (EXISTS, commentaire). ## Decisions prises ce soir - (revision) migration purement additive, atomicite sqlx (1 transaction par migration). ## Spec source spec-plan-bilan-detail-titres.md (+ spec-decisions-bilan-detail-titres.md)
maximus added this to the overnight-2026-06-05-bilan-detail-titres milestone 2026-06-04 01:36:42 +00:00
maximus added the
status:ready
type:feature
source:human
labels 2026-06-04 01:36:42 +00:00
maximus added
type:schema
and removed
type:feature
labels 2026-06-04 01:38:20 +00:00
maximus added
status:review
and removed
status:ready
labels 2026-06-06 17:01:29 +00:00
maximus added
status:needs-fix
and removed
status:review
labels 2026-06-06 19:38:11 +00:00
maximus added
status:approved
and removed
status:needs-fix
labels 2026-06-06 20:36:28 +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#211
No description provided.