batchCooking/apps/api/test
Nicolas 2beff139a3
All checks were successful
CI / lint (push) Successful in 2m57s
CI / build (push) Successful in 2m59s
CI / intent-service-test (push) Successful in 4m22s
CI / e2e (push) Successful in 9m4s
CI / test (push) Successful in 17m32s
feat(api): CRUD admin des scénarios de didacticiel (#44)
Deuxième volet backend du tutoriel guidé, sur le socle de #42/#44 : permet
à un admin de créer/éditer/supprimer les scénarios que
`GET /reference/tours` sert au moteur front.

`/admin/api/tours` (agrégateur `admin.routes.ts`, tout derrière
`requireAdmin`) :
- `GET /` — tous les scénarios (activés **et** désactivés) + étapes
  ordonnées.
- `GET /targets` — le catalogue `TourTarget` pour le sélecteur de cible de
  l'éditeur.
- `POST /` — crée un scénario vide (`key` + `name`) ; 409
  `TOUR_KEY_ALREADY_IN_USE` (nouveau code 4025) sur une clé prise.
- `PATCH /:id` — édite `name`/`enabled` **et remplace toute la liste
  d'étapes en bloc** (delete-all puis recreate avec `order` = index), même
  convention que `updateRecipe` pour les étapes d'une recette. `key`
  immuable. 404 `TOUR_NOT_FOUND` (id inconnu), 404 `TOUR_TARGET_NOT_FOUND`
  (nouveau code 4054, `targetKey` d'une étape hors catalogue — vérifié
  avant d'écrire, les étapes réelles restent intactes si la requête est
  rejetée).
- `DELETE /:id` — 204 ; les étapes et les `TourProgress` des utilisateurs
  cascadent.

Tests Mocha (`admin-tours.test.ts`) : 401 sans session admin sur chaque
route ; list (activés+désactivés) ; targets ; create→patch pour remplir
les étapes ; remplacement en bloc ; 409 clé dupliquée ; 404 cible
inconnue (sans toucher aux étapes existantes) ; 404 id inconnu ; delete +
cascade vérifiée ; un scénario désactivé disparaît de `/reference/tours`
mais reste dans la liste admin.

Refs #44
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-06 05:39:37 +02:00
..
internal feat(admin): pousse le monitoring en WebSocket au lieu du polling client 2026-09-05 14:44:39 +02:00
recipe feat(recipes): permet de corriger la température d'un tech-step 2026-09-04 23:53:14 +02:00
recipe-matching feat(cooking-session): regroupement d'étapes sensible aux métadonnées d'action 2026-09-03 12:05:44 +02:00
recipe-sources feat(sources): ajoute ohmonbento.com comme source de recettes importable 2026-09-06 01:30:44 +02:00
sources feat(sources): ajoute ohmonbento.com comme source de recettes importable 2026-09-06 01:30:44 +02:00
admin-auth.test.ts fix(admin): isole l'API admin sous /admin/api pour éviter la collision avec les pages front 2026-09-05 13:48:07 +02:00
admin-catalog-normalize.test.ts feat(recipes): permet d'ajouter des ingredients hors-catalogue 2026-08-28 23:36:42 +02:00
admin-catalog.test.ts fix(admin): isole l'API admin sous /admin/api pour éviter la collision avec les pages front 2026-09-05 13:48:07 +02:00
admin-metrics.test.ts fix(admin): isole l'API admin sous /admin/api pour éviter la collision avec les pages front 2026-09-05 13:48:07 +02:00
admin-monitoring-socket.test.ts fix(admin): ferme le serveur socket.io en fin de suite de test monitoring 2026-09-05 19:56:45 +02:00
admin-tech-steps.test.ts fix(admin): isole l'API admin sous /admin/api pour éviter la collision avec les pages front 2026-09-05 13:48:07 +02:00
admin-tours.test.ts feat(api): CRUD admin des scénarios de didacticiel (#44) 2026-09-06 05:39:37 +02:00
auth.test.ts feat(auth): accepte un jeton Bearer en repli du cookie de session 2026-09-06 02:47:57 +02:00
cooking-session.test.ts feat(planning): attribution et jet des restes + exclusion liste de courses / cuisine 2026-09-05 23:53:25 +02:00
health.test.ts Scaffold generic pnpm monorepo (api + web + shared) (#1) 2026-08-16 10:55:13 +02:00
house.test.ts fix: corrige les bugs ouverts du repo (import TheMealDB, sidebar mobile) + doc (#59) 2026-08-21 12:16:22 +02:00
logger.service.test.ts fix: corrige les bugs ouverts du repo (import TheMealDB, sidebar mobile) + doc (#59) 2026-08-21 12:16:22 +02:00
planning-portions.test.ts feat(planning): sépare portions demandées et portions préparées 2026-09-05 23:29:58 +02:00
planning.test.ts feat(planning): attribution et jet des restes + exclusion liste de courses / cuisine 2026-09-05 23:53:25 +02:00
preferences.test.ts API: module preferences — GET/PATCH /preferences (step 2/4) 2026-08-17 15:55:45 +02:00
profile.test.ts feat(api): modèle de données + API des scénarios de didacticiel (#42/#44) 2026-09-06 05:08:43 +02:00
recipe-placeholder.test.ts feat(recipes): permet d'ajouter des ingredients hors-catalogue 2026-08-28 23:36:42 +02:00
recipe.test.ts feat(planning): sépare portions demandées et portions préparées 2026-09-05 23:29:58 +02:00
reference.test.ts feat(api): modèle de données + API des scénarios de didacticiel (#42/#44) 2026-09-06 05:08:43 +02:00
shopping-list.test.ts feat(planning): attribution et jet des restes + exclusion liste de courses / cuisine 2026-09-05 23:53:25 +02:00