From cbbaf2e94041e62bcdb033bc5d8df0f0068f9e8d Mon Sep 17 00:00:00 2001 From: ertopogo Date: Sun, 25 Jan 2026 02:14:27 +0100 Subject: ajout d'un fichier seed --- .gitignore | 2 + app-management.md | 144 ++++++++++++++++++++++++++++++++++++++++ backend/data/seed.json | 62 +++++++++++++++++ backend/scripts/patch-medusa.js | 11 --- 4 files changed, 208 insertions(+), 11 deletions(-) create mode 100644 backend/data/seed.json diff --git a/.gitignore b/.gitignore index 90f0d98..5968e00 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,5 @@ backend-error-m.txt backend-error-n.txt backend-error-o.txt backend-error-k_.txt +backend-error-M2.txt +backend-error-N2.txt diff --git a/app-management.md b/app-management.md index 20c5f5c..233ec1f 100644 --- a/app-management.md +++ b/app-management.md @@ -167,6 +167,150 @@ sudo docker compose run --rm backend node -e "const {Client}=require('pg'); cons - Controle le contenu de `payment_provider` si le backend plante au demarrage dans le service des providers de paiement. +## 3.2) Procedure complete + explications (incident backend 9000) + +Objectif : demarrer le backend sans crash, appliquer les correctifs, puis +verifier que l'API repond. + +### A) Confirmer les symptomes + +``` +sudo docker compose ps +sudo docker compose logs --tail=200 backend +curl -v http://localhost:9000/store/products +``` + +- `ps` : confirme si le conteneur redemarre en boucle. +- `logs` : montre l'erreur exacte (ex: TypeORM "Empty criteria"). +- `curl -v` : valide la reponse HTTP (200 attendu). + +### B) Comprendre la cause racine (pourquoi ca casse) + +Cause principale : +- Dans certaines versions de Medusa, plusieurs services font + `update({}, { is_installed: false })` sans criteres. +- Avec la version de TypeORM utilisee, `update` refuse les criteres vides + -> crash au demarrage. +- Le code fautif est dans les fichiers compiles de `node_modules` + (pas dans les sources du projet). + +Effet domino : +- Chaque correctif debloque l'etape suivante du demarrage, + revelant une autre erreur du meme type. + +### C) Correctif technique (patch postinstall) + +Le projet applique un patch automatique dans l'image Docker via : +- `backend/scripts/patch-medusa.js` (script) +- `backend/package.json` -> `postinstall` +- `backend/Dockerfile` -> `COPY scripts ./scripts` avant `npm install` + +Le patch remplace les `update({}, ...)` par un update explicite : +`createQueryBuilder().update().set(...).where('1=1').execute()`. + +### D) Forcer l'application du patch + +``` +cd /var/www/lucien-sens-bon +sudo docker compose build --no-cache backend +sudo docker compose up -d backend +``` + +- `--no-cache` : force `npm install` + `postinstall`, donc le patch. +- `up -d` : redeploie le conteneur avec la nouvelle image. + +### E) Verifier que le patch est bien applique + +``` +sudo docker compose run --rm backend sh -c "grep -n \"update({}, { is_installed: false })\" node_modules/@medusajs/medusa/dist/services/tax-provider.js || echo 'OK: patch present'" +``` + +- Si le grep ne trouve rien, la patch est presente. + +### F) Validation finale + +``` +sudo docker compose logs --tail=200 backend +curl -v http://localhost:9000/store/products +``` + +- Le log doit contenir `Server is ready on port: 9000`. +- L'API doit repondre `200` avec JSON. + +### G) Cas "Compiling Webpack" trop long + +Le plugin `@medusajs/admin` peut prendre du temps a compiler. +Si blocage > 10 min, on peut le desactiver temporairement dans +`backend/medusa-config.js` pour demarrer l'API, puis le reactiver. + +## 3.3) Verifier que l'image est saine apres reboot + +Objectif : s'assurer que le redemarrage ne casse pas l'API. + +### A) Redemarrer proprement + +``` +sudo docker compose restart backend +``` + +### B) Verifier etats + port + +``` +sudo docker compose ps +curl -v http://localhost:9000/store/products +``` + +- Le conteneur doit etre `Up` (pas `Restarting`). +- L'API doit repondre en `200`. + +### C) Verifier la patch dans l'image (controle rapide) + +``` +sudo docker compose run --rm backend sh -c "rg -n \"update\\(\\{\\}, \\{ is_installed: false \\}\\)\" node_modules/@medusajs/medusa/dist/services || echo 'OK: aucun update vide'" +``` + +- Si aucun match, les patchs sont bien en place. + +### D) Conseils pour eviter les surprises + +- Toujours rebuild `--no-cache` apres modification du patch. +- Ne pas editer `node_modules` a la main dans un conteneur running. +- Garder `backend/scripts/patch-medusa.js` versionne. + +## 3.4) Seed des produits + connexion storefront + +### A) Seed (donnees demo) + +``` +sudo docker compose run --rm backend npm run seed +``` + +- Necessite `backend/data/seed.json`. +- Sinon la commande echoue sans casser le backend. + +### B) Verifier l'API apres seed + +``` +curl -v http://localhost:9000/store/products +``` + +### C) Connecter la boutique (storefront) + +Verifier `NEXT_PUBLIC_MEDUSA_BACKEND_URL` dans `.env` : +``` +NEXT_PUBLIC_MEDUSA_BACKEND_URL=http://api.lsb.huitral.ruka.lan +``` + +Puis reconstruire le storefront : +``` +sudo docker compose up -d --build storefront +``` + +Si on travaille en local (pas via Apache), utiliser l'URL directe : +``` +NEXT_PUBLIC_MEDUSA_BACKEND_URL=http://:9000 +``` + ## 4) Apache / Reverse proxy Verifier les services Apache : diff --git a/backend/data/seed.json b/backend/data/seed.json new file mode 100644 index 0000000..2c6b906 --- /dev/null +++ b/backend/data/seed.json @@ -0,0 +1,62 @@ +{ + "store": { + "currencies": ["eur"] + }, + "users": [ + { + "email": "admin@lsb.local", + "password": "supersecret" + } + ], + "regions": [ + { + "id": "fr", + "name": "France", + "currency_code": "eur", + "tax_rate": 0, + "payment_providers": ["manual"], + "fulfillment_providers": ["manual"], + "countries": ["fr"] + } + ], + "shipping_options": [ + { + "name": "Standard", + "region_id": "fr", + "provider_id": "manual", + "price_type": "flat_rate", + "amount": 500 + } + ], + "products": [ + { + "title": "Savon Lavande", + "handle": "savon-lavande", + "description": "Savon artisanal a la lavande.", + "thumbnail": "https://via.placeholder.com/600x600.png?text=Savon+Lavande", + "options": [ + { + "title": "Taille" + } + ], + "variants": [ + { + "title": "100g", + "prices": [ + { + "currency_code": "eur", + "amount": 650 + } + ], + "options": [ + { + "value": "100g" + } + ], + "inventory_quantity": 100, + "manage_inventory": true + } + ] + } + ] +} diff --git a/backend/scripts/patch-medusa.js b/backend/scripts/patch-medusa.js index 82d6333..a3b7b0f 100644 --- a/backend/scripts/patch-medusa.js +++ b/backend/scripts/patch-medusa.js @@ -42,17 +42,6 @@ const taxProviderPath = path.join( "tax-provider.js" ); -const fulfillmentPath = path.join( - __dirname, - "..", - "node_modules", - "@medusajs", - "medusa", - "dist", - "services", - "fulfillment-provider.js" -); - const targets = [ { label: "payment-provider", -- cgit v1.2.3