refactor(admin): fusionne apps/admin-web dans apps/web sous /admin/* #18
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/merge-admin-into-web"
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'admin avait été livré (PR #15) comme une 2ᵉ application front Vite indépendante (
apps/admin-web, port 5174, Dockerfile nginx, serviceadmin-webdansdocker-compose, job CI propre) — non demandé. Toute l'UI passe dansapps/websous/admin/*. Seul le frontend est fusionné ; l'authentification admin reste entièrement séparée.Front — tout dans
apps/web/srcpages/admin/{login,dashboard,monitoring,corrections,catalog}/; layout →layouts/AdminLayout.tsx; contexte + garde →features/admin/.api/admin-client.ts: classe renomméeAdminApiError(évite la collision avec leApiErrordeapi/client.ts), litVITE_API_URL(plus deVITE_ADMIN_API_URL)./admin/*dansApp.tsx, enveloppées d'AdminAuthProvider+RequireAdmin→ le probeGET /admin/auth/mene tourne que sous/admin, jamais sur les pages utilisateur.lib/zod-errors,services/error-message.serviceet le thème SCSS deapps/web. Bloc i18nadmin.*fusionné danslocales/fr/translation.json(les cléserrorsétaient déjà toutes présentes).CatalogPageavait une race (la réponse d'un onglet précédent écrasait l'onglet courant, exposée par le double-mount React 18 StrictMode) → ajout d'un refrequestSeq.Auth admin — inchangée
Table
AdminUser, cookieadmin_session,ADMIN_JWT_SECRET, scriptcreate-admin.ts, middlewarerequireAdmin. Séparation des privilèges conservée.Infra
docker-compose.yml: serviceadmin-web+ADMIN_WEB_PORTsupprimés (le conteneurappsert déjà le front construit, qui contient maintenant les routes/admin).ADMIN_CORS_ORIGINretiré (même origine désormais) :apps/api/src/config/env.ts,app.ts,.env.example.apps/web/cypress/e2e/admin-*.{cy.ts,feature}) tournent dans le jobweb.apps/api/.env.example: ajout deADMIN_JWT_SECRET/ADMIN_INITIAL_*(absents jusqu'ici — cause du « je ne vois pas l'admin »).rechartsajouté àapps/web/package.json;pnpm-lock.yamlrégénéré (net −76 lignes).specs/backend-architecture.md: section## adminmise à jour.Vérification
biome checkpropre ;tsc -b(web + api) OK ;pnpm -r build6/6 OK.webe2e : 102/103. L'unique échec est le flake pré-existantrecipe-form.feature« Preloads an existing recipe's ingredients when editing » (.ingredient-row__namenon visible — clipping viewport headless, échoue à l'identique surmain), sans rapport avec l'admin.admin-login.feature,admin-layout,admin-dashboard,admin-monitoring,admin-corrections,admin-catalog).Pour utiliser l'admin en local
ADMIN_JWT_SECRET=...(≥32 c, ≠JWT_SECRET) dansapps/api/.env, créer un admin (pnpm --filter api exec tsx src/scripts/create-admin.ts --email=… --password=… --name=…), puispnpm --filter web dev→ http://localhost:5173/admin/login🤖 Generated with Claude Code
L'admin etait une 2e app front Vite independante (apps/admin-web, port 5174, Dockerfile nginx, service compose dedie, job CI propre) non demandee. Toute l'UI passe dans apps/web sous le prefixe /admin ; seul le frontend est fusionne, l'authentification admin reste entierement separee. Front (apps/web/src) : - pages -> pages/admin/{login,dashboard,monitoring,corrections,catalog}/, layout -> layouts/AdminLayout.tsx, contexte + garde -> features/admin/. - client API -> api/admin-client.ts : classe AdminApiError (evite la collision avec ApiError), lit VITE_API_URL (plus de VITE_ADMIN_API_URL). - routes /admin/* dans App.tsx, enveloppees d'AdminAuthProvider + RequireAdmin -> le probe GET /admin/auth/me ne tourne que sous /admin. - reutilise l'i18n, lib/zod-errors, services/error-message.service et le theme SCSS de apps/web ; bloc i18n admin.* fusionne dans la locale fr (les cles errors etaient deja toutes presentes). - corrige une race dans CatalogPage (reponse d'un onglet precedent qui ecrasait l'onglet courant, exposee par le double-mount StrictMode) via un ref requestSeq. Auth admin inchangee : table AdminUser, cookie admin_session, ADMIN_JWT_SECRET, script create-admin.ts. Infra : - docker-compose : service admin-web + ADMIN_WEB_PORT supprimes (l'app `app` sert deja le front construit). - ADMIN_CORS_ORIGIN retire (meme origine) : env.ts, app.ts, .env.example. - job CI "Run admin-web E2E tests" supprime ; les specs admin-* tournent dans le job web (apps/web/cypress/e2e/admin-*.{cy.ts,feature}). - apps/api/.env.example : ajout ADMIN_JWT_SECRET / ADMIN_INITIAL_*. - recharts ajoute a apps/web ; pnpm-lock regenere. - specs/backend-architecture.md : section admin mise a jour. Verifie : biome + tsc -b (web/api) + pnpm -r build verts ; Cypress web 102/103 (l'unique echec est le flake pre-existant recipe-form.feature "Preloads ..." de clipping headless, sans rapport) ; 16/16 specs admin ; 45/45 composants. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.