fix(budget): objectif — 1 seul "Assigner suggéré" par mois + masquer micro-montants #2
Loading…
Add table
Add a link
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
Store.suggestedAssignment(c, month)(Store.kt:441) →ceil((targetCents - avail)/monthsLeft)+ boutonsCategoryRow:TextButton "Assigner X" → Store.setAssigned(id, month, assigned+ sug)(BudgetScreen.kt:834)CategoryDialog:amount = formatForInput(currentAssigned + sug)(:1005)Repro actuel
suginitial 15€ oksug4€, puis 1€, 2€, 5€currentSaved < targetTotaletsug>0, le bouton reste affiché → on peut recliquer 3-4× dans le même mois et empiler +1€/+2€/+5€Attendu (spec)
month, bouton disparaît jusqu’au mois suivant. Pas de spam intra-mois. Implémentation :Map<"catId-YYYY-MM", Boolean>ouSet<String> suggestedUsedThisMonthpersisté, checkif (used) hide; reset au changement demonth.sugest ridicule vs cible. Règle :if (sug < 500 && targetCents >= 6000) hide→ seuil 5€ pour cible ≥60€ ; Générique :min = max(500, targetCents * 0.08)(≈8% de la cible, min 5€) → 60€ → 5€, 200€ → 16€Acceptance
suggestedAssignmentou UI filtresug < seuil→ bouton masqué (pas de "0,50€", "1€", "2€", "5€" pour 60€)Store.setAssigned(... + sug), marquerusedThisMonth→ bouton masqué jusqu’àYearMonth+1hasTxnsThisMonthgardé, mais non bloquant pour le one-shotusedThisMonthdansbudget.json(v3 → v4tolérant)