feat(web): page admin de CRUD des didacticiels (#44) #61
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/admin-tour-page"
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?
L'UI par-dessus l'API
/admin/api/tours*(PR #59). Dernier morceau du chantier #42/#44.Contenu
/admin/didacticielsdansAdminLayout(i18nadmin.nav.tours, icôneGraduationCap), route sousRequireAdmin+AdminLayout(App.tsx).ToursPage.tsx— liste des scénarios à gauche (nom, état activé/désactivé, nombre d'étapes) ; éditeur du scénario sélectionné à droite :route,cible(<select>alimenté parGET /tours/targets),titre,contenu; réordonner (↑ / ↓), ajouter, retirer ;PATCH /:idqui remplace tout (name/enabled + étapes rénumérotéesorder= index) ; erreurs API affichées telles quelles ;window.confirm) ;clé+nom→POST /.admin-client.tsgagnegetTourScenarios/getTourTargets/createTourScenario/updateTourScenario/deleteTourScenario.Les analytics de complétion (
tour.completed/tour.skipped, émises par l'endpoint de complétion de #58) apparaissent déjà sur le dashboard admin sans aucun changement —getMetrics()agrège tout type d'AnalyticsEventetDashboardPagele rend génériquement (le « quasi gratuit » annoncé par #44).Tests
cypress/e2e/admin-tours.cy.ts(4) : liste (activés + désactivés, nombre d'étapes) ; édition nom + réordonnancement d'étapes → un seul PATCH avec la liste complète réordonnée ; création →POST {key,name}; suppression après confirmation →DELETE. 4/4 en local, + 10 spécs admin de non-régression (admin-layout/admin-catalog/admin-dashboard/admin-login) vertes.pnpm build+pnpm lintverts.Closes #44
🤖 Generated with Claude Code
L'UI par-dessus l'API `/admin/api/tours*`. Nouvelle entrée `/admin/didacticiels` dans `AdminLayout` (i18n `admin.nav.tours`), route sous `RequireAdmin`+`AdminLayout` dans `App.tsx`. `ToursPage.tsx` : liste des scénarios à gauche (nom, état activé/désactivé, nombre d'étapes) ; à droite l'éditeur du scénario sélectionné — - renommer, activer/désactiver ; - éditer la liste d'étapes (route, cible via `<select>` alimenté par `GET /tours/targets`, titre, contenu), réordonner (↑/↓), ajouter, retirer ; - « Enregistrer » → un seul `PATCH /:id` qui remplace tout (name/enabled + étapes rénumérotées `order` = index), erreurs API affichées telles quelles ; - « Supprimer le scénario » (confirmation `window.confirm`) ; - « Nouveau scénario » → formulaire clé + nom → `POST /`. `admin-client.ts` gagne `getTourScenarios` / `getTourTargets` / `createTourScenario` / `updateTourScenario` / `deleteTourScenario`. Tests Cypress (`admin-tours.cy.ts`, 4) : liste (activés + désactivés, nombre d'étapes) ; édition nom + réordonnancement d'étapes → un seul PATCH avec la liste complète réordonnée ; création → POST `{key,name}` ; suppression après confirmation → DELETE. 4/4 en local ; `pnpm build` + `pnpm lint` verts. Closes #44 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>