summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--app-management.md144
-rw-r--r--backend/data/seed.json62
-rw-r--r--backend/scripts/patch-medusa.js11
4 files changed, 208 insertions, 11 deletions
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://<IP_DU_SERVEUR>: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",