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#446
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?
Contexte
Suivis non bloquants des huit
/pr-reviewAPPROVE de la pile #438 → #445 (milestoneplanned-2026-10-12-retours-onboarding-v0171, mergée en avance rapide le 2026-10-15,main934bcbf). Rien de bloquant : épingles manquantes, textes à reprendre, dérives de doc. Chaque point cite la revue qui l'a relevé.Analyse (2026-10-16,
maind8037be)Points du corps d'origine retirés après lecture du code :
nextStep(src/utils/onboardingPath.ts:24-26) prend la première ligne nilocked, nidone, niskipped, et les deux étapes de visite sontlockedtant quevisitStepsInitializedest faux (src/utils/onboardingChecklist.ts:55,72,80).Resolves #Nen tête du corps de PR, commit avant la première mutation) : les deux règles sont déjà dans le gabarit worker de/autopilot(SKILL.mdl. 148-159 et 181).src/services/budgetService.ts(buildSubGroup, l. 375-405 : un sous-groupe sans descendant saisissable est retiré, pas affiché). Hors périmètre tant qu'un cas concret n'est pas fourni ; à rouvrir avec un arbre reproductible.Points confirmés, avec l'état exact du code :
fr.jsoneten.json.DocsContent.locales.test.tsne couvre quedocs.*(longueurs et ids),onboardingPath.locales.test.tsles interpolations de trois phrases,entitlements.test.ts:134-153les clésupsell.features,i18n-mock-guard.test.tsles fauxt. Les deux arbres ont 1412 feuilles identiques aujourd'hui, sans garde.reorderRows: les cinq tests desrc/utils/reorderRows.test.tscouvrent une feuille après un sous-groupe déplié ; aucun sous-groupe replié (ligneis_parentsans ligne enfant) suivi d'une feuille sœur.OnboardingBanner.tsx:104-106n'affiche le point (spanaria-hiddenh-1 w-1) que sitotalKnown && nextStep, avectotalKnown = budgetReady && visitStepsInitialized(l. 73). Le casvisitStepsInitialized=falseexiste (OnboardingBanner.render.test.tsx:127) mais n'asserte que l'absence du compteur.SET_IMPORT_FOLDER(src/hooks/useImportWizard.ts:219-221) ne vide nirootFilesniscannedSources; seulSET_SCANNED_SOURCESles remplace. Entre le changement de dossier et la fin du nouveau scan,ImportPage(l. 62-63) affiche l'avertissement des fichiers à la racine de l'ancien dossier sous le nom du nouveau. Aucun test ne fige ce comportement.HubReportNavCardpasseonNavigateauonClickduLink; React tireonClicksur Ctrl+clic, pas sur le clic du milieu (onAuxClick). Sans onglets dans le webview Tauri, le risque reste théorique : à documenter, pas à corriger.docs.dashboard.features[6](FR l. 981) dit « huit étapes qui se cochent d'elles-mêmes » ;reports.help.tips[2]et[3]nomment « Tendances mensuelles » et « Catégories dans le temps », noms d'onglets disparus, alors que les cartes s'appellentreports.hub.trends(« Tendances ») etreports.hub.categoryZoom(« Analyse par catégorie »). La puce[0]nomme déjà les cinq rapports..tsxhors tests soussrc/components(balance 12, import 18, reports 35, settings 17, shared 13…) ;docs/architecture.md:29dit 61,CLAUDE.md:41dit 53 ;architecture.md:567dit « 4 cartes de navigation » pour/reports, il y en a 5.Travail à faire
Tests et épingles
fr.jsoneten.json(import JSON statique, commeDocsContent.locales.test.ts:13-14) et compare les deux ensembles de clés triés, avec les clés manquantes dans le message d'échec. Mutation : retirerimport.config.sourceNameHintdeen.jsondoit rougir. Emplacement proposé :src/i18n/locales.keys.test.ts.reorderRows: un test « sous-groupe replié suivi d'une feuille sœur », par exemple[sub("A",0), sub("Vide",1), leaf("z",1)]avecsubtotalsOnTop=false; ordre attendu à établir en l'exécutant (présuméVide, z, A), puis une variante suivie d'une racine sœur.visitStepsInitialized=falsedeOnboardingBanner.render.test.tsx:127, asserter l'absence duspanh-1 w-1, et sa présence dans un castotalKnownavecnextStep. Mutation :totalKnown = budgetReadyseul doit rougir.SET_IMPORT_FOLDERviderootFiles(hypothèse retenue par l'analyse, le point ne dépendant d'aucune décision produit) ; test du reducer dansuseImportWizard.test.tsà côté de « a scan error leaves the root files of the last scan in place » (l. 216). Vider aussiscannedSourcesseulement si l'état vide deImportPagene clignote pas pendant le scan, sinon le documenter comme comportement antérieur.Textes (validés par Max le 2026-10-16)
docs.dashboard.features[6]FR : « Carte d'accueil d'un profil sans transaction, avec la liste de démarrage : huit étapes, cochées selon vos données ou par « J'ai compris » pour les visites, et un bouton « Masquer » ». EN aligné.reports.help.tips[2]FR : « Tendances montre vos revenus et dépenses mois par mois sur 12 mois » ; EN : « Trends shows your income and expenses month by month over 12 months ».reports.help.tips[3]FR : « Analyse par catégorie suit l'évolution d'une catégorie dans le temps » ; EN : « Category Analysis tracks how a single category evolves over time ».docs.*ou dans l'aide de page : vérifier queDocsContent.locales.test.tsetPageHelprestent verts.Documentation
docs/architecture.md:567: « 5 cartes de navigation » (Faits saillants, Tendances, Comparables, Analyse par catégorie, Cartes).docs/architecture.md:29etCLAUDE.md:41: compte des composants recalculé (135 au 2026-10-16) et par domaine à la ligne 30 (balance 12, pas 8).docs/architecture.md(section onboarding ou Rapports) : Ctrl+clic sur la carte Tendances coche l'étape « Parcourir les rapports » ; sans onglets dans le webview, sans effet visible.Fichiers concernés
src/i18n/locales/fr.json,src/i18n/locales/en.json: textes ; nouveau testsrc/i18n/locales.keys.test.tssrc/utils/reorderRows.test.tssrc/components/onboarding/OnboardingBanner.render.test.tsxsrc/hooks/useImportWizard.ts(l. 219-221),src/hooks/useImportWizard.test.tsdocs/architecture.md,CLAUDE.mdSurface de test
DocsContent.locales.test.ts,onboardingPath.locales.test.ts,reorderRows.test.ts,OnboardingBanner.render.test.tsx,useImportWizard.test.ts,ImportPage.render.test.tsx:307-367.Critères d'acceptation
npm test, mutation citée dans la PR.reorderRows: sous-groupe replié suivi d'une feuille sœur épinglé.totalKnown = budgetReadyrouge.SET_IMPORT_FOLDER,rootFilesest vide jusqu'au prochain scan, test du reducer.architecture.mdetCLAUDE.mdà jour (5 cartes, compte des composants).Vérifications manuelles dues (dans l'app, avant la prochaine release)
Cas de la section « Retours de la v0.17.1 » de
docs/qa-onboarding.htmlet parcours guidé à huit étapes, en particulierv0171-import-source-reopen,v0171-budget-card-leaves, l'encadré « Structure attendue » dans les deux thèmes, et la première ouverture d'un profil qui avait fini le parcours. Hors de cette issue, suivies dansSTATE.md(Blockers).Complexité
Medium (volume, pas de difficulté).
Plan d'exécution — milestone lot-v018 (planifié le 2026-10-16)
Les sections ci-dessous viennent de la séance
/plan-rundu 2026-10-16 (revue/review-specSécurité, Architecture, Technique comprise). En cas de conflit avec le corps au-dessus, elles priment.Consignes communes
v0.17.2existe (git ls-remote --tags origin v0.17.2). Sinon, arrêt sans rien écrire.main065f580; #369, #419 et #421 les ont déplacés depuis. Repérer chaque site par son contenu (symbole, chaîne), jamais par son numéro.STATE.md: le report dansSTATE.mdse fait au/merge-stack.Depends on
Note : dépendance de contenu. Le compte des composants doit inclure ceux ajoutés par les maillons précédents.
Décisions prises en planification
npm test» et la mutationimport.config.sourceNameHintsont portés par #453.SET_IMPORT_FOLDERviderootFilesseulement.scannedSourcesn'est pas touché : son effet visuel (clignotement de l'état vide) n'est pas observable par un worker sans écran. La PR le documente comme comportement antérieur et l'ajoute aux vérifications manuelles.reorderRows: épingler l'ordre obtenu en exécutant le cas. Si cet ordre n'est pasVide, z, A(ordre présumé), arrêter : décision HIGH, à consigner dans le DAILY-REPORT sans épingler un ordre peut-être faux.find src/components -name '*.tsx' ! -name '*.test.tsx' | wc -l, par domaine aussi. Inclure dans la même passe la ligne « import (14 composants) » de l'arborescence deCLAUDE.md.Spec source
spec-plan-lot-v018.md