feat: propagate right-click add-as-keyword to transactions + highlights list (#75) #94
No reviewers
Labels
No labels
source:analyste
source:defenseur
source:human
source:medic
status:approved
status:blocked
status:in-progress
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#94
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-75-propagate-context-menu"
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 #75
Follow-up de #74 : étendre le clic droit
ContextMenu+AddKeywordDialogaux tables où il a du sens (lignes de transactions individuelles).Branchement
HighlightsTopTransactionsList→ prop optionnelonContextMenuRow;ReportsHighlightsPagemonte le menu + dialogTransactionTable→ prop optionnelonRowContextMenusur chaque<tr>;TransactionsPagepré-remplit le dialog avec description + category_id courantsIntentionnellement NON branché (documenté)
HighlightsTopMoversTable,ComparePeriodTable,MonthlyTrendsTable,CategoryOverTimeTable: affichent des agrégats par catégorie ou par mois, pas des transactions individuelles → pas de description dont extraire un mot-clé. Le dialog serait dénué de sens.Réutilisation pure
Aucun code métier ajouté. Tout réutilise
ContextMenu(créé #69),AddKeywordDialog+previewKeywordMatches+applyKeywordWithReassignment(créés #74). Les garanties sécurité héritent automatiquement.Vérifications
npm run build✅npm test✅ 62/62cargo check✅Review — APPROVE
Sécurité ✅
AddKeywordDialog(SQL paramétré, ReDoS cap, BEGIN/COMMIT, XSS-safe) déjà testées en #74onContextMenuRowest optionnel, non-breaking sur les usages existantsCorrectness ✅
TransactionsPagepré-remplitinitialCategoryIddepuisrow.category_id— meilleure UX que le zoom page (catégorie courante vs catégorie zoom)initialKeyword = description.split(/\s+/)[0]cohérent avec le zoom pageQualité ✅
npm run build✅npm test✅ 62/62cargo check✅Ready to merge.