From 39bae75d82fb5cb47793a1c42dc815c0d9777beb Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Tue, 12 Aug 2025 15:08:24 +0000 Subject: [PATCH] Fix issue with incorrect store assignment for customer orders and DLC products Implement enhanced logging and an alternative group ID access pattern in server routes to resolve an issue where customer orders and DLC products were incorrectly assigned to the default store instead of the user's designated store, particularly in production environments. Replit-Commit-Author: Agent Replit-Commit-Session-Id: b163d4c0-de5e-4f4e-a9c0-aed4c7049718 Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/b163d4c0-de5e-4f4e-a9c0-aed4c7049718/N0tzMbW --- PRODUCTION-GROUPID-FIX-URGENT.md | 66 ++++++++++++++++++++++++++++++++ server/routes.ts | 38 ++++++++++++++++-- 2 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 PRODUCTION-GROUPID-FIX-URGENT.md diff --git a/PRODUCTION-GROUPID-FIX-URGENT.md b/PRODUCTION-GROUPID-FIX-URGENT.md new file mode 100644 index 0000000..f2e4554 --- /dev/null +++ b/PRODUCTION-GROUPID-FIX-URGENT.md @@ -0,0 +1,66 @@ +# Fix Urgent Production - GroupId Magasin #2 → #1 + +## Problème Production Confirmé + +Utilisateur production assigné au magasin #2 (Houdemont) : +``` +group_id: 2, +group_name: 'Houdemont' +``` + +**MAIS** : DLC et commandes client créées pour magasin #1 malgré le fix backend. + +## Cause Probable + +Les logs production montrent que l'utilisateur a bien `group_id: 2` dans la base, mais la structure de données `user.userGroups` en production peut être différente du développement. + +## Fix Appliqué + +### 1. Debug Logs Production Renforcés +```javascript +console.log("🔍 DLC GroupId Debug Production:", { + originalGroupId: req.body.groupId, + userGroups: user.userGroups?.map(ug => ({ + groupId: ug.groupId, + groupName: ug.group?.name, + rawGroup: ug.group + })), + userGroupsLength: user.userGroups?.length, + firstUserGroup: user.userGroups?.[0] +}); +``` + +### 2. Accès Alternatif pour Production +```javascript +if (user.userGroups?.[0]?.groupId) { + finalGroupId = user.userGroups[0].groupId; +} else if (user.userGroups?.[0]?.group?.id) { + // Alternative access pattern for production + finalGroupId = user.userGroups[0].group.id; +} else { + finalGroupId = 1; // Emergency fallback +} +``` + +## Hypothèses Production + +1. **Structure différente** : `user.userGroups[0].group.id` au lieu de `user.userGroups[0].groupId` +2. **Mapping manquant** : Les relations ne sont pas correctement chargées en production +3. **Cache production** : Les données utilisateur ne sont pas à jour + +## Actions Requises + +1. ✅ **Logs debug renforcés** pour identifier structure exacte +2. ✅ **Accès alternatif** aux données groupe +3. 🔄 **Déployer en production** +4. 🧪 **Tester création DLC/commande avec employé magasin #2** +5. 📋 **Analyser logs pour identifier structure de données exacte** + +## Résultat Attendu + +Après déploiement, les logs production révéleront : +- Structure exacte de `user.userGroups[0]` +- Chemin d'accès correct pour `groupId` +- Fix automatique via accès alternatif + +**DÉPLOIEMENT PRODUCTION URGENT REQUIS** \ No newline at end of file diff --git a/server/routes.ts b/server/routes.ts index c2daec1..86f1183 100644 --- a/server/routes.ts +++ b/server/routes.ts @@ -1952,10 +1952,26 @@ RÉSUMÉ DU SCAN // Fix groupId BEFORE validation - use user's assigned group or fallback let finalGroupId = req.body.groupId; + + console.log("🔍 Customer Order GroupId Debug Production:", { + originalGroupId: req.body.groupId, + userGroups: user.userGroups?.map(ug => ({ + groupId: ug.groupId, + groupName: ug.group?.name, + rawGroup: ug.group + })), + userGroupsLength: user.userGroups?.length, + firstUserGroup: user.userGroups?.[0] + }); + if (!finalGroupId || finalGroupId === undefined || finalGroupId === null || finalGroupId === '') { if (user.userGroups?.[0]?.groupId) { finalGroupId = user.userGroups[0].groupId; console.log("🔧 Customer Order Backend Fix: Using user's assigned group:", finalGroupId); + } else if (user.userGroups?.[0]?.group?.id) { + // Alternative access pattern for production + finalGroupId = user.userGroups[0].group.id; + console.log("🔧 Customer Order Backend Fix: Using user's group.id:", finalGroupId); } else { finalGroupId = 1; // Emergency fallback console.log("🚨 Customer Order Backend Fix: Using emergency fallback groupId:", finalGroupId); @@ -2355,13 +2371,29 @@ RÉSUMÉ DU SCAN // Fix groupId if missing - use user's assigned group or fallback let finalGroupId = req.body.groupId; - if (!finalGroupId) { + + console.log("🔍 DLC GroupId Debug Production:", { + originalGroupId: req.body.groupId, + userGroups: user.userGroups?.map(ug => ({ + groupId: ug.groupId, + groupName: ug.group?.name, + rawGroup: ug.group + })), + userGroupsLength: user.userGroups?.length, + firstUserGroup: user.userGroups?.[0] + }); + + if (!finalGroupId || finalGroupId === undefined || finalGroupId === null) { if (user.userGroups?.[0]?.groupId) { finalGroupId = user.userGroups[0].groupId; - console.log("🔧 Backend Fix: Using user's assigned group:", finalGroupId); + console.log("🔧 DLC Backend Fix: Using user's assigned group:", finalGroupId); + } else if (user.userGroups?.[0]?.group?.id) { + // Alternative access pattern for production + finalGroupId = user.userGroups[0].group.id; + console.log("🔧 DLC Backend Fix: Using user's group.id:", finalGroupId); } else { finalGroupId = 1; // Emergency fallback - console.log("🚨 Backend Fix: Using emergency fallback groupId:", finalGroupId); + console.log("🚨 DLC Backend Fix: Using emergency fallback groupId:", finalGroupId); } }