Labels
No labels
autopilot:pending-human
source:analyste
source:defenseur
source:human
source:medic
status:approved
status:blocked
status:in-progress
status:needs-clarification
status:needs-fix
status:ready
status:review
status:triage
type:bug
type:feature
type:infra
type:refactor
type:schema
type:security
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: maximus/Simpl-Resultat#187
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Suivi post-merge — milestone overnight-2026-05-01-bilan-anomalies-174
Améliorations identifiées par les 4 reviews adversariales (
/pr-review) sur les PRs #182, #183, #184, #185 — toutes APPROVE, 12 suggestions non bloquantes capturées ici pour traitement ultérieur.Statut post-/analyze (2026-05-03)
consolidated_schema.sql(tableuser_preferences)/balancesrc/pages/BalancePage.tsx:177-266src/services/balance.service.ts:515-560(proposeStarterAccounts)archived_atnon filtre dans collisionssrc/services/balance.service.ts:482-503(getStarterCollisions)<Step>recoitten propsrc/components/balance/BalanceOnboardingCard.tsx:115-127collision_tooltipStarterAccountsModal.tsx:151,169(1 seult()reutilise)return_calculator.rssrc-tauri/src/commands/return_calculator.rs:12-13kindByAccountIdcommentaire mortA faire dans cette PR : S1, S2, S3, S4, S5, S7 (6 suggestions, lot unique).
Hors scope : S6 (deja fait), S8 (backlog), S9 (obsolete).
Decisions retenues
balance_starter_proposeddansconsolidated_schema.sql(solution data-level, nouveaux profils ne verront jamais le modal)SELECT EXISTS WHERE name=? AND balance_category_id=?avant chaque INSERT, dans le meme BEGIN). Pas de migration SQL.chore(balance): post-merge cleanup #182-#185avec ~6 commits atomiques.Plan de commits
fix(balance): exclude archived accounts from starter collisions (S4)— ajoutearchived_at IS NULLdansgetStarterCollisionsfix(balance): re-check collisions in-transaction in proposeStarterAccounts (S3)— defense in-depth in-txnfix(balance): pre-seed balance_starter_proposed in schema for new profiles (S1)— migration v12 + update consolidated_schema.sqlfix(balance): hide period/chart/table when no accounts on /balance (S2)— wrapper sous le meme guard queBalanceOnboardingCardrefactor(balance): use useTranslation directly in BalanceOnboardingCard.Step (S5)— alignement patternfix(rust): convert formula doctest fence to text in return_calculator (S7)—\``text` au lieu de bloc RustChaque commit reference l'ID de suggestion (S1-S7) pour tracabilite.
Surface de test
balance.service.test.ts(couvregetStarterCollisions+proposeStarterAccounts),BalanceOnboardingCard.test.tsx,useBalanceOverview.test.tsgetStarterCollisionsignore les comptes archivesproposeStarterAccountsne cree pas de doublon meme si appele deux fois en parallele (mock conflict)cargo test --docdoit passer apres le fixCriteres d'acceptation
getStarterCollisionsfiltrearchived_at IS NULLproposeStarterAccountsre-verifie chaque collision avant INSERT (in-txn)balance_starter_proposedpour nouveaux profils +consolidated_schema.sqlaligne/balancene rend ni period selector ni chart ni accounts table quandaccountsCount === 0BalanceOnboardingCard.SteputiliseuseTranslation()directementcargo test --doc --manifest-path src-tauri/Cargo.tomlpasse (doctest formula bloc entext)### Fixed/### Corrigé(1 entree resumant les 6 fixes)npm test+npm run build+cargo checkvertsComplexite estimee
Petit — 6 changements coherents thematiquement, ~30 min effectif + CI.
Suggestions actionnables originales (priorité haute → basse)
UX — friction sur nouveaux profils (PR #185 suggestion 1)
Le modal
StarterAccountsModals'ouvre sur les nouveaux profils même quand les 4 starters sont déjà seedés (collisions complètes). Le commentaireBalancePage.tsx:597-600est trompeur. Fix proposé : pré-seederuser_preferences.balance_starter_proposeddansconsolidated_schema.sql(avecaccepted: [<les 4 starter ids>]etshown_at: <date du seed>) OU auto-fermer le modal sur mount si toutes les options sont en collision.UX — empty state empilés (PR #184 suggestion 1)
Quand
accountsCount === 0, le sélecteur de période + le chart + l'accounts table se rendent quand même sous la carte d'onboarding, créant 3 messages d'état vide consécutifs. Wrapper l'ensemble du bloc dans le même guard queBalanceOnboardingCardsimplifierait l'écran.Defense en profondeur — collision starter accounts (PR #185 suggestion 2)
proposeStarterAccountsne re-vérifie pas les collisions à l'intérieur de la transaction. Pas de contrainte UNIQUE sur(name, balance_category_id)non plus. Ajouter un re-check dans la BEGIN ou poser la contrainte UNIQUE.Bug latent — comptes archivés ignorés (PR #185 suggestion 3)
getStarterCollisionsn'exclut pas les comptes avecarchived_at IS NOT NULL. Un compte archivé avec le même nom bloque la re-création même si l'utilisateur a archivé volontairement. Soit filtrerarchived_at IS NULL, soit documenter le comportement.Cosmétique — pattern divergent (PR #184 suggestion 3)
Le sous-composant
<Step>reçoitt: TFunctionen prop alors que les autres composants du repo appellentuseTranslation()directement. Aligner sur le pattern majoritaire.Cosmétique — code dupliqué (PR #185 suggestion 4)
t("balance.starters.collision_tooltip")peut être factorisé en variable locale ou dans une fonction utility si réutilisé.Doctest pre-existing hors scope (note worker #176)
cargo testéchoue sur un doctest danssrc-tauri/src/commands/return_calculator.rs:12-13(formule pseudo-code dans un///rustdoc essaie de compiler). Pre-existing depuis le commit531624b. Solution : convertir le bloc entextouignorerustdoc fence.Tests — asserts SQL string-based (PR #182 suggestions)
Plusieurs tests vitest assertent sur des fragments de chaîne SQL (
expect(sql).toMatch(/ROW_NUMBER/)). Pattern fragile mais cohérent avec le reste du fichier. Migration progressive vers des asserts de comportement (résultat de la query) plutôt que de syntaxe quand opportunité se présente.Doc — commentaires (PR #183 suggestions)
kindByAccountIdà nettoyerSource
reports/DAILY-REPORT-2026-05-01.mdreports/autopilot-2026-05-01/decisions-log.md