[#8] Polish, tests, docs, changelog, nettoyage legacy #76

Closed
opened 2026-04-13 15:08:39 +00:00 by maximus · 0 comments
Owner

Objectif

Dernière issue du milestone : tests, validation manuelle, documentation, changelog, nettoyage final de useReports legacy.

Spec : spec-refonte-rapports.md
Dépend de : #71, #72, #73, #74, #75

Tâches

Tests automatisés (vitest)

  • Smoke test getHighlights — cas nominal + profil vide
  • Smoke test getCompareMonthOverMonth — avec et sans données mois précédent
  • Smoke test getCategoryZoom avec fixture cyclique (catégories A→B→A) — doit terminer grâce à la CTE bornée depth < 5
  • Tests AddKeywordDialog : validation longueur (< 2 → bloque, > 64 → bloque, whitespace → bloque, 2–64 → passe)

Validation manuelle des flows utilisateur

  • Hub /reports : panneau faits saillants + 4 cartes
  • Navigation vers chaque sous-rapport, retour au hub
  • Toggle chart/table sur chacun des 4 rapports
  • Période bookmarkable : /reports/trends?from=2025-01-01&to=2025-12-31 restaure l'état ; copier l'URL, fermer/rouvrir la fenêtre, coller → même état
  • Persistance localStorage des préférences viewMode par section après redémarrage de l'app
  • Clic droit → AddKeywordDialog → preview → apply → vérifier que le keyword apparaît dans /categories et que les transactions sont recatégorisées
  • Comportement « mot-clé déjà existant » avec dialog de remplacement

Nettoyage final du hook legacy

  • Supprimer définitivement les champs legacy de useReports laissés en backward-compat pendant #70 (maintenant que tous les rapports consomment les nouveaux hooks)
  • Si useReports n'est plus utilisé nulle part, supprimer le fichier complètement
  • Vérifier qu'aucun import de useReports ne subsiste

Documentation

  • Mettre à jour docs/architecture.md section Rapports :
    • Nouveaux hooks par domaine (useReportsPeriod, useHighlights, useTrends, useCompare, useCategoryZoom)
    • Nouveaux endpoints de reportService (getHighlights, getCompareMoM, getCompareYoY, getCategoryZoom)
    • Suppression du pivot
    • Structure des composants src/components/reports/ (plat avec préfixes)
  • Mettre à jour docs/guide-utilisateur.md avec le nouveau flow (hub + 4 rapports, édition contextuelle mot-clé via clic droit). Mettre à jour aussi les clés i18n docs.* correspondantes
  • Créer docs/adr/NNNN-refonte-rapports.md couvrant :
    • Pourquoi le pivot a été supprimé (usage réel = zoom catégorie à 90%)
    • Passage hub + 4 sous-routes bookmarkables
    • Split useReports → hooks par domaine
    • Édition contextuelle des mots-clés avec garanties de sécurité

Changelog

  • Ajouter sous ## [Unreleased] dans CHANGELOG.md :
    • Added : 4 new reports (highlights, trends, compare, category), contextual keyword editing via right-click, sparklines, donut chart, bookmarkable period via query string
    • Changed : Reports page refactored into hub + 4 sub-routes, useReports split into per-domain hooks
    • Removed : Dynamic pivot table
  • Ajouter les mêmes entrées en français dans CHANGELOG.fr.md :
    • Ajouté : 4 nouveaux rapports (faits saillants, tendances, comparables, analyse par catégorie), édition contextuelle des mots-clés via clic droit, sparklines, graphique en anneau, période bookmarkable via query string
    • Modifié : page Rapports refondue en hub + 4 sous-pages, useReports splitté en hooks par domaine
    • Supprimé : tableau croisé dynamique

Vérifications finales

  • npm run build vert
  • cargo check vert
  • npm test vert (tous les nouveaux tests passent)
  • grep -ri "DynamicReport\|pivotConfig\|reports\.pivot\|normalizeString\|_plural" src/ retourne vide
  • La CI Forgejo (check.yml) passe sur la branche finale

Critères d'acceptation

  • Tous les flows manuels listés passent sans erreur
  • CI verte
  • useReports legacy supprimé
  • Docs + ADR + changelog à jour en FR et EN
## Objectif Dernière issue du milestone : tests, validation manuelle, documentation, changelog, nettoyage final de `useReports` legacy. Spec : `spec-refonte-rapports.md` Dépend de : #71, #72, #73, #74, #75 ## Tâches ### Tests automatisés (vitest) - [ ] Smoke test `getHighlights` — cas nominal + profil vide - [ ] Smoke test `getCompareMonthOverMonth` — avec et sans données mois précédent - [ ] Smoke test `getCategoryZoom` avec **fixture cyclique** (catégories A→B→A) — doit terminer grâce à la CTE bornée `depth < 5` - [ ] Tests `AddKeywordDialog` : validation longueur (< 2 → bloque, > 64 → bloque, whitespace → bloque, 2–64 → passe) ### Validation manuelle des flows utilisateur - [ ] Hub `/reports` : panneau faits saillants + 4 cartes - [ ] Navigation vers chaque sous-rapport, retour au hub - [ ] Toggle chart/table sur chacun des 4 rapports - [ ] Période bookmarkable : `/reports/trends?from=2025-01-01&to=2025-12-31` restaure l'état ; copier l'URL, fermer/rouvrir la fenêtre, coller → même état - [ ] Persistance localStorage des préférences `viewMode` par section après redémarrage de l'app - [ ] Clic droit → AddKeywordDialog → preview → apply → vérifier que le keyword apparaît dans `/categories` et que les transactions sont recatégorisées - [ ] Comportement « mot-clé déjà existant » avec dialog de remplacement ### Nettoyage final du hook legacy - [ ] Supprimer définitivement les champs legacy de `useReports` laissés en backward-compat pendant #70 (maintenant que tous les rapports consomment les nouveaux hooks) - [ ] Si `useReports` n'est plus utilisé nulle part, supprimer le fichier complètement - [ ] Vérifier qu'aucun import de `useReports` ne subsiste ### Documentation - [ ] Mettre à jour `docs/architecture.md` section Rapports : - Nouveaux hooks par domaine (`useReportsPeriod`, `useHighlights`, `useTrends`, `useCompare`, `useCategoryZoom`) - Nouveaux endpoints de `reportService` (`getHighlights`, `getCompareMoM`, `getCompareYoY`, `getCategoryZoom`) - Suppression du pivot - Structure des composants `src/components/reports/` (plat avec préfixes) - [ ] Mettre à jour `docs/guide-utilisateur.md` avec le nouveau flow (hub + 4 rapports, édition contextuelle mot-clé via clic droit). Mettre à jour aussi les clés i18n `docs.*` correspondantes - [ ] Créer `docs/adr/NNNN-refonte-rapports.md` couvrant : - Pourquoi le pivot a été supprimé (usage réel = zoom catégorie à 90%) - Passage hub + 4 sous-routes bookmarkables - Split `useReports` → hooks par domaine - Édition contextuelle des mots-clés avec garanties de sécurité ### Changelog - [ ] Ajouter sous `## [Unreleased]` dans **`CHANGELOG.md`** : - **Added** : 4 new reports (highlights, trends, compare, category), contextual keyword editing via right-click, sparklines, donut chart, bookmarkable period via query string - **Changed** : Reports page refactored into hub + 4 sub-routes, `useReports` split into per-domain hooks - **Removed** : Dynamic pivot table - [ ] Ajouter les mêmes entrées en français dans **`CHANGELOG.fr.md`** : - **Ajouté** : 4 nouveaux rapports (faits saillants, tendances, comparables, analyse par catégorie), édition contextuelle des mots-clés via clic droit, sparklines, graphique en anneau, période bookmarkable via query string - **Modifié** : page Rapports refondue en hub + 4 sous-pages, `useReports` splitté en hooks par domaine - **Supprimé** : tableau croisé dynamique ### Vérifications finales - [ ] `npm run build` vert - [ ] `cargo check` vert - [ ] `npm test` vert (tous les nouveaux tests passent) - [ ] `grep -ri "DynamicReport\|pivotConfig\|reports\.pivot\|normalizeString\|_plural" src/` retourne vide - [ ] La CI Forgejo (`check.yml`) passe sur la branche finale ## Critères d'acceptation - Tous les flows manuels listés passent sans erreur - CI verte - `useReports` legacy supprimé - Docs + ADR + changelog à jour en FR et EN
maximus added this to the spec-refonte-rapports milestone 2026-04-13 15:08:39 +00:00
maximus added the
status:ready
type:refactor
source:human
labels 2026-04-13 15:08:39 +00:00
maximus added
status:approved
and removed
status:ready
labels 2026-04-14 19:30:26 +00:00
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: maximus/Simpl-Resultat#76
No description provided.