feat(api): CRUD admin des scénarios de didacticiel (#44 — API) #59
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/admin-tour-crud"
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?
Deuxième volet backend du tutoriel guidé, sur le socle de [PR précédente / #58]. Permet à un admin de gérer les scénarios que
GET /reference/tourssert au moteur front.API —
/admin/api/tours(agrégateuradmin.routes.ts, tout derrièrerequireAdmin)GET /GET /targetsTourTarget— pour le sélecteur de cible du formulairePOST /key+name). 409TOUR_KEY_ALREADY_IN_USE(nouveau code4025) sur une clé prisePATCH /:idname/enabledet remplace toute la liste d'étapes en bloc (delete-all puis recreate avecorder= index), même convention querecipe.service.ts'supdateRecipepour les étapes d'une recette.keyimmuable. 404TOUR_NOT_FOUND(id inconnu), 404TOUR_TARGET_NOT_FOUND(nouveau code4054,targetKeyd'une étape hors catalogue — vérifié avant d'écrire, donc les étapes existantes restent intactes si la requête est rejetée)DELETE /:idTourProgressdes utilisateurs cascadentSchémas partagés (
packages/shared/src/schemas/admin.ts) :adminTourStepSchema,createTourScenarioSchema(clé lowerCamel, validée),updateTourScenarioSchema(≤ 30 étapes). Vues :AdminTourScenarioView,TourTargetView.Tests (Mocha —
admin-tours.test.ts, 11 cas)401 sans session admin sur chaque route ;
GET /liste activés + désactivés ;GET /targets; create → patch pour remplir les étapes ; remplacement en bloc (deleteMany+ recreate, compté en base) ; 409 clé dupliquée ; 404 cible inconnue sans toucher aux étapes existantes ; 404 id inconnu (PATCH et DELETE) ; delete + cascadeTourScenarioStep/TourProgressvérifiée ; un scénario désactivé disparaît de/reference/toursmais reste dans la liste admin.pnpm build+pnpm lintverts ; tests DB en CI (pas de Postgres local).Suite
driver.js,useTour()consommantGET /reference/tours,data-tour-*, déclenchement auto, section « Revoir » — prête, poussée juste après./admin/didacticiels(l'UI CRUD par-dessus cette API) — à faire ensuite,cy.intercept-testable comme le reste de la suite admin.Refs #44
🤖 Generated with Claude Code