feat(docs): sub-sections in the user guide and bank CSV export guides (#355) #381
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#381
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-355-docs-bank-guides"
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?
Fixes #355
Stacked on PR #380 (
issue-354-sample-import-folders), itself on #379 → #378 → #377. Review only the last commit (e0ee09b); the base must be merged first.What
DocsSubsections.tsx(new, pure, onlyuseTranslation): readsdocs.<sectionKey>.subsectionswithreturnObjectsand renders one block per entry —<div id>registered throughregisterRef,h4title, italic status line when present,<ol>of steps, trailing note when present. Returnsnullwhen the key is absent (i18next echoes the key string in that case, so the check isArray.isArray, not truthiness). Same Tailwind tokens as the surroundingDocsContentblocks.DocsContent.tsx:<DocsSubsections>inserted after the "Comment faire" block and before the tips;registerRefwrites intosectionRefs.current[id], so the existinglocation.hash→scrollIntoVieweffect reaches#import-export,#import-bnc, etc. No other change.fr.json/en.json:docs.import.subsectionswith the six entriesimport-export,import-desjardins,import-tangerine,import-rbc,import-bnc,import-bmo(EN = faithful translation, proper nouns kept). Only the Import section declares the key.docs/guide-utilisateur.md: the same six blocks in chapter 4 (### Exporter un CSV depuis votre banque+ five####), the « Créer un dossier d'exemple » button mentioned in chapter 4 "Comment faire" (wording of #356), and chapter 1 "Démarrage rapide" rewritten as the sixonboarding.checklist.items.*labels in the same order, each followed by a short gloss.DocsSubsections.test.tsx: direct-call tests (pattern ofFilterPanel.test.tsx).Why
A new user needs to know how to get a CSV out of their bank before the import wizard is of any use; the guide now says so per bank, with an honest verification status (only Tangerine is confirmed by an official source; BMO's format is not recognised yet, #371). The sub-section anchors are what #356 will link to from the Import empty state.
Privacy
The BNC and BMO blocks ask the user to send a header line through the feedback form. All three copies (fr.json, en.json, markdown) carry the warning: never paste an account number, a balance or a real transaction — the feedback is a text message sent to a server, the only exception to the app working locally. No real bank data anywhere; the sample header is the literal one the detector expects.
Decisions worth a look
settings.systems.title,feedback.button), so the guide uses those.docs.gettingStarted.stepsanddocs.import.stepsin the JSON files are not rewritten: the issue lists only the markdown for those two changes and the acceptance criterion freezes the rendering of the eleven other sections. The in-app "Premiers pas" quick start therefore still shows the older seven steps; aligning it with the checklist is a one-line follow-up if wanted.How tested
npm test: 77 files, 1425 tests green (5 new inDocsSubsections.test.tsx: null without sub-sections, blocks + ids + ref registration, status/note present-or-absent, malformed entries dropped, missing key).npm run build(tsc + vite): green.docs.import.subsectionshas 6 entries with identical ids, identical per-entry key sets and identical step counts (4/5/5/5/2/5) in FR and EN;subsectionsappears under no otherdocs.*section; the BNC and BMO notes contain the warning in both languages.json.dumps(indent=2)was verified identical before editing, so the diff is the 75 added lines per file and nothing else.Generated autonomously by /autopilot run of 2026-10-03
🤖 Generated with Claude Code
Self-review (autopilot 2026-10-03) — Verdict: APPROVE
Reviewed the full
pulls/381.diff(6 files, 555 lines) against issue #355.Summary
Pure
DocsSubsectionscomponent + one insertion point inDocsContent; six FR/EN blocks underdocs.import.subsectionsonly; the markdown guide carries the same six blocks, the sample-folder button mention and a six-step "Démarrage rapide" aligned on the checklist. No CHANGELOG, no migration, no hard-coded string in the components.Acceptance criteria
DocsSubsections.test.tsx: nosubsections→null; with → one block per entry, ids set, status line present/absentreadSubsections;tmock echoes the key like i18next, so the null path is the real one/settings/users#import-exportand#import-bncscroll to the blockregisterRefwritessectionRefs.current[id]; refs are attached at commit, before the[location.hash]effect runs;scroll-mt-4on each block like the sections. Not exercised in a browser (autopilot)noteof both blocks in both languages, and in the markdown (bold)subsectionsexists underdocs.importonly (checked in both files);DocsSubsectionsreturnsnullfor them;docs.gettingStarted.stepsuntouchedguide-utilisateur.md« Démarrage rapide » = six steps aligned ononboarding.checklist.items.*npm test,npm run buildgreenSecurity / privacy
Date;Description;Catégorie;Débit;Crédit;Soldethe detector already expects.Concerns (non-blocking)
docs.gettingStarted.steps) keeps its older seven steps while the markdown now has the six checklist steps. The issue scoped the rewrite to the markdown and freezes the other sections' rendering; aligning the JSON is a one-line follow-up if Max wants the three copies identical there.noteis long (one paragraph of five sentences) because the JSON shape allows a single trailing note; readable, but anotes: string[]would be the extension if a seventh bank needs it.Generated autonomously by /autopilot run of 2026-10-03
Revue adversariale — Verdict : APPROVE
Revue de
e0ee09bcontre sa baseissue-354-sample-import-folders(PR #380). Toutes les affirmations de la PR ont été retracées à la source et re-exécutées ; aucune n'est réfutée, aucun constat bloquant.Prouvé (pas relayé)
git archive e0ee09b) : 77 fichiers / 1425 tests verts,tscexit 0. CIcheck-frontendverte sur la tête (1m53s, build + tests) — PR stackée, mais le workflow n'a pas de filtrebranches:, elle a donc eu sa CI.return null→ 1 rouge ; gardeArray.isArray(steps)retirée → 1 ;refde registration retiré → 1 ; statut rendu inconditionnellement → 1 ; attributidretiré → 1 ; mauvaise clé lue (.subsection) → 2.src/utils/bankSignatures.ts:178-189(date/description/categorie/debit/credit/solde,;ou,).settings.systems.title/feedback.buttondans les deux langues, cohérent avec les lignes 569/633/640 du guide (le bouton vit dans la carte Journaux sous Système). Corriger « Systèmes → Rétroaction » de l'issue était le bon choix.onboarding.checklist.items.*ouvrent chaque ligne du « Démarrage rapide », même ordre ; « édition Base et plus » pour le Budget =src/shared/entitlements.ts:24.fs_commands.rs:179-180posées par #380.subsectionsn'existe que sousdocs.importdans les deux fichiers ; parité 6/6 (ids, jeux de clés, 4/5/5/5/2/5 étapes). Aucun autreid="import-*"danssrc/; l'effet[location.hash]litsectionRefs.currentaprès le commit, les refs des sous-sections y sont.pull_refclosesdepuis #381, etResolves #355dans le message de commit — fermeture quel que soit le chemin de merge.block.props.ref: valide parce que React 19 exposerefcomme prop ordinaire (^19.1.0). À savoir si le projet descendait un jour de version.Suggestions (non bloquantes)
statusdu bloc BMO dansfr.json/en.jsondit « fournie par Max le 2026-10-03 … (#371) ». Dans le markdown c'est une trace utile ; dans l'app, un numéro d'issue Forgejo et le prénom du développeur ne parlent à personne. Le texte vient mot pour mot de l'issue : décision de planification, pas erreur du worker. À trancher par Max — « Procédure reconstituée d'après une description générale, à confirmer sur un compte réel ; format de fichier non encore reconnu » suffirait dans les JSON.docs.gettingStarted.steps) garde les sept anciennes ; de mêmedocs.import.steps[1]ne mentionne pas le bouton d'exemple que le markdown décrit. Cadré ainsi par l'issue (gel des onze autres sections) ; suivi d'une ligne une fois #356 posé.Actions faites
pr381,pr381-mut) et JSON extraits supprimés ; aucun fichier/tmp/pr381-*restant.status:approved(self-review autopilot) : verdict concordant, inchangé.maximus referenced this pull request2026-10-04 12:52:55 +00:00