feat(onboarding): Transactions card suggests Add as keyword, Budget card names leaves and the Annual column (#430) #442
No reviewers
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#442
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-430-cards-transactions-budget"
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?
Generated autonomously by /autopilot run of 2026-10-13
Link 5 of 8 of milestone
planned-2026-10-12-retours-onboarding-v0171, stacked on #441 (issue-426-source-name-folder).What
uncategorized,all) name the context menu's “Add as keyword” throughStepCardText.labels(addKeyword: "reports.keyword.addFromTransaction"), explain what the keyword does, and carry the advice of D18 (keep a merchant-specific word, not “PAYMENT”; uncheck the transactions already correctly categorized). The keyword dialog is unchanged.collapsed,flat) say only last-level rows (without a chevron) take an amount and what the “Annual” column does, throughannual: "budget.annual". “Expand all” is now quoted (D11).docs.gettingStarted.subsections[0].steps[3]FR/EN anddocs/guide-utilisateur.md) gets the sentence of the issue.Files
src/utils/onboardingPath.ts(labels + doc comments)src/utils/onboardingPath.test.ts,src/utils/onboardingPath.locales.test.ts(extended to the Transactions and Budget cards: quotes around each control interpolation, model labels = interpolations of the real sentence)src/pages/TransactionsPage.render.test.tsxsrc/services/categorizationService.test.ts(pinsis_manually_categorized = 1for the keyword dialog)src/i18n/locales/fr.json,src/i18n/locales/en.jsondocs/guide-utilisateur.md,docs/qa-onboarding.htmlCHANGELOG.md,CHANGELOG.fr.mdNo migration, no Rust, no network call.
Decisions
categorizationService.test.ts(outside the issue's file list) to prove the criterion “the step still checks off through the keyword dialog”.guided-empty-profile,guided-fallback) quoted the previous card sentences: their quotes updated.docs/architecture.mdunchanged (still accurate).Mutation proofs
Targeted tests:
src/utils/onboardingPath*,TransactionsPage.render.test.tsx,categorizationService.test.ts(116 tests). Each mutation applied alone after the implementation commit, restored withgit checkout --.addKeywordremoved from theuncategorizedlabelsaddKeywordremoved from thealllabelsannualremoved from thecollapsedlabelsannualremoved from theflatlabelsflat: quotes around{{annual}}removedflat: previous sentence restored (no leaves, no Annual)is_manually_categorized = 0all: advice on the word and the boxes droppeduncategorized: quotes around{{addKeyword}}removedValidation
npm run buildgreen;npm test127 files / 2126 tests green.🤖 Generated with Claude Code
Self-review (autopilot worker, not an independent review) — verdict: APPROVE
Diff read in full against
issue-426-source-name-folder(11 files, head6b91370).Acceptance criteria
StepCardText.labels, and carries the advice on the word and the boxes (D18). The step still checks off through the dialog:applyKeywordWithReassignmentwritesis_manually_categorized = 1, now pinned by a test (M7 red). The dialog is untouched.collapsedandflat(M3, M4, M6 red).Checks
filterstays unquoted ({{filter, lowercase}}), as the convention says.architecture.mdstill accurate.For the reviewer
categorizationService.test.tsis outside the issue's file list (added to prove the second half of criterion 1).CI lue par l'orchestrateur sur la tête
6b91370: PR Check — Frontend run 548 vert (build OK, vitest 127 fichiers / 2126 tests, comptes égaux à ceux du worker). Pas de job Rust attendu.Generated autonomously by /autopilot run of 2026-10-13
Revue
/pr-review— PR #442 (#430), tête6b91370contreissue-426-source-name-folderVerdict : APPROVE
Résumé. Les quatre phrases des cartes Transactions et Budget et la phrase du guide sont celles de l'issue mot pour mot, en FR et en EN (comparaison programmatique du tableau du corps de #430 contre
fr.json/en.json: 10/10 identiques). Les contrôles cités passent parStepCardText.labelsvers des clés qui existent (reports.keyword.addFromTransaction= « Ajouter comme mot-clé » / “Add as keyword”,budget.annual= « Annuel » / “Annual”, celle-ci étant bien l'en-tête de la colonne dansBudgetTable.tsx), les cibles de mise en évidence sont inchangées et la boîte du mot-clé n'est pas touchée.Vérifications rejouées par le relecteur
Worktree détaché sur
6b91370,npm cipropre :npm run buildvert ;vitest run: 127 fichiers, 2126 tests verts.PR Check — Frontendensuccess(statut agrégé).Mutations du relecteur (une à la fois, restaurées par
git checkout --, arbre propre vérifié à la fin) :all: guillemets droits\"{{addKeyword}}\"au lieu de “ ”collapsed: guillemets retirés autour de{{expand}}(D11)flat: « Annuel » recopié en dur à la place de{{annual}}uncategorized:addKeywordpointé vers une clé erronée (reports.keyword.add)Une première tentative de R1 avait cassé le JSON (guillemet non échappé) : le fichier ne se chargeait plus, ce n'était pas une preuve ; refaite avec un échappement valide, elle rougit.
Le test ajouté dans
categorizationService.test.tsépingleis_manually_categorized = 1sur lesUPDATEdeapplyKeywordWithReassignment, ce qui porte le critère « l'étape se coche toujours par la boîte du mot-clé » (M7 de l'auteur le confirme).Suggestions (non bloquantes)
ResolvesniFixes; la timeline de #430 montre unpull_refde #442 enref_action: none. Seul le message du commit63d8ba7contientResolves #430. Un merge ff de la pile (/merge-stack) fermera bien l'issue par le commit ; un merge par l'interface qui ne lit que le corps ne la fermerait pas. Même forme sur #439 et #441, donc cohérent dans la pile, à garder en tête au merge.docs.gettingStarted…steps[3]etguide-utilisateur.md) n'a pas de test ; pour un texte de documentation, c'est acceptable.Actions faites
status:review→status:approved.git worktree remove), script de mutation et journal de build effacés du scratchpad.