structure page settings #190

Closed
opened 2026-05-02 19:58:38 +00:00 by maximus · 0 comments
Owner

Contexte

Reorganisation de /settings (12 cards empilees dans SettingsPage.tsx) en 3 sous-pages thematiques. Refactoring de presentation pur — toutes les fonctionnalites existent deja, aucune nouvelle commande Tauri ni table SQL.

Decisions structurantes (clarifications validees via /analyze) :

  1. Layout : sous-routes URL /settings, /settings/users, /settings/data, /settings/systems. Page d'accueil = cards-cluster. Pattern coherent avec /balance/* et /settings/categories/standard existants.
  2. Pages standalone : DocsPage et ChangelogPage absorbees comme composants dans les sous-pages. URLs /docs et /changelog redirigees (preservation bookmarks externes + release notes).
  3. Cards orphelines : PriceFetchConsentToggle + DataManagementCard dans donnees. TokenStoreFallbackBanner reste affiche en haut, partage via SettingsLayout.
  4. Migration categories : /settings/categories/migrate conservee + Link depuis /settings/data.

Travail a faire

Routing (src/App.tsx)

  • Ajouter <Route path="/settings" element={<SettingsLayout/>}> avec sous-routes index + users + data + systems
  • Conserver /settings/categories/standard et /settings/categories/migrate
  • Ajouter redirects /docs/settings/users et /changelog/settings/systems

Pages nouvelles

  • src/pages/settings/SettingsLayout.tsx<Outlet/> + TokenStoreFallbackBanner partage + breadcrumb
  • src/pages/settings/SettingsHomePage.tsx — 3 cards-cluster
  • src/pages/settings/UsersSettingsPage.tsxAccountCard + LicenseCard + <DocsContent/>
  • src/pages/settings/DataSettingsPage.tsxCategoriesCard + DataManagementCard + PriceFetchConsentToggle
  • src/pages/settings/SystemsSettingsPage.tsx — About + Update card + <ChangelogContent/> + Feedback trigger + LogViewerCard

Extraction de composants reutilisables

  • src/pages/DocsPage.tsx → corps deplace dans src/components/settings/DocsContent.tsx, page devient redirect
  • src/pages/ChangelogPage.tsx → corps deplace dans src/components/settings/ChangelogContent.tsx, page devient redirect

Suppression

  • src/pages/SettingsPage.tsx retire une fois les cards eparpillees

i18n

  • Ajouter settings.home.*, settings.nav.users/data/systems, settings.users.title, settings.data.title, settings.systems.title dans fr.json et en.json
  • Conserver les sous-arbres existants (limite le diff)

Sidebar

  • Aucun changement (entree "Parametres" pointe deja sur /settings)

Fichiers concernes

Fichier Raison
src/App.tsx Restructuration routing + redirects
src/pages/SettingsPage.tsx A supprimer (contenu eparpille)
src/pages/settings/SettingsLayout.tsx Nouveau — <Outlet/> + banner partage
src/pages/settings/SettingsHomePage.tsx Nouveau — cards-cluster
src/pages/settings/UsersSettingsPage.tsx Nouveau
src/pages/settings/DataSettingsPage.tsx Nouveau
src/pages/settings/SystemsSettingsPage.tsx Nouveau
src/pages/DocsPage.tsx Extraction → composant + redirect
src/pages/ChangelogPage.tsx Extraction → composant + redirect
src/components/settings/DocsContent.tsx Nouveau (extrait)
src/components/settings/ChangelogContent.tsx Nouveau (extrait)
src/i18n/locales/fr.json + en.json Cles settings.home.*, settings.nav.*
docs/architecture.md Section "Routing & pages" mise a jour
CHANGELOG.md + CHANGELOG.fr.md Entree Changed/Modifie sous [Unreleased]

Surface de test

  • Tests existants : npm test (vitest). Aucun test cible sur SettingsPage.tsx actuellement.
  • Tests a ajouter :
    • Smoke test : rendu sans crash de chaque route /settings, /settings/users, /settings/data, /settings/systems
    • Smoke test : redirects /docs/settings/users et /changelog/settings/systems
    • Test : la page d'accueil rend 3 cards cliquables
  • Verification manuelle : edition profil, activation licence, lecture guide, restructure categorie, migration, export/import chiffre, toggle prix, version, updater, changelog, feedback, logs.

Criteres d'acceptation

  • /settings affiche 3 cards (Utilisateurs / Donnees / Systemes) qui menent aux sous-pages
  • /settings/users contient Comptes + Licences + Guide utilisateur (inline)
  • /settings/data contient Categories (incl. Links vers structure standard + migration) + Backup + Toggle prix premium
  • /settings/systems contient Version + Mise a jour + Historique version (inline) + Feedback + Logs
  • TokenStoreFallbackBanner partage en haut de toutes les pages settings via SettingsLayout
  • /docs et /changelog redirigent vers leur nouvelle home
  • Toutes les chaines UI passent par i18n FR/EN
  • docs/architecture.md reflete la nouvelle structure routing
  • Entree CHANGELOG bilingue sous [Unreleased] (categorie Changed/Modifie)
  • CI verte : cargo check, cargo test, npm run build, npm test

Complexite estimee

Medium — ~12 fichiers touches, refactor d'extraction, 3 nouvelles pages + layout, i18n bilingue, redirects, doc + changelog. Pas de logique metier nouvelle.

Decisions implicites

  • SettingsLayout avec <Outlet/> (DRY) plutot qu'un wrapper inline par sous-page.
## Contexte Reorganisation de `/settings` (12 cards empilees dans `SettingsPage.tsx`) en 3 sous-pages thematiques. Refactoring de presentation pur — toutes les fonctionnalites existent deja, aucune nouvelle commande Tauri ni table SQL. Decisions structurantes (clarifications validees via `/analyze`) : 1. **Layout** : sous-routes URL `/settings`, `/settings/users`, `/settings/data`, `/settings/systems`. Page d'accueil = cards-cluster. Pattern coherent avec `/balance/*` et `/settings/categories/standard` existants. 2. **Pages standalone** : `DocsPage` et `ChangelogPage` absorbees comme composants dans les sous-pages. URLs `/docs` et `/changelog` redirigees (preservation bookmarks externes + release notes). 3. **Cards orphelines** : `PriceFetchConsentToggle` + `DataManagementCard` dans donnees. `TokenStoreFallbackBanner` reste affiche en haut, partage via `SettingsLayout`. 4. **Migration categories** : `/settings/categories/migrate` conservee + Link depuis `/settings/data`. ## Travail a faire ### Routing (`src/App.tsx`) - Ajouter `<Route path="/settings" element={<SettingsLayout/>}>` avec sous-routes index + `users` + `data` + `systems` - Conserver `/settings/categories/standard` et `/settings/categories/migrate` - Ajouter redirects `/docs` → `/settings/users` et `/changelog` → `/settings/systems` ### Pages nouvelles - `src/pages/settings/SettingsLayout.tsx` — `<Outlet/>` + `TokenStoreFallbackBanner` partage + breadcrumb - `src/pages/settings/SettingsHomePage.tsx` — 3 cards-cluster - `src/pages/settings/UsersSettingsPage.tsx` — `AccountCard` + `LicenseCard` + `<DocsContent/>` - `src/pages/settings/DataSettingsPage.tsx` — `CategoriesCard` + `DataManagementCard` + `PriceFetchConsentToggle` - `src/pages/settings/SystemsSettingsPage.tsx` — About + Update card + `<ChangelogContent/>` + Feedback trigger + `LogViewerCard` ### Extraction de composants reutilisables - `src/pages/DocsPage.tsx` → corps deplace dans `src/components/settings/DocsContent.tsx`, page devient redirect - `src/pages/ChangelogPage.tsx` → corps deplace dans `src/components/settings/ChangelogContent.tsx`, page devient redirect ### Suppression - `src/pages/SettingsPage.tsx` retire une fois les cards eparpillees ### i18n - Ajouter `settings.home.*`, `settings.nav.users/data/systems`, `settings.users.title`, `settings.data.title`, `settings.systems.title` dans `fr.json` et `en.json` - Conserver les sous-arbres existants (limite le diff) ### Sidebar - Aucun changement (entree "Parametres" pointe deja sur `/settings`) ## Fichiers concernes | Fichier | Raison | |---|---| | `src/App.tsx` | Restructuration routing + redirects | | `src/pages/SettingsPage.tsx` | A supprimer (contenu eparpille) | | `src/pages/settings/SettingsLayout.tsx` | Nouveau — `<Outlet/>` + banner partage | | `src/pages/settings/SettingsHomePage.tsx` | Nouveau — cards-cluster | | `src/pages/settings/UsersSettingsPage.tsx` | Nouveau | | `src/pages/settings/DataSettingsPage.tsx` | Nouveau | | `src/pages/settings/SystemsSettingsPage.tsx` | Nouveau | | `src/pages/DocsPage.tsx` | Extraction → composant + redirect | | `src/pages/ChangelogPage.tsx` | Extraction → composant + redirect | | `src/components/settings/DocsContent.tsx` | Nouveau (extrait) | | `src/components/settings/ChangelogContent.tsx` | Nouveau (extrait) | | `src/i18n/locales/fr.json` + `en.json` | Cles `settings.home.*`, `settings.nav.*` | | `docs/architecture.md` | Section "Routing & pages" mise a jour | | `CHANGELOG.md` + `CHANGELOG.fr.md` | Entree Changed/Modifie sous [Unreleased] | ## Surface de test - Tests existants : `npm test` (vitest). Aucun test cible sur `SettingsPage.tsx` actuellement. - Tests a ajouter : - Smoke test : rendu sans crash de chaque route `/settings`, `/settings/users`, `/settings/data`, `/settings/systems` - Smoke test : redirects `/docs` → `/settings/users` et `/changelog` → `/settings/systems` - Test : la page d'accueil rend 3 cards cliquables - Verification manuelle : edition profil, activation licence, lecture guide, restructure categorie, migration, export/import chiffre, toggle prix, version, updater, changelog, feedback, logs. ## Criteres d'acceptation - [ ] `/settings` affiche 3 cards (Utilisateurs / Donnees / Systemes) qui menent aux sous-pages - [ ] `/settings/users` contient Comptes + Licences + Guide utilisateur (inline) - [ ] `/settings/data` contient Categories (incl. Links vers structure standard + migration) + Backup + Toggle prix premium - [ ] `/settings/systems` contient Version + Mise a jour + Historique version (inline) + Feedback + Logs - [ ] `TokenStoreFallbackBanner` partage en haut de toutes les pages settings via `SettingsLayout` - [ ] `/docs` et `/changelog` redirigent vers leur nouvelle home - [ ] Toutes les chaines UI passent par i18n FR/EN - [ ] `docs/architecture.md` reflete la nouvelle structure routing - [ ] Entree CHANGELOG bilingue sous `[Unreleased]` (categorie Changed/Modifie) - [ ] CI verte : `cargo check`, `cargo test`, `npm run build`, `npm test` ## Complexite estimee **Medium** — ~12 fichiers touches, refactor d'extraction, 3 nouvelles pages + layout, i18n bilingue, redirects, doc + changelog. Pas de logique metier nouvelle. ## Decisions implicites - `SettingsLayout` avec `<Outlet/>` (DRY) plutot qu'un wrapper inline par sous-page.
maximus added the
source:human
status:ready
type:refactor
labels 2026-05-03 13:35:24 +00:00
maximus added
status:review
and removed
status:ready
labels 2026-05-03 13:50:51 +00:00
maximus added
status:approved
and removed
status:review
labels 2026-05-03 13:55:58 +00:00
Sign in to join this conversation.
No milestone
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#190
No description provided.