Import : le nom d'une source est celui de son sous-dossier (une source renommée n'était plus retrouvée) #426
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#426
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?
Le nom saisi à la configuration d'une source est enregistré, mais la source est retrouvée par le nom de son dossier : une source renommée paraît neuve au prochain import. Le nom d'une source devient celui de son sous-dossier, en lecture seule. Constat de l'analyse de #422, établi à la lecture du code ; correction choisie par Max le 2026-10-12.
Contexte (établi à la lecture)
src/components/import/SourceConfigPanel.tsx:252-263), et la carte du parcours y invite (« Vérifiez le nom de la source et les fichiers cochés »).import_sources.name, colonneUNIQUE(src/hooks/useImportWizard.ts:1044-1060,consolidated_schema.sql:10).getSourceByName(source.folder_name)(useImportWizard.ts:525,src/services/importSourceService.ts:29-37). Les fichiers déjà importés sont indexés parimport_sources.name(src/services/importedFileService.ts:87-89) et lus par le nom du dossier (useImportWizard.ts:508,:719).useImportWizard.ts:578).Travail à faire
SourceConfigPanel: le champ « Nom de la source » devient une valeur en lecture seule (le nom du sous-dossier,source.folder_name), avec l'aideimport.config.sourceNameHint. Extraire ce bloc dans un petit composantsrc/components/import/SourceNameDisplay.tsx, testable en rendu statique.executeImport(useImportWizard.ts:1019) : la garde de tête devientif (!state.duplicateResult || !state.selectedSource) return;, puis le nom enregistré eststate.selectedSource.folder_name, à la création comme à la mise à jour, quel que soitconfig.name.docs.import.tipset dans la section Import du guide Markdown.Textes (FR | EN)
onboarding.card.import.sourceConfigimport.config.sourceNameHint(nouvelle)docs.import.tips(nouvelle, en dernier, après celle de #427)Fichiers concernés
src/components/import/SourceConfigPanel.tsxsrc/components/import/SourceNameDisplay.tsxet son test (nouveaux)src/hooks/useImportWizard.ts,src/hooks/useImportWizard.executeImport.test.tssrc/i18n/locales/fr.json,src/i18n/locales/en.jsondocs/guide-utilisateur.md,docs/qa-onboarding.htmlCHANGELOG.md,CHANGELOG.fr.mdDepends on
Tests
useImportWizard.executeImport.test.ts: le gabaritreadyToImport()reçoit uneselectedSource; avecconfig.namedifférent du nom du dossier, le nom enregistré est celui du dossier, à la création et à la mise à jour ; sansselectedSource, rien n'est écrit.SourceNameDisplay: affiche le nom et l'aide ; aucun<input>.config.nameà l'écriture doit rougir le test.Critères d'acceptation
npm run buildetnpm testverts.Review caveats
readyToImport()(useImportWizard.executeImport.test.ts:79-90) laisseselectedSourceànull; garde de tête ajoutée et gabarit complété.config.namereste lu (ImportPage.tsx:56pour le bouton suivant,:256pour la confirmation) et alimenté en trois points (useImportWizard.ts:548,:578,:1302) ; une fois le champ retiré, ces trois points le fixent toujours au nom du dossier, et l'écriture parfolder_namegarantit le nom enregistré.Décisions prises en planification
folder_name(v18) a été écartée.Conventions
src/i18n/locales/fr.json,en.json) ; les textes de ce corps s'écrivent mot pour mot (FR validé par Max le 2026-10-12, EN rédigé sur le même contenu).StepCardText.labels(src/utils/onboardingPath.ts), traduit parStepCard; jamais recopié dans la phrase. Guillemets « » en FR et “ ” en EN autour de chaque libellé de contrôle interpolé.## [Unreleased]dansCHANGELOG.mdetCHANGELOG.fr.md.renderToStaticMarkup(pas de jsdom) et le fauxtpartagé livré par #389.useImportWizard.ts:423-425: le Journal part avec un rapport de feedback).npm run build(il vérifie aussi les types des fichiers de test) etnpm testverts ;cargo testvert quand du Rust change.docs/guide-utilisateur.md) : repérer une ligne par son texte cité, pas par son numéro.CHANGELOG
Fixed / Corrigé : FR « Import : le nom d'une source est celui de son sous-dossier, en lecture seule ; une source renommée à la configuration n'est plus prise pour une nouvelle source au prochain import. » EN "Import: a source is named after its subfolder, read-only; a source renamed during configuration is no longer taken for a new source at the next import."
Spec source
spec-plan-retours-onboarding-v0171.md(local, ignoré par git) ; décisions dansspec-decisions-retours-onboarding-v0171.md.Planification du 2026-10-12 (
/plan-run, jalonplanned-2026-10-12-retours-onboarding-v0171) : le corps est réécrit pour être autosuffisant (décisions de Max, constats de/review-specintégrés). Corps précédent ci-dessous.Corps précédent (titre : Import : une source renommée à la configuration n'est plus retrouvée à l'import suivant (recherche par nom de dossier))
Contexte
Constat de l'analyse de #422 (2026-10-12,
mainà1954502), établi à la lecture du code, non reproduit. Ouvert sur décision de Max.src/components/import/SourceConfigPanel.tsx:252-263). La carte du parcours y invite : « Vérifiez le nom de la source et les fichiers cochés » (onboarding.card.import.sourceConfig).import_sources.name, colonneUNIQUE(src/hooks/useImportWizard.ts:1044-1060,src-tauri/src/database/consolidated_schema.sql:10).getSourceByName(source.folder_name)(useImportWizard.ts:525,src/services/importSourceService.ts:29-37).import_sources.name(src/services/importedFileService.ts:87-89), mais lus par le nom du dossier (useImportWizard.ts:508,:719).Conséquences attendues, à confirmer :
useImportWizard.ts:578) ; seule la vérification des doublons arrête alors les transactions déjà importées.Travail à faire
/analyze: choisir la correction. Pistes : une clé stable par dossier (colonne dédiée, donc migration v18), le nom gardé pour l'affichage seulement avec le dossier comme clé, ou un champ en lecture seule.Critères d'acceptation (si le bug se confirme)
Complexité estimée
À établir après reproduction ; moyenne si une migration est retenue.
Import : une source renommée à la configuration n'est plus retrouvée à l'import suivant (recherche par nom de dossier)to Import : le nom d'une source est celui de son sous-dossier (une source renommée n'était plus retrouvée)maximus referenced this issue2026-10-14 01:08:40 +00:00