feat(budget) : adopter le repli multi-niveaux sur la grille Budget #289
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#289
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?
Refs:
spec-decisions-collapse-multi-niveaux.md+spec-plan-collapse-multi-niveaux.md(plan v2)Depends on
Contexte
La grille Budget (
src/components/budget/BudgetTable.tsx) est hierarchique (elle lit dejadepth/is_parent/parent_id, indente sur 4 niveaux) mais fut deliberement exclue du repli par #278. Avec ~150 lignes d'un bloc, cette decision est revue : la grille adopte le meme repli multi-niveaux, meme defaut (tout replie).Compromis assume
Seules les feuilles sont editables (
BudgetTable.tsx:105filtre!r.is_parent; les parents l.175 ne rendent que du texte). Tout replie ⇒ la page ouvre sur 11 lignes racines sans champ de saisie visible. Accepte : page compacte, etat persiste (cout paye une seule fois), « Tout deplier » a un clic et visible d'emblee.Correction critique heritee de /review-spec
Travail a faire
src/hooks/useBudget.ts— lire et documenter l'invariant d'ordre (tri par niveau, l.345-365). Avec la remontee d'ancetres, aucun changement de tri — mais l'acter par un test (la v1 s'y etait trompee). Ajoutersrc/hooks/useBudget.tsaux fichiers concernes.BudgetTable.tsx— brancheruseCollapsibleGroups; declarerBUDGET_COLLAPSE_ACCESSORS+BUDGET_EXPANDED_KEYinline au module scope (comme ComparePeriodTable:64 et BudgetVsActualTable:35). Ne PAS creerbudgetTableModel.ts: overTimeTableModel.ts existe pour de la vraie logique (groupOverTimeSections), pas pour 3 lambdas.aria-expandedsur toute ligne parente dansrenderRow(l.168-205) — parents = texte pur aujourd'hui.reports.collapse.expandAll/.collapseAll).sumLeavesForTypedebudgetTableResults.ts:42— deja teste, prouve le critere « sous-totaux sur lignes brutes ».BudgetTable.tsx:21etBudgetVsActualTable.tsx:30declarent tous deuxSTORAGE_KEY = "subtotals-position"→ prefixer celle du budget enbudget-subtotals-position(comme ComparePeriodTable:60 prefixe deja la sienne). Effet de bord : la preference de position revient a son defaut une fois.Fichiers concernes
src/hooks/useBudget.ts(lu + teste)src/components/budget/BudgetTable.tsxsrc/components/budget/budgetTableResults.ts(lu —sumLeavesForType:42)src/i18n/locales/{fr,en}.json,CHANGELOG.md,CHANGELOG.fr.mdTests
budgetTableResults:sumLeavesForTypecouvre deja les sous-totaux de section — le brancher prouve l'invariant.useBudgetest par niveau (documente l'invariant que la v1 a suppose a tort).Review caveats
useBudget) absent du plan v1 → ajoute ici. C'est la source de l'ordre par niveau.budgetTableModel.ts: abandonne (accesseurs inline comme les 2 autres tables).sumLeavesForType→ remplacer.Decisions prises en planification
user_preferences(heritee de #288).Criteres d'acceptation
sumLeavesForType(plus de calcul fait-main)Spec source
spec-plan-collapse-multi-niveaux.md (v2)