[2026-02-13 16:46:55] ===== IMPORT_STOCK START ===== [2026-02-13 16:46:55] ✅ Config files found [2026-02-13 16:46:55] ✅ DB connected [2026-02-13 16:46:55] 📥 File upload detected: StockTicketEasyBuc.xlsx [2026-02-13 16:46:55] 📄 File extension: xlsx [2026-02-13 16:46:55] ✅ File found in mapping: {"receive":"StockTicketEasyBuc.xlsx","final":"StockTicketEasyBuc.csv","mail":"buc@mail"} [2026-02-13 16:46:55] 📁 Target folder: uploads/old/2026-02-13 [2026-02-13 16:46:55] 📖 Parsing Excel file... [2026-02-13 16:46:55] ✅ Excel parsed successfully. Row count: 4986 [2026-02-13 16:46:55] ✅ Header found at line: 1 [2026-02-13 16:46:55] ✅ All critical columns found: EAN, PV, STOCK, CTM [2026-02-13 16:46:55] 🔄 Processing rows... [2026-02-13 16:46:55] ✅ CSV file created: uploads/old/2026-02-13/StockTicketEasyBuc.csv with 4985 products [2026-02-13 16:46:55] 🚀 Creating products via API... [2026-02-13 16:46:55] 🔧 createProductsFromXlsx function called [2026-02-13 16:46:55] 📤 Sending 4985 EANs to API endpoint [2026-02-13 16:47:00] ✅ API response received (HTTP 200): { "status": "success", "successCount": 52, "errorCount": 0, "total": 4985, "erro [2026-02-13 16:47:00] 🏪 Fetching stores for csv_path: StockTicketEasyBuc.csv [2026-02-13 16:47:00] ✅ Found 1 stores [2026-02-13 16:47:00] 📨 Broadcasting CSV to stores... [2026-02-13 16:47:00] 📤 Sending to store: Buc (ID: 1) [2026-02-13 16:47:05] ✅ Broadcast sent to Buc (HTTP 200) [2026-02-13 16:47:05] ===== IMPORT_STOCK END (SUCCESS) ===== [2026-02-14 07:35:57] ===== IMPORT_STOCK START ===== [2026-02-14 07:35:57] ✅ Config files found [2026-02-14 07:35:57] ✅ DB connected [2026-02-14 07:35:57] 📥 File upload detected: StockTicketEasyMonoprix.xlsx [2026-02-14 07:35:57] 📄 File extension: xlsx [2026-02-14 07:35:57] ✅ File found in mapping: {"receive":"StockTicketEasyMonoprix.xlsx","final":"StockTicketEasyMonoprix.csv","mail":"monop@mail"} [2026-02-14 07:35:57] 📁 Target folder: uploads/old/2026-02-14 [2026-02-14 07:35:57] 📁 Created target folder [2026-02-14 07:35:57] 📖 Parsing Excel file... [2026-02-14 07:35:58] ✅ Excel parsed successfully. Row count: 4959 [2026-02-14 07:35:58] ✅ Header found at line: 1 [2026-02-14 07:35:58] ✅ All critical columns found: EAN, PV, STOCK, CTM [2026-02-14 07:35:58] 🔄 Processing rows... [2026-02-14 07:35:58] ✅ CSV file created: uploads/old/2026-02-14/StockTicketEasyMonoprix.csv with 4958 products [2026-02-14 07:35:58] 🚀 Creating products via API... [2026-02-14 07:35:58] 🔧 createProductsFromXlsx function called [2026-02-14 07:35:58] 📤 Sending 4958 EANs to API endpoint [2026-02-14 07:36:02] ✅ API response received (HTTP 200): { "status": "success", "successCount": 3, "errorCount": 0, "total": 4958, "error [2026-02-14 07:36:02] 🏪 Fetching stores for csv_path: StockTicketEasyMonoprix.csv [2026-02-14 07:36:02] ✅ Found 5 stores [2026-02-14 07:36:02] 📨 Broadcasting CSV to stores... [2026-02-14 07:36:02] 📤 Sending to store: Clamart (ID: 0176) [2026-02-14 07:36:02] ✅ Broadcast sent to Clamart (HTTP 200) [2026-02-14 07:36:02] 📤 Sending to store: Clermont_Ferrand (ID: 0176) [2026-02-14 07:36:03] ✅ Broadcast sent to Clermont_Ferrand (HTTP 200) [2026-02-14 07:36:03] 📤 Sending to store: Fontenay (ID: 1134) [2026-02-14 07:36:03] ✅ Broadcast sent to Fontenay (HTTP 200) [2026-02-14 07:36:03] 📤 Sending to store: Montpellier (ID: 0107) [2026-02-14 07:36:03] ✅ Broadcast sent to Montpellier (HTTP 200) [2026-02-14 07:36:03] 📤 Sending to store: Sevres (ID: 0242) [2026-02-14 07:36:03] ✅ Broadcast sent to Sevres (HTTP 200) [2026-02-14 07:36:03] ===== IMPORT_STOCK END (SUCCESS) ===== [2026-02-16 06:26:58] ===== IMPORT_STOCK START ===== [2026-02-16 06:26:58] ✅ Config files found [2026-02-16 06:26:58] ✅ DB connected [2026-02-16 06:26:58] 📥 File upload detected: StockTicketEasyMonoprix.xlsx [2026-02-16 06:26:58] 📄 File extension: xlsx [2026-02-16 06:26:58] ✅ File found in mapping: {"receive":"StockTicketEasyMonoprix.xlsx","final":"StockTicketEasyMonoprix.csv","mail":"monop@mail"} [2026-02-16 06:26:58] 📁 Target folder: uploads/old/2026-02-16 [2026-02-16 06:26:58] 📁 Created target folder [2026-02-16 06:26:58] 📖 Parsing Excel file... [2026-02-16 06:26:58] ✅ Excel parsed successfully. Row count: 4957 [2026-02-16 06:26:58] ✅ Header found at line: 1 [2026-02-16 06:26:58] ✅ All critical columns found: EAN, PV, STOCK, CTM [2026-02-16 06:26:58] 🔄 Processing rows... [2026-02-16 06:26:58] ✅ CSV file created: uploads/old/2026-02-16/StockTicketEasyMonoprix.csv with 4956 products [2026-02-16 06:26:58] 🚀 Creating products via API... [2026-02-16 06:26:58] 🔧 createProductsFromXlsx function called [2026-02-16 06:26:58] 📤 Sending 4956 EANs to API endpoint [2026-02-16 06:27:02] ✅ API response received (HTTP 200): { "status": "success", "successCount": 0, "errorCount": 0, "total": 4956, "error [2026-02-16 06:27:02] 🏪 Fetching stores for csv_path: StockTicketEasyMonoprix.csv [2026-02-16 06:27:02] ✅ Found 5 stores [2026-02-16 06:27:02] 📨 Broadcasting CSV to stores... [2026-02-16 06:27:02] 📤 Sending to store: Clamart (ID: 0176) [2026-02-16 06:27:03] ✅ Broadcast sent to Clamart (HTTP 200) [2026-02-16 06:27:03] 📤 Sending to store: Clermont_Ferrand (ID: 0176) [2026-02-16 06:27:03] ✅ Broadcast sent to Clermont_Ferrand (HTTP 200) [2026-02-16 06:27:03] 📤 Sending to store: Fontenay (ID: 1134) [2026-02-16 06:27:04] ✅ Broadcast sent to Fontenay (HTTP 200) [2026-02-16 06:27:04] 📤 Sending to store: Montpellier (ID: 0107) [2026-02-16 06:27:04] ✅ Broadcast sent to Montpellier (HTTP 200) [2026-02-16 06:27:04] 📤 Sending to store: Sevres (ID: 0242) [2026-02-16 06:27:04] ✅ Broadcast sent to Sevres (HTTP 200) [2026-02-16 06:27:04] ===== IMPORT_STOCK END (SUCCESS) ===== [2026-02-16 09:48:57] ===== IMPORT_STOCK START ===== [2026-02-16 09:48:57] ✅ Config files found [2026-02-16 09:48:57] ✅ DB connected [2026-02-16 09:48:57] 📥 File upload detected: StockTicketEasyMonoprix.xlsx [2026-02-16 09:48:57] 📄 File extension: xlsx [2026-02-16 09:48:57] ✅ File found in mapping: {"receive":"StockTicketEasyMonoprix.xlsx","final":"StockTicketEasyMonoprix.csv","mail":"monop@mail"} [2026-02-16 09:48:57] 📁 Target folder: uploads/old/2026-02-16 [2026-02-16 09:48:57] 📖 Parsing Excel file... [2026-02-16 09:48:57] ✅ Excel parsed successfully. Row count: 4957 [2026-02-16 09:48:57] ✅ Header found at line: 1 [2026-02-16 09:48:57] ✅ All critical columns found: EAN, PV, STOCK, CTM [2026-02-16 09:48:57] 🔄 Processing rows... [2026-02-16 09:48:57] ✅ CSV file created: uploads/old/2026-02-16/StockTicketEasyMonoprix.csv with 4956 products [2026-02-16 09:48:57] 🚀 Creating products via API... [2026-02-16 09:48:57] 🔧 createProductsFromXlsx function called [2026-02-16 09:48:57] 📤 Sending 4956 EANs to API endpoint [2026-02-16 09:48:59] ===== IMPORT_STOCK START ===== [2026-02-16 09:48:59] ✅ Config files found [2026-02-16 09:48:59] ✅ DB connected [2026-02-16 09:48:59] 📥 File upload detected: StockTicketEasyMonoprix.xlsx [2026-02-16 09:48:59] 📄 File extension: xlsx [2026-02-16 09:48:59] ✅ File found in mapping: {"receive":"StockTicketEasyMonoprix.xlsx","final":"StockTicketEasyMonoprix.csv","mail":"monop@mail"} [2026-02-16 09:48:59] 📁 Target folder: uploads/old/2026-02-16 [2026-02-16 09:48:59] 📖 Parsing Excel file... [2026-02-16 09:48:59] ✅ Excel parsed successfully. Row count: 4958 [2026-02-16 09:48:59] ✅ Header found at line: 1 [2026-02-16 09:48:59] ✅ All critical columns found: EAN, PV, STOCK, CTM [2026-02-16 09:48:59] 🔄 Processing rows... [2026-02-16 09:48:59] ✅ CSV file created: uploads/old/2026-02-16/StockTicketEasyMonoprix.csv with 4957 products [2026-02-16 09:48:59] 🚀 Creating products via API... [2026-02-16 09:48:59] 🔧 createProductsFromXlsx function called [2026-02-16 09:48:59] 📤 Sending 4957 EANs to API endpoint [2026-02-16 09:49:02] ✅ API response received (HTTP 200): { "status": "success", "successCount": 0, "errorCount": 0, "total": 4956, "error [2026-02-16 09:49:02] 🏪 Fetching stores for csv_path: StockTicketEasyMonoprix.csv [2026-02-16 09:49:02] ✅ Found 25 stores [2026-02-16 09:49:02] 📨 Broadcasting CSV to stores... [2026-02-16 09:49:02] 📤 Sending to store: Aix (ID: 0176) [2026-02-16 09:49:02] ✅ Broadcast sent to Aix (HTTP 200) [2026-02-16 09:49:02] 📤 Sending to store: Aulnay (ID: 0295) [2026-02-16 09:49:02] ✅ Broadcast sent to Aulnay (HTTP 200) [2026-02-16 09:49:02] 📤 Sending to store: Avignon (ID: 0135) [2026-02-16 09:49:03] ✅ Broadcast sent to Avignon (HTTP 200) [2026-02-16 09:49:03] 📤 Sending to store: Belvedere (ID: 0325) [2026-02-16 09:49:03] ✅ Broadcast sent to Belvedere (HTTP 200) [2026-02-16 09:49:03] 📤 Sending to store: Brunoy (ID: 2576) [2026-02-16 09:49:03] ✅ Broadcast sent to Brunoy (HTTP 200) [2026-02-16 09:49:03] 📤 Sending to store: Clamart (ID: 0176) [2026-02-16 09:49:03] ✅ Broadcast sent to Clamart (HTTP 200) [2026-02-16 09:49:03] 📤 Sending to store: Clermont_Ferrand (ID: 0176) [2026-02-16 09:49:04] ✅ Broadcast sent to Clermont_Ferrand (HTTP 200) [2026-02-16 09:49:04] 📤 Sending to store: Convention (ID: 0324) [2026-02-16 09:49:04] ✅ API response received (HTTP 200): { "status": "success", "successCount": 0, "errorCount": 0, "total": 4957, "error [2026-02-16 09:49:04] 🏪 Fetching stores for csv_path: StockTicketEasyMonoprix.csv [2026-02-16 09:49:04] ✅ Found 25 stores [2026-02-16 09:49:04] 📨 Broadcasting CSV to stores... [2026-02-16 09:49:04] 📤 Sending to store: Aix (ID: 0176) [2026-02-16 09:49:04] ✅ Broadcast sent to Convention (HTTP 200) [2026-02-16 09:49:04] 📤 Sending to store: Crimee (ID: 0292) [2026-02-16 09:49:04] ✅ Broadcast sent to Crimee (HTTP 200) [2026-02-16 09:49:04] 📤 Sending to store: Dausmesnil (ID: 0253) [2026-02-16 09:49:04] ✅ Broadcast sent to Aix (HTTP 200) [2026-02-16 09:49:04] 📤 Sending to store: Aulnay (ID: 0295) [2026-02-16 09:49:04] ✅ Broadcast sent to Dausmesnil (HTTP 200) [2026-02-16 09:49:04] 📤 Sending to store: Dimax (ID: 0245) [2026-02-16 09:49:04] ✅ Broadcast sent to Aulnay (HTTP 200) [2026-02-16 09:49:04] 📤 Sending to store: Avignon (ID: 0135) [2026-02-16 09:49:04] ✅ Broadcast sent to Dimax (HTTP 200) [2026-02-16 09:49:04] 📤 Sending to store: Draveil (ID: 2571) [2026-02-16 09:49:04] ✅ Broadcast sent to Avignon (HTTP 200) [2026-02-16 09:49:04] 📤 Sending to store: Belvedere (ID: 0325) [2026-02-16 09:49:04] ✅ Broadcast sent to Draveil (HTTP 200) [2026-02-16 09:49:04] 📤 Sending to store: Fontenay (ID: 1134) [2026-02-16 09:49:04] ✅ Broadcast sent to Belvedere (HTTP 200) [2026-02-16 09:49:04] 📤 Sending to store: Brunoy (ID: 2576) [2026-02-16 09:49:05] ✅ Broadcast sent to Brunoy (HTTP 200) [2026-02-16 09:49:05] 📤 Sending to store: Clamart (ID: 0176) [2026-02-16 09:49:05] ✅ Broadcast sent to Fontenay (HTTP 200) [2026-02-16 09:49:05] 📤 Sending to store: Joinville (ID: 2389) [2026-02-16 09:49:05] ✅ Broadcast sent to Joinville (HTTP 200) [2026-02-16 09:49:05] 📤 Sending to store: Le perreux (ID: 0312) [2026-02-16 09:49:05] ✅ Broadcast sent to Le perreux (HTTP 200) [2026-02-16 09:49:05] 📤 Sending to store: Marseille (ID: 0) [2026-02-16 09:49:05] ✅ Broadcast sent to Marseille (HTTP 400) [2026-02-16 09:49:05] 📤 Sending to store: Montgeron (ID: 0) [2026-02-16 09:49:05] ✅ Broadcast sent to Clamart (HTTP 200) [2026-02-16 09:49:05] 📤 Sending to store: Clermont_Ferrand (ID: 0176) [2026-02-16 09:49:05] ✅ Broadcast sent to Montgeron (HTTP 400) [2026-02-16 09:49:05] 📤 Sending to store: Montpellier (ID: 0107) [2026-02-16 09:49:05] ✅ Broadcast sent to Montpellier (HTTP 200) [2026-02-16 09:49:05] 📤 Sending to store: Nimes (ID: 2704) [2026-02-16 09:49:05] ✅ Broadcast sent to Nimes (HTTP 200) [2026-02-16 09:49:05] 📤 Sending to store: Nogent (ID: 0) [2026-02-16 09:49:05] ✅ Broadcast sent to Nogent (HTTP 400) [2026-02-16 09:49:05] 📤 Sending to store: roquette (ID: 1149) [2026-02-16 09:49:05] ✅ Broadcast sent to Clermont_Ferrand (HTTP 200) [2026-02-16 09:49:05] 📤 Sending to store: Convention (ID: 0324) [2026-02-16 09:49:05] ✅ Broadcast sent to roquette (HTTP 200) [2026-02-16 09:49:05] 📤 Sending to store: Saint Paul (ID: 0294) [2026-02-16 09:49:05] ✅ Broadcast sent to Convention (HTTP 200) [2026-02-16 09:49:05] 📤 Sending to store: Crimee (ID: 0292) [2026-02-16 09:49:05] ✅ Broadcast sent to Saint Paul (HTTP 200) [2026-02-16 09:49:05] 📤 Sending to store: Sete (ID: 2759) [2026-02-16 09:49:06] ✅ Broadcast sent to Sete (HTTP 200) [2026-02-16 09:49:06] 📤 Sending to store: Sevres (ID: 0242) [2026-02-16 09:49:06] ✅ Broadcast sent to Crimee (HTTP 200) [2026-02-16 09:49:06] 📤 Sending to store: Dausmesnil (ID: 0253) [2026-02-16 09:49:06] ✅ Broadcast sent to Sevres (HTTP 200) [2026-02-16 09:49:06] 📤 Sending to store: Vinci (ID: 0216) [2026-02-16 09:49:06] ✅ Broadcast sent to Dausmesnil (HTTP 200) [2026-02-16 09:49:06] 📤 Sending to store: Dimax (ID: 0245) [2026-02-16 09:49:06] ✅ Broadcast sent to Vinci (HTTP 200) [2026-02-16 09:49:06] ===== IMPORT_STOCK END (SUCCESS) ===== [2026-02-16 09:49:06] ✅ Broadcast sent to Dimax (HTTP 200) [2026-02-16 09:49:06] 📤 Sending to store: Draveil (ID: 2571) [2026-02-16 09:49:06] ✅ Broadcast sent to Draveil (HTTP 200) [2026-02-16 09:49:06] 📤 Sending to store: Fontenay (ID: 1134) [2026-02-16 09:49:06] ✅ Broadcast sent to Fontenay (HTTP 200) [2026-02-16 09:49:06] 📤 Sending to store: Joinville (ID: 2389) [2026-02-16 09:49:07] ✅ Broadcast sent to Joinville (HTTP 200) [2026-02-16 09:49:07] 📤 Sending to store: Le perreux (ID: 0312) [2026-02-16 09:49:07] ✅ Broadcast sent to Le perreux (HTTP 200) [2026-02-16 09:49:07] 📤 Sending to store: Marseille (ID: 0) [2026-02-16 09:49:07] ✅ Broadcast sent to Marseille (HTTP 400) [2026-02-16 09:49:07] 📤 Sending to store: Montgeron (ID: 0) [2026-02-16 09:49:07] ✅ Broadcast sent to Montgeron (HTTP 400) [2026-02-16 09:49:07] 📤 Sending to store: Montpellier (ID: 0107) [2026-02-16 09:49:07] ✅ Broadcast sent to Montpellier (HTTP 200) [2026-02-16 09:49:07] 📤 Sending to store: Nimes (ID: 2704) [2026-02-16 09:49:07] ✅ Broadcast sent to Nimes (HTTP 200) [2026-02-16 09:49:07] 📤 Sending to store: Nogent (ID: 0) [2026-02-16 09:49:07] ✅ Broadcast sent to Nogent (HTTP 400) [2026-02-16 09:49:07] 📤 Sending to store: roquette (ID: 1149) [2026-02-16 09:49:07] ✅ Broadcast sent to roquette (HTTP 200) [2026-02-16 09:49:07] 📤 Sending to store: Saint Paul (ID: 0294) [2026-02-16 09:49:07] ✅ Broadcast sent to Saint Paul (HTTP 200) [2026-02-16 09:49:07] 📤 Sending to store: Sete (ID: 2759) [2026-02-16 09:49:07] ✅ Broadcast sent to Sete (HTTP 200) [2026-02-16 09:49:07] 📤 Sending to store: Sevres (ID: 0242) [2026-02-16 09:49:08] ✅ Broadcast sent to Sevres (HTTP 200) [2026-02-16 09:49:08] 📤 Sending to store: Vinci (ID: 0216) [2026-02-16 09:49:08] ===== IMPORT_STOCK START ===== [2026-02-16 09:49:08] ✅ Config files found [2026-02-16 09:49:08] ✅ DB connected [2026-02-16 09:49:08] 📥 File upload detected: StockTicketEasyMonoprix.xlsx [2026-02-16 09:49:08] 📄 File extension: xlsx [2026-02-16 09:49:08] ✅ File found in mapping: {"receive":"StockTicketEasyMonoprix.xlsx","final":"StockTicketEasyMonoprix.csv","mail":"monop@mail"} [2026-02-16 09:49:08] 📁 Target folder: uploads/old/2026-02-16 [2026-02-16 09:49:08] 📖 Parsing Excel file... [2026-02-16 09:49:08] ✅ Broadcast sent to Vinci (HTTP 200) [2026-02-16 09:49:08] ===== IMPORT_STOCK END (SUCCESS) ===== [2026-02-16 09:49:08] ✅ Excel parsed successfully. Row count: 4958 [2026-02-16 09:49:08] ✅ Header found at line: 1 [2026-02-16 09:49:08] ✅ All critical columns found: EAN, PV, STOCK, CTM [2026-02-16 09:49:08] 🔄 Processing rows... [2026-02-16 09:49:08] ✅ CSV file created: uploads/old/2026-02-16/StockTicketEasyMonoprix.csv with 4957 products [2026-02-16 09:49:08] 🚀 Creating products via API... [2026-02-16 09:49:08] 🔧 createProductsFromXlsx function called [2026-02-16 09:49:08] 📤 Sending 4957 EANs to API endpoint [2026-02-16 09:49:12] ✅ API response received (HTTP 200): { "status": "success", "successCount": 0, "errorCount": 0, "total": 4957, "error [2026-02-16 09:49:12] 🏪 Fetching stores for csv_path: StockTicketEasyMonoprix.csv [2026-02-16 09:49:12] ✅ Found 25 stores [2026-02-16 09:49:12] 📨 Broadcasting CSV to stores... [2026-02-16 09:49:12] 📤 Sending to store: Aix (ID: 0176) [2026-02-16 09:49:13] ✅ Broadcast sent to Aix (HTTP 200) [2026-02-16 09:49:13] 📤 Sending to store: Aulnay (ID: 0295) [2026-02-16 09:49:13] ✅ Broadcast sent to Aulnay (HTTP 200) [2026-02-16 09:49:13] 📤 Sending to store: Avignon (ID: 0135) [2026-02-16 09:49:13] ✅ Broadcast sent to Avignon (HTTP 200) [2026-02-16 09:49:13] 📤 Sending to store: Belvedere (ID: 0325) [2026-02-16 09:49:13] ✅ Broadcast sent to Belvedere (HTTP 200) [2026-02-16 09:49:13] 📤 Sending to store: Brunoy (ID: 2576) [2026-02-16 09:49:13] ✅ Broadcast sent to Brunoy (HTTP 200) [2026-02-16 09:49:13] 📤 Sending to store: Clamart (ID: 0176) [2026-02-16 09:49:14] ✅ Broadcast sent to Clamart (HTTP 200) [2026-02-16 09:49:14] 📤 Sending to store: Clermont_Ferrand (ID: 0176) [2026-02-16 09:49:14] ✅ Broadcast sent to Clermont_Ferrand (HTTP 200) [2026-02-16 09:49:14] 📤 Sending to store: Convention (ID: 0324) [2026-02-16 09:49:14] ✅ Broadcast sent to Convention (HTTP 200) [2026-02-16 09:49:14] 📤 Sending to store: Crimee (ID: 0292) [2026-02-16 09:49:14] ✅ Broadcast sent to Crimee (HTTP 200) [2026-02-16 09:49:14] 📤 Sending to store: Dausmesnil (ID: 0253) [2026-02-16 09:49:15] ✅ Broadcast sent to Dausmesnil (HTTP 200) [2026-02-16 09:49:15] 📤 Sending to store: Dimax (ID: 0245) [2026-02-16 09:49:15] ✅ Broadcast sent to Dimax (HTTP 200) [2026-02-16 09:49:15] 📤 Sending to store: Draveil (ID: 2571) [2026-02-16 09:49:15] ✅ Broadcast sent to Draveil (HTTP 200) [2026-02-16 09:49:15] 📤 Sending to store: Fontenay (ID: 1134) [2026-02-16 09:49:15] ✅ Broadcast sent to Fontenay (HTTP 200) [2026-02-16 09:49:15] 📤 Sending to store: Joinville (ID: 2389) [2026-02-16 09:49:15] ✅ Broadcast sent to Joinville (HTTP 200) [2026-02-16 09:49:15] 📤 Sending to store: Le perreux (ID: 0312) [2026-02-16 09:49:16] ✅ Broadcast sent to Le perreux (HTTP 200) [2026-02-16 09:49:16] 📤 Sending to store: Marseille (ID: 0) [2026-02-16 09:49:16] ✅ Broadcast sent to Marseille (HTTP 400) [2026-02-16 09:49:16] 📤 Sending to store: Montgeron (ID: 0) [2026-02-16 09:49:16] ✅ Broadcast sent to Montgeron (HTTP 400) [2026-02-16 09:49:16] 📤 Sending to store: Montpellier (ID: 0107) [2026-02-16 09:49:16] ✅ Broadcast sent to Montpellier (HTTP 200) [2026-02-16 09:49:16] 📤 Sending to store: Nimes (ID: 2704) [2026-02-16 09:49:16] ✅ Broadcast sent to Nimes (HTTP 200) [2026-02-16 09:49:16] 📤 Sending to store: Nogent (ID: 0) [2026-02-16 09:49:16] ✅ Broadcast sent to Nogent (HTTP 400) [2026-02-16 09:49:16] 📤 Sending to store: roquette (ID: 1149) [2026-02-16 09:49:16] ✅ Broadcast sent to roquette (HTTP 200) [2026-02-16 09:49:16] 📤 Sending to store: Saint Paul (ID: 0294) [2026-02-16 09:49:16] ✅ Broadcast sent to Saint Paul (HTTP 200) [2026-02-16 09:49:16] 📤 Sending to store: Sete (ID: 2759) [2026-02-16 09:49:16] ✅ Broadcast sent to Sete (HTTP 200) [2026-02-16 09:49:16] 📤 Sending to store: Sevres (ID: 0242) [2026-02-16 09:49:16] ✅ Broadcast sent to Sevres (HTTP 200) [2026-02-16 09:49:16] 📤 Sending to store: Vinci (ID: 0216) [2026-02-16 09:49:17] ✅ Broadcast sent to Vinci (HTTP 200) [2026-02-16 09:49:17] ===== IMPORT_STOCK END (SUCCESS) ===== [2026-02-17 06:25:38] ===== IMPORT_STOCK START ===== [2026-02-17 06:25:38] ✅ Config files found [2026-02-17 06:25:38] ✅ DB connected [2026-02-17 06:25:38] 📥 File upload detected: StockTicketEasyMonoprix.xlsx [2026-02-17 06:25:38] 📄 File extension: xlsx [2026-02-17 06:25:38] ✅ File found in mapping: {"receive":"StockTicketEasyMonoprix.xlsx","final":"StockTicketEasyMonoprix.csv","mail":"monop@mail"} [2026-02-17 06:25:38] 📁 Target folder: uploads/old/2026-02-17 [2026-02-17 06:25:38] 📁 Created target folder [2026-02-17 06:25:38] 📖 Parsing Excel file... [2026-02-17 06:25:38] ✅ Excel parsed successfully. Row count: 4957 [2026-02-17 06:25:38] ✅ Header found at line: 1 [2026-02-17 06:25:38] ✅ All critical columns found: EAN, PV, STOCK, CTM [2026-02-17 06:25:38] 🔄 Processing rows... [2026-02-17 06:25:38] ✅ CSV file created: uploads/old/2026-02-17/StockTicketEasyMonoprix.csv with 4956 products [2026-02-17 06:25:38] 🚀 Creating products via API... [2026-02-17 06:25:38] 🔧 createProductsFromXlsx function called [2026-02-17 06:25:38] 📤 Sending 4956 EANs to API endpoint [2026-02-17 06:25:42] ✅ API response received (HTTP 200): { "status": "success", "successCount": 0, "errorCount": 0, "total": 4956, "error [2026-02-17 06:25:42] 🏪 Fetching stores for csv_path: StockTicketEasyMonoprix.csv [2026-02-17 06:25:42] ✅ Found 25 stores [2026-02-17 06:25:42] 📨 Broadcasting CSV to stores... [2026-02-17 06:25:42] 📤 Sending to store: Aix (ID: 0176) [2026-02-17 06:25:43] ✅ Broadcast sent to Aix (HTTP 200) [2026-02-17 06:25:43] 📤 Sending to store: Aulnay (ID: 0295) [2026-02-17 06:25:43] ✅ Broadcast sent to Aulnay (HTTP 200) [2026-02-17 06:25:43] 📤 Sending to store: Avignon (ID: 0135) [2026-02-17 06:25:43] ✅ Broadcast sent to Avignon (HTTP 200) [2026-02-17 06:25:43] 📤 Sending to store: Belvedere (ID: 0325) [2026-02-17 06:25:43] ✅ Broadcast sent to Belvedere (HTTP 200) [2026-02-17 06:25:43] 📤 Sending to store: Brunoy (ID: 2576) [2026-02-17 06:25:44] ✅ Broadcast sent to Brunoy (HTTP 200) [2026-02-17 06:25:44] 📤 Sending to store: Clamart (ID: 0176) [2026-02-17 06:25:44] ✅ Broadcast sent to Clamart (HTTP 200) [2026-02-17 06:25:44] 📤 Sending to store: Clermont_Ferrand (ID: 0176) [2026-02-17 06:25:44] ✅ Broadcast sent to Clermont_Ferrand (HTTP 200) [2026-02-17 06:25:44] 📤 Sending to store: Convention (ID: 0324) [2026-02-17 06:25:44] ✅ Broadcast sent to Convention (HTTP 200) [2026-02-17 06:25:44] 📤 Sending to store: Crimee (ID: 0292) [2026-02-17 06:25:44] ✅ Broadcast sent to Crimee (HTTP 200) [2026-02-17 06:25:44] 📤 Sending to store: Dausmesnil (ID: 0253) [2026-02-17 06:25:45] ✅ Broadcast sent to Dausmesnil (HTTP 200) [2026-02-17 06:25:45] 📤 Sending to store: Dimax (ID: 0245) [2026-02-17 06:25:45] ✅ Broadcast sent to Dimax (HTTP 200) [2026-02-17 06:25:45] 📤 Sending to store: Draveil (ID: 2571) [2026-02-17 06:25:45] ✅ Broadcast sent to Draveil (HTTP 200) [2026-02-17 06:25:45] 📤 Sending to store: Fontenay (ID: 1134) [2026-02-17 06:25:45] ✅ Broadcast sent to Fontenay (HTTP 200) [2026-02-17 06:25:45] 📤 Sending to store: Joinville (ID: 2389) [2026-02-17 06:25:45] ✅ Broadcast sent to Joinville (HTTP 200) [2026-02-17 06:25:45] 📤 Sending to store: Le perreux (ID: 0312) [2026-02-17 06:25:45] ✅ Broadcast sent to Le perreux (HTTP 200) [2026-02-17 06:25:45] 📤 Sending to store: Marseille (ID: 0344) [2026-02-17 06:25:46] ✅ Broadcast sent to Marseille (HTTP 200) [2026-02-17 06:25:46] 📤 Sending to store: Montgeron (ID: 0) [2026-02-17 06:25:46] ✅ Broadcast sent to Montgeron (HTTP 400) [2026-02-17 06:25:46] 📤 Sending to store: Montpellier (ID: 0107) [2026-02-17 06:25:46] ✅ Broadcast sent to Montpellier (HTTP 200) [2026-02-17 06:25:46] 📤 Sending to store: Nimes (ID: 2704) [2026-02-17 06:25:46] ✅ Broadcast sent to Nimes (HTTP 200) [2026-02-17 06:25:46] 📤 Sending to store: Nogent (ID: 0) [2026-02-17 06:25:46] ✅ Broadcast sent to Nogent (HTTP 400) [2026-02-17 06:25:46] 📤 Sending to store: roquette (ID: 1149) [2026-02-17 06:25:46] ✅ Broadcast sent to roquette (HTTP 200) [2026-02-17 06:25:46] 📤 Sending to store: Saint Paul (ID: 0294) [2026-02-17 06:25:46] ✅ Broadcast sent to Saint Paul (HTTP 200) [2026-02-17 06:25:46] 📤 Sending to store: Sete (ID: 2759) [2026-02-17 06:25:46] ✅ Broadcast sent to Sete (HTTP 200) [2026-02-17 06:25:46] 📤 Sending to store: Sevres (ID: 0242) [2026-02-17 06:25:47] ✅ Broadcast sent to Sevres (HTTP 200) [2026-02-17 06:25:47] 📤 Sending to store: Vinci (ID: 0216) [2026-02-17 06:25:47] ✅ Broadcast sent to Vinci (HTTP 200) [2026-02-17 06:25:47] ===== IMPORT_STOCK END (SUCCESS) ===== [2026-02-19 12:13:34] ===== IMPORT_STOCK START ===== [2026-02-19 12:13:34] ✅ Config files found [2026-02-19 12:13:34] ✅ DB connected [2026-02-19 12:13:34] ⚠️ Invalid request - POST with file required [2026-02-22 17:20:23] ===== IMPORT_STOCK START ===== [2026-02-22 17:20:23] ✅ Config files found [2026-02-22 17:20:23] ✅ DB connected [2026-02-22 17:20:23] ⚠️ Invalid request - POST with file required [2026-02-26 22:37:08] ===== IMPORT_STOCK START ===== [2026-02-26 22:37:08] ✅ Config files found [2026-02-26 22:37:08] ✅ DB connected [2026-02-26 22:37:08] ⚠️ Invalid request - POST with file required [2026-02-28 22:32:14] ===== IMPORT_STOCK START ===== [2026-02-28 22:32:14] ✅ Config files found [2026-02-28 22:32:14] ✅ DB connected [2026-02-28 22:32:14] ⚠️ Invalid request - POST with file required [2026-03-07 21:53:53] ===== IMPORT_STOCK START ===== [2026-03-07 21:53:53] ✅ Config files found [2026-03-07 21:53:53] ✅ DB connected [2026-03-07 21:53:53] ⚠️ Invalid request - POST with file required [2026-03-12 20:06:16] ===== IMPORT_STOCK START ===== [2026-03-12 20:06:16] ✅ Config files found [2026-03-12 20:06:16] ✅ DB connected [2026-03-12 20:06:16] ⚠️ Invalid request - POST with file required [2026-03-13 00:32:22] ===== IMPORT_STOCK START ===== [2026-03-13 00:32:22] ✅ Config files found [2026-03-13 00:32:22] ✅ DB connected [2026-03-13 00:32:22] ⚠️ Invalid request - POST with file required [2026-03-18 13:31:36] ===== IMPORT_STOCK START ===== [2026-03-18 13:31:36] ✅ Config files found [2026-03-18 13:31:36] ✅ DB connected [2026-03-18 13:31:36] 📥 File upload detected: StockTicketEasyMonoprix.xlsx [2026-03-18 13:31:36] 📄 File extension: xlsx [2026-03-18 13:31:36] ✅ File found in mapping: {"receive":"StockTicketEasyMonoprix.xlsx","final":"StockTicketEasyMonoprix.csv","mail":"monop@mail"} [2026-03-18 13:31:36] 📁 Target folder: uploads/old/2026-03-18 [2026-03-18 13:31:36] 📁 Created target folder [2026-03-18 13:31:36] 📖 Parsing Excel file... [2026-03-18 13:31:37] ✅ Excel parsed successfully. Row count: 4926 [2026-03-18 13:31:37] ✅ Header found at line: 1 [2026-03-18 13:31:37] ✅ All critical columns found: EAN, PV, STOCK, CTM [2026-03-18 13:31:37] 🔄 Processing rows... [2026-03-18 13:31:37] ✅ CSV file created: uploads/old/2026-03-18/StockTicketEasyMonoprix.csv with 4925 products [2026-03-18 13:31:37] 🚀 Creating products via API... [2026-03-18 13:31:37] 🔧 createProductsFromXlsx function called [2026-03-18 13:31:37] 📤 Sending 4925 EANs to API endpoint [2026-03-18 13:31:41] ✅ API response received (HTTP 200): { "status": "success", "successCount": 1, "errorCount": 0, "total": 4925, "error [2026-03-18 13:31:41] 🏪 Fetching stores for csv_path: StockTicketEasyMonoprix.csv [2026-03-18 13:31:41] ✅ Found 24 stores [2026-03-18 13:31:41] 📨 Broadcasting CSV to stores... [2026-03-18 13:31:41] 📤 Sending to store: Aix (ID: 0176) [2026-03-18 13:31:42] ✅ Broadcast sent to Aix (HTTP 200) [2026-03-18 13:31:42] 📤 Sending to store: Aulnay (ID: 0295) [2026-03-18 13:31:42] ✅ Broadcast sent to Aulnay (HTTP 200) [2026-03-18 13:31:42] 📤 Sending to store: Avignon (ID: 0135) [2026-03-18 13:31:42] ✅ Broadcast sent to Avignon (HTTP 200) [2026-03-18 13:31:42] 📤 Sending to store: Belvedere (ID: 0325) [2026-03-18 13:31:42] ✅ Broadcast sent to Belvedere (HTTP 200) [2026-03-18 13:31:42] 📤 Sending to store: Brunoy (ID: 2576) [2026-03-18 13:31:42] ✅ Broadcast sent to Brunoy (HTTP 200) [2026-03-18 13:31:42] 📤 Sending to store: Clamart (ID: 0176) [2026-03-18 13:31:43] ✅ Broadcast sent to Clamart (HTTP 200) [2026-03-18 13:31:43] 📤 Sending to store: Convention (ID: 0324) [2026-03-18 13:31:43] ✅ Broadcast sent to Convention (HTTP 200) [2026-03-18 13:31:43] 📤 Sending to store: Crimee (ID: 0292) [2026-03-18 13:31:43] ✅ Broadcast sent to Crimee (HTTP 200) [2026-03-18 13:31:43] 📤 Sending to store: Dausmesnil (ID: 0253) [2026-03-18 13:31:43] ✅ Broadcast sent to Dausmesnil (HTTP 200) [2026-03-18 13:31:43] 📤 Sending to store: Dimax (ID: 0245) [2026-03-18 13:31:44] ✅ Broadcast sent to Dimax (HTTP 200) [2026-03-18 13:31:44] 📤 Sending to store: Draveil (ID: 2571) [2026-03-18 13:31:44] ✅ Broadcast sent to Draveil (HTTP 200) [2026-03-18 13:31:44] 📤 Sending to store: Fontenay (ID: 1134) [2026-03-18 13:31:44] ✅ Broadcast sent to Fontenay (HTTP 200) [2026-03-18 13:31:44] 📤 Sending to store: Joinville (ID: 2389) [2026-03-18 13:31:44] ✅ Broadcast sent to Joinville (HTTP 200) [2026-03-18 13:31:44] 📤 Sending to store: Le perreux (ID: 0312) [2026-03-18 13:31:44] ✅ Broadcast sent to Le perreux (HTTP 200) [2026-03-18 13:31:44] 📤 Sending to store: Marseille (ID: 0344) [2026-03-18 13:31:44] ✅ Broadcast sent to Marseille (HTTP 200) [2026-03-18 13:31:44] 📤 Sending to store: Montgeron (ID: 0) [2026-03-18 13:31:44] ✅ Broadcast sent to Montgeron (HTTP 400) [2026-03-18 13:31:44] 📤 Sending to store: Montpellier (ID: 0107) [2026-03-18 13:31:44] ✅ Broadcast sent to Montpellier (HTTP 200) [2026-03-18 13:31:44] 📤 Sending to store: Nimes (ID: 2704) [2026-03-18 13:31:45] ✅ Broadcast sent to Nimes (HTTP 200) [2026-03-18 13:31:45] 📤 Sending to store: Nogent (ID: 0) [2026-03-18 13:31:45] ✅ Broadcast sent to Nogent (HTTP 400) [2026-03-18 13:31:45] 📤 Sending to store: roquette (ID: 1149) [2026-03-18 13:31:45] ✅ Broadcast sent to roquette (HTTP 200) [2026-03-18 13:31:45] 📤 Sending to store: Saint Paul (ID: 0294) [2026-03-18 13:31:45] ✅ Broadcast sent to Saint Paul (HTTP 200) [2026-03-18 13:31:45] 📤 Sending to store: Sete (ID: 2759) [2026-03-18 13:31:45] ✅ Broadcast sent to Sete (HTTP 200) [2026-03-18 13:31:45] 📤 Sending to store: Sevres (ID: 0242) [2026-03-18 13:31:45] ✅ Broadcast sent to Sevres (HTTP 200) [2026-03-18 13:31:45] 📤 Sending to store: Vinci (ID: 0216) [2026-03-18 13:31:45] ✅ Broadcast sent to Vinci (HTTP 200) [2026-03-18 13:31:45] ===== IMPORT_STOCK END (SUCCESS) ===== [2026-03-20 06:22:11] ===== IMPORT_STOCK START ===== [2026-03-20 06:22:11] ✅ Config files found [2026-03-20 06:22:11] ✅ DB connected [2026-03-20 06:22:11] 📥 File upload detected: StockTicketEasyMonoprix.xlsx [2026-03-20 06:22:11] 📄 File extension: xlsx [2026-03-20 06:22:11] ✅ File found in mapping: {"receive":"StockTicketEasyMonoprix.xlsx","final":"StockTicketEasyMonoprix.csv","mail":"monop@mail"} [2026-03-20 06:22:11] 📁 Target folder: uploads/old/2026-03-20 [2026-03-20 06:22:11] 📁 Created target folder [2026-03-20 06:22:11] 📖 Parsing Excel file... [2026-03-20 06:22:11] ✅ Excel parsed successfully. Row count: 4926 [2026-03-20 06:22:11] ✅ Header found at line: 1 [2026-03-20 06:22:11] ✅ All critical columns found: EAN, PV, STOCK, CTM [2026-03-20 06:22:11] 🔄 Processing rows... [2026-03-20 06:22:11] ✅ CSV file created: uploads/old/2026-03-20/StockTicketEasyMonoprix.csv with 4925 products [2026-03-20 06:22:11] 🚀 Creating products via API... [2026-03-20 06:22:11] 🔧 createProductsFromXlsx function called [2026-03-20 06:22:11] 📤 Sending 4925 EANs to API endpoint [2026-03-20 06:22:15] ✅ API response received (HTTP 200): { "status": "success", "successCount": 0, "errorCount": 0, "total": 4925, "error [2026-03-20 06:22:15] 🏪 Fetching stores for csv_path: StockTicketEasyMonoprix.csv [2026-03-20 06:22:15] ✅ Found 24 stores [2026-03-20 06:22:15] 📨 Broadcasting CSV to stores... [2026-03-20 06:22:15] 📤 Sending to store: Aix (ID: 0176) [2026-03-20 06:22:16] ✅ Broadcast sent to Aix (HTTP 200) [2026-03-20 06:22:16] 📤 Sending to store: Aulnay (ID: 0295) [2026-03-20 06:22:16] ✅ Broadcast sent to Aulnay (HTTP 200) [2026-03-20 06:22:16] 📤 Sending to store: Avignon (ID: 0135) [2026-03-20 06:22:16] ✅ Broadcast sent to Avignon (HTTP 200) [2026-03-20 06:22:16] 📤 Sending to store: Belvedere (ID: 0325) [2026-03-20 06:22:16] ✅ Broadcast sent to Belvedere (HTTP 200) [2026-03-20 06:22:16] 📤 Sending to store: Brunoy (ID: 2576) [2026-03-20 06:22:16] ✅ Broadcast sent to Brunoy (HTTP 200) [2026-03-20 06:22:16] 📤 Sending to store: Clamart (ID: 0176) [2026-03-20 06:22:17] ✅ Broadcast sent to Clamart (HTTP 200) [2026-03-20 06:22:17] 📤 Sending to store: Convention (ID: 0324) [2026-03-20 06:22:17] ✅ Broadcast sent to Convention (HTTP 200) [2026-03-20 06:22:17] 📤 Sending to store: Crimee (ID: 0292) [2026-03-20 06:22:17] ✅ Broadcast sent to Crimee (HTTP 200) [2026-03-20 06:22:17] 📤 Sending to store: Dausmesnil (ID: 0253) [2026-03-20 06:22:17] ✅ Broadcast sent to Dausmesnil (HTTP 200) [2026-03-20 06:22:17] 📤 Sending to store: Dimax (ID: 0245) [2026-03-20 06:22:17] ✅ Broadcast sent to Dimax (HTTP 200) [2026-03-20 06:22:17] 📤 Sending to store: Draveil (ID: 2571) [2026-03-20 06:22:17] ✅ Broadcast sent to Draveil (HTTP 200) [2026-03-20 06:22:17] 📤 Sending to store: Fontenay (ID: 1134) [2026-03-20 06:22:18] ✅ Broadcast sent to Fontenay (HTTP 200) [2026-03-20 06:22:18] 📤 Sending to store: Joinville (ID: 2389) [2026-03-20 06:22:18] ✅ Broadcast sent to Joinville (HTTP 200) [2026-03-20 06:22:18] 📤 Sending to store: Le perreux (ID: 0312) [2026-03-20 06:22:18] ✅ Broadcast sent to Le perreux (HTTP 200) [2026-03-20 06:22:18] 📤 Sending to store: Marseille (ID: 0344) [2026-03-20 06:22:18] ✅ Broadcast sent to Marseille (HTTP 200) [2026-03-20 06:22:18] 📤 Sending to store: Montgeron (ID: 0) [2026-03-20 06:22:18] ✅ Broadcast sent to Montgeron (HTTP 400) [2026-03-20 06:22:18] 📤 Sending to store: Montpellier (ID: 0107) [2026-03-20 06:22:18] ✅ Broadcast sent to Montpellier (HTTP 200) [2026-03-20 06:22:18] 📤 Sending to store: Nimes (ID: 2704) [2026-03-20 06:22:18] ✅ Broadcast sent to Nimes (HTTP 200) [2026-03-20 06:22:18] 📤 Sending to store: Nogent (ID: 0) [2026-03-20 06:22:18] ✅ Broadcast sent to Nogent (HTTP 400) [2026-03-20 06:22:18] 📤 Sending to store: roquette (ID: 1149) [2026-03-20 06:22:19] ✅ Broadcast sent to roquette (HTTP 200) [2026-03-20 06:22:19] 📤 Sending to store: Saint Paul (ID: 0294) [2026-03-20 06:22:19] ✅ Broadcast sent to Saint Paul (HTTP 200) [2026-03-20 06:22:19] 📤 Sending to store: Sete (ID: 2759) [2026-03-20 06:22:19] ✅ Broadcast sent to Sete (HTTP 200) [2026-03-20 06:22:19] 📤 Sending to store: Sevres (ID: 0242) [2026-03-20 06:22:19] ✅ Broadcast sent to Sevres (HTTP 200) [2026-03-20 06:22:19] 📤 Sending to store: Vinci (ID: 0216) [2026-03-20 06:22:19] ✅ Broadcast sent to Vinci (HTTP 200) [2026-03-20 06:22:19] ===== IMPORT_STOCK END (SUCCESS) ===== [2026-03-21 06:12:08] ===== IMPORT_STOCK START ===== [2026-03-21 06:12:08] ✅ Config files found [2026-03-21 06:12:08] ✅ DB connected [2026-03-21 06:12:08] 📥 File upload detected: StockTicketEasyMonoprix.xlsx [2026-03-21 06:12:08] 📄 File extension: xlsx [2026-03-21 06:12:08] ✅ File found in mapping: {"receive":"StockTicketEasyMonoprix.xlsx","final":"StockTicketEasyMonoprix.csv","mail":"monop@mail"} [2026-03-21 06:12:08] 📁 Target folder: uploads/old/2026-03-21 [2026-03-21 06:12:08] 📁 Created target folder [2026-03-21 06:12:08] 📖 Parsing Excel file... [2026-03-21 06:12:08] ✅ Excel parsed successfully. Row count: 4926 [2026-03-21 06:12:08] ✅ Header found at line: 1 [2026-03-21 06:12:08] ✅ All critical columns found: EAN, PV, STOCK, CTM [2026-03-21 06:12:08] 🔄 Processing rows... [2026-03-21 06:12:08] ✅ CSV file created: uploads/old/2026-03-21/StockTicketEasyMonoprix.csv with 4925 products [2026-03-21 06:12:08] 🚀 Creating products via API... [2026-03-21 06:12:08] 🔧 createProductsFromXlsx function called [2026-03-21 06:12:08] 📤 Sending 4925 EANs to API endpoint [2026-03-21 06:12:12] ✅ API response received (HTTP 200): { "status": "success", "successCount": 0, "errorCount": 0, "total": 4925, "error [2026-03-21 06:12:12] 🏪 Fetching stores for csv_path: StockTicketEasyMonoprix.csv [2026-03-21 06:12:12] ✅ Found 24 stores [2026-03-21 06:12:12] 📨 Broadcasting CSV to stores... [2026-03-21 06:12:12] 📤 Sending to store: Aix (ID: 0176) [2026-03-21 06:12:12] ✅ Broadcast sent to Aix (HTTP 200) [2026-03-21 06:12:12] 📤 Sending to store: Aulnay (ID: 0295) [2026-03-21 06:12:13] ✅ Broadcast sent to Aulnay (HTTP 200) [2026-03-21 06:12:13] 📤 Sending to store: Avignon (ID: 0135) [2026-03-21 06:12:13] ✅ Broadcast sent to Avignon (HTTP 200) [2026-03-21 06:12:13] 📤 Sending to store: Belvedere (ID: 0325) [2026-03-21 06:12:13] ✅ Broadcast sent to Belvedere (HTTP 200) [2026-03-21 06:12:13] 📤 Sending to store: Brunoy (ID: 2576) [2026-03-21 06:12:13] ✅ Broadcast sent to Brunoy (HTTP 200) [2026-03-21 06:12:13] 📤 Sending to store: Clamart (ID: 0176) [2026-03-21 06:12:13] ✅ Broadcast sent to Clamart (HTTP 200) [2026-03-21 06:12:13] 📤 Sending to store: Convention (ID: 0324) [2026-03-21 06:12:14] ✅ Broadcast sent to Convention (HTTP 200) [2026-03-21 06:12:14] 📤 Sending to store: Crimee (ID: 0292) [2026-03-21 06:12:14] ✅ Broadcast sent to Crimee (HTTP 200) [2026-03-21 06:12:14] 📤 Sending to store: Dausmesnil (ID: 0253) [2026-03-21 06:12:14] ✅ Broadcast sent to Dausmesnil (HTTP 200) [2026-03-21 06:12:14] 📤 Sending to store: Dimax (ID: 0245) [2026-03-21 06:12:14] ✅ Broadcast sent to Dimax (HTTP 200) [2026-03-21 06:12:14] 📤 Sending to store: Draveil (ID: 2571) [2026-03-21 06:12:14] ✅ Broadcast sent to Draveil (HTTP 200) [2026-03-21 06:12:14] 📤 Sending to store: Fontenay (ID: 1134) [2026-03-21 06:12:14] ✅ Broadcast sent to Fontenay (HTTP 200) [2026-03-21 06:12:14] 📤 Sending to store: Joinville (ID: 2389) [2026-03-21 06:12:15] ✅ Broadcast sent to Joinville (HTTP 200) [2026-03-21 06:12:15] 📤 Sending to store: Le perreux (ID: 0312) [2026-03-21 06:12:15] ✅ Broadcast sent to Le perreux (HTTP 200) [2026-03-21 06:12:15] 📤 Sending to store: Marseille (ID: 0344) [2026-03-21 06:12:15] ✅ Broadcast sent to Marseille (HTTP 200) [2026-03-21 06:12:15] 📤 Sending to store: Montgeron (ID: 0) [2026-03-21 06:12:15] ✅ Broadcast sent to Montgeron (HTTP 400) [2026-03-21 06:12:15] 📤 Sending to store: Montpellier (ID: 0107) [2026-03-21 06:12:15] ✅ Broadcast sent to Montpellier (HTTP 200) [2026-03-21 06:12:15] 📤 Sending to store: Nimes (ID: 2704) [2026-03-21 06:12:15] ✅ Broadcast sent to Nimes (HTTP 200) [2026-03-21 06:12:15] 📤 Sending to store: Nogent (ID: 0) [2026-03-21 06:12:15] ✅ Broadcast sent to Nogent (HTTP 400) [2026-03-21 06:12:15] 📤 Sending to store: roquette (ID: 1149) [2026-03-21 06:12:15] ✅ Broadcast sent to roquette (HTTP 200) [2026-03-21 06:12:15] 📤 Sending to store: Saint Paul (ID: 0294) [2026-03-21 06:12:15] ✅ Broadcast sent to Saint Paul (HTTP 200) [2026-03-21 06:12:15] 📤 Sending to store: Sete (ID: 2759) [2026-03-21 06:12:16] ✅ Broadcast sent to Sete (HTTP 200) [2026-03-21 06:12:16] 📤 Sending to store: Sevres (ID: 0242) [2026-03-21 06:12:16] ✅ Broadcast sent to Sevres (HTTP 200) [2026-03-21 06:12:16] 📤 Sending to store: Vinci (ID: 0216) [2026-03-21 06:12:16] ✅ Broadcast sent to Vinci (HTTP 200) [2026-03-21 06:12:16] ===== IMPORT_STOCK END (SUCCESS) ===== [2026-03-22 06:10:36] ===== IMPORT_STOCK START ===== [2026-03-22 06:10:36] ✅ Config files found [2026-03-22 06:10:36] ✅ DB connected [2026-03-22 06:10:36] 📥 File upload detected: StockTicketEasyMonoprix.xlsx [2026-03-22 06:10:36] 📄 File extension: xlsx [2026-03-22 06:10:36] ✅ File found in mapping: {"receive":"StockTicketEasyMonoprix.xlsx","final":"StockTicketEasyMonoprix.csv","mail":"monop@mail"} [2026-03-22 06:10:36] 📁 Target folder: uploads/old/2026-03-22 [2026-03-22 06:10:36] 📁 Created target folder [2026-03-22 06:10:36] 📖 Parsing Excel file... [2026-03-22 06:10:36] ✅ Excel parsed successfully. Row count: 4926 [2026-03-22 06:10:36] ✅ Header found at line: 1 [2026-03-22 06:10:36] ✅ All critical columns found: EAN, PV, STOCK, CTM [2026-03-22 06:10:36] 🔄 Processing rows... [2026-03-22 06:10:36] ✅ CSV file created: uploads/old/2026-03-22/StockTicketEasyMonoprix.csv with 4925 products [2026-03-22 06:10:36] 🚀 Creating products via API... [2026-03-22 06:10:36] 🔧 createProductsFromXlsx function called [2026-03-22 06:10:36] 📤 Sending 4925 EANs to API endpoint [2026-03-22 06:10:41] ✅ API response received (HTTP 200): { "status": "success", "successCount": 0, "errorCount": 0, "total": 4925, "error [2026-03-22 06:10:41] 🏪 Fetching stores for csv_path: StockTicketEasyMonoprix.csv [2026-03-22 06:10:41] ✅ Found 24 stores [2026-03-22 06:10:41] 📨 Broadcasting CSV to stores... [2026-03-22 06:10:41] 📤 Sending to store: Aix (ID: 0176) [2026-03-22 06:10:41] ✅ Broadcast sent to Aix (HTTP 200) [2026-03-22 06:10:41] 📤 Sending to store: Aulnay (ID: 0295) [2026-03-22 06:10:41] ✅ Broadcast sent to Aulnay (HTTP 200) [2026-03-22 06:10:41] 📤 Sending to store: Avignon (ID: 0135) [2026-03-22 06:10:41] ✅ Broadcast sent to Avignon (HTTP 200) [2026-03-22 06:10:41] 📤 Sending to store: Belvedere (ID: 0325) [2026-03-22 06:10:42] ✅ Broadcast sent to Belvedere (HTTP 200) [2026-03-22 06:10:42] 📤 Sending to store: Brunoy (ID: 2576) [2026-03-22 06:10:42] ✅ Broadcast sent to Brunoy (HTTP 200) [2026-03-22 06:10:42] 📤 Sending to store: Clamart (ID: 0176) [2026-03-22 06:10:42] ✅ Broadcast sent to Clamart (HTTP 200) [2026-03-22 06:10:42] 📤 Sending to store: Convention (ID: 0324) [2026-03-22 06:10:42] ✅ Broadcast sent to Convention (HTTP 200) [2026-03-22 06:10:42] 📤 Sending to store: Crimee (ID: 0292) [2026-03-22 06:10:42] ✅ Broadcast sent to Crimee (HTTP 200) [2026-03-22 06:10:42] 📤 Sending to store: Dausmesnil (ID: 0253) [2026-03-22 06:10:42] ✅ Broadcast sent to Dausmesnil (HTTP 200) [2026-03-22 06:10:42] 📤 Sending to store: Dimax (ID: 0245) [2026-03-22 06:10:43] ✅ Broadcast sent to Dimax (HTTP 200) [2026-03-22 06:10:43] 📤 Sending to store: Draveil (ID: 2571) [2026-03-22 06:10:43] ✅ Broadcast sent to Draveil (HTTP 200) [2026-03-22 06:10:43] 📤 Sending to store: Fontenay (ID: 1134) [2026-03-22 06:10:43] ✅ Broadcast sent to Fontenay (HTTP 200) [2026-03-22 06:10:43] 📤 Sending to store: Joinville (ID: 2389) [2026-03-22 06:10:43] ✅ Broadcast sent to Joinville (HTTP 200) [2026-03-22 06:10:43] 📤 Sending to store: Le perreux (ID: 0312) [2026-03-22 06:10:43] ✅ Broadcast sent to Le perreux (HTTP 200) [2026-03-22 06:10:43] 📤 Sending to store: Marseille (ID: 0344) [2026-03-22 06:10:43] ✅ Broadcast sent to Marseille (HTTP 200) [2026-03-22 06:10:43] 📤 Sending to store: Montgeron (ID: 0) [2026-03-22 06:10:43] ✅ Broadcast sent to Montgeron (HTTP 400) [2026-03-22 06:10:43] 📤 Sending to store: Montpellier (ID: 0107) [2026-03-22 06:10:44] ✅ Broadcast sent to Montpellier (HTTP 200) [2026-03-22 06:10:44] 📤 Sending to store: Nimes (ID: 2704) [2026-03-22 06:10:44] ✅ Broadcast sent to Nimes (HTTP 200) [2026-03-22 06:10:44] 📤 Sending to store: Nogent (ID: 0) [2026-03-22 06:10:44] ✅ Broadcast sent to Nogent (HTTP 400) [2026-03-22 06:10:44] 📤 Sending to store: roquette (ID: 1149) [2026-03-22 06:10:44] ✅ Broadcast sent to roquette (HTTP 200) [2026-03-22 06:10:44] 📤 Sending to store: Saint Paul (ID: 0294) [2026-03-22 06:10:44] ✅ Broadcast sent to Saint Paul (HTTP 200) [2026-03-22 06:10:44] 📤 Sending to store: Sete (ID: 2759) [2026-03-22 06:10:44] ✅ Broadcast sent to Sete (HTTP 200) [2026-03-22 06:10:44] 📤 Sending to store: Sevres (ID: 0242) [2026-03-22 06:10:44] ✅ Broadcast sent to Sevres (HTTP 200) [2026-03-22 06:10:44] 📤 Sending to store: Vinci (ID: 0216) [2026-03-22 06:10:44] ✅ Broadcast sent to Vinci (HTTP 200) [2026-03-22 06:10:44] ===== IMPORT_STOCK END (SUCCESS) ===== [2026-03-22 17:45:42] ===== IMPORT_STOCK START ===== [2026-03-22 17:45:42] ✅ Config files found [2026-03-22 17:45:42] ✅ DB connected [2026-03-22 17:45:42] ⚠️ Invalid request - POST with file required [2026-03-23 06:46:45] ===== IMPORT_STOCK START ===== [2026-03-23 06:46:45] ✅ Config files found [2026-03-23 06:46:45] ✅ DB connected [2026-03-23 06:46:45] 📥 File upload detected: StockTicketEasyMonoprix.xlsx [2026-03-23 06:46:45] 📄 File extension: xlsx [2026-03-23 06:46:45] ✅ File found in mapping: {"receive":"StockTicketEasyMonoprix.xlsx","final":"StockTicketEasyMonoprix.csv","mail":"monop@mail"} [2026-03-23 06:46:45] 📁 Target folder: uploads/old/2026-03-23 [2026-03-23 06:46:45] 📁 Created target folder [2026-03-23 06:46:45] 📖 Parsing Excel file... [2026-03-23 06:46:45] ✅ Excel parsed successfully. Row count: 4926 [2026-03-23 06:46:45] ✅ Header found at line: 1 [2026-03-23 06:46:45] ✅ All critical columns found: EAN, PV, STOCK, CTM [2026-03-23 06:46:45] 🔄 Processing rows... [2026-03-23 06:46:45] ✅ CSV file created: uploads/old/2026-03-23/StockTicketEasyMonoprix.csv with 4925 products [2026-03-23 06:46:45] 🚀 Creating products via API... [2026-03-23 06:46:45] 🔧 createProductsFromXlsx function called [2026-03-23 06:46:45] 📤 Sending 4925 EANs to API endpoint [2026-03-23 06:46:49] ✅ API response received (HTTP 200): { "status": "success", "successCount": 0, "errorCount": 0, "total": 4925, "error [2026-03-23 06:46:49] 🏪 Fetching stores for csv_path: StockTicketEasyMonoprix.csv [2026-03-23 06:46:49] ✅ Found 24 stores [2026-03-23 06:46:49] 📨 Broadcasting CSV to stores... [2026-03-23 06:46:49] 📤 Sending to store: Aix (ID: 0176) [2026-03-23 06:46:49] ✅ Broadcast sent to Aix (HTTP 200) [2026-03-23 06:46:49] 📤 Sending to store: Aulnay (ID: 0295) [2026-03-23 06:46:50] ✅ Broadcast sent to Aulnay (HTTP 200) [2026-03-23 06:46:50] 📤 Sending to store: Avignon (ID: 0135) [2026-03-23 06:46:50] ✅ Broadcast sent to Avignon (HTTP 200) [2026-03-23 06:46:50] 📤 Sending to store: Belvedere (ID: 0325) [2026-03-23 06:46:50] ✅ Broadcast sent to Belvedere (HTTP 200) [2026-03-23 06:46:50] 📤 Sending to store: Brunoy (ID: 2576) [2026-03-23 06:46:50] ✅ Broadcast sent to Brunoy (HTTP 200) [2026-03-23 06:46:50] 📤 Sending to store: Clamart (ID: 0176) [2026-03-23 06:46:50] ✅ Broadcast sent to Clamart (HTTP 200) [2026-03-23 06:46:50] 📤 Sending to store: Convention (ID: 0324) [2026-03-23 06:46:51] ✅ Broadcast sent to Convention (HTTP 200) [2026-03-23 06:46:51] 📤 Sending to store: Crimee (ID: 0292) [2026-03-23 06:46:51] ✅ Broadcast sent to Crimee (HTTP 200) [2026-03-23 06:46:51] 📤 Sending to store: Dausmesnil (ID: 0253) [2026-03-23 06:46:51] ✅ Broadcast sent to Dausmesnil (HTTP 200) [2026-03-23 06:46:51] 📤 Sending to store: Dimax (ID: 0245) [2026-03-23 06:46:51] ✅ Broadcast sent to Dimax (HTTP 200) [2026-03-23 06:46:51] 📤 Sending to store: Draveil (ID: 2571) [2026-03-23 06:46:51] ✅ Broadcast sent to Draveil (HTTP 200) [2026-03-23 06:46:51] 📤 Sending to store: Fontenay (ID: 1134) [2026-03-23 06:46:52] ✅ Broadcast sent to Fontenay (HTTP 200) [2026-03-23 06:46:52] 📤 Sending to store: Joinville (ID: 2389) [2026-03-23 06:46:52] ✅ Broadcast sent to Joinville (HTTP 200) [2026-03-23 06:46:52] 📤 Sending to store: Le perreux (ID: 0312) [2026-03-23 06:46:52] ✅ Broadcast sent to Le perreux (HTTP 200) [2026-03-23 06:46:52] 📤 Sending to store: Marseille (ID: 0344) [2026-03-23 06:46:52] ✅ Broadcast sent to Marseille (HTTP 200) [2026-03-23 06:46:52] 📤 Sending to store: Montgeron (ID: 0) [2026-03-23 06:46:52] ✅ Broadcast sent to Montgeron (HTTP 400) [2026-03-23 06:46:52] 📤 Sending to store: Montpellier (ID: 0107) [2026-03-23 06:46:52] ✅ Broadcast sent to Montpellier (HTTP 200) [2026-03-23 06:46:52] 📤 Sending to store: Nimes (ID: 2704) [2026-03-23 06:46:52] ✅ Broadcast sent to Nimes (HTTP 200) [2026-03-23 06:46:52] 📤 Sending to store: Nogent (ID: 0) [2026-03-23 06:46:52] ✅ Broadcast sent to Nogent (HTTP 400) [2026-03-23 06:46:52] 📤 Sending to store: roquette (ID: 1149) [2026-03-23 06:46:53] ✅ Broadcast sent to roquette (HTTP 200) [2026-03-23 06:46:53] 📤 Sending to store: Saint Paul (ID: 0294) [2026-03-23 06:46:53] ✅ Broadcast sent to Saint Paul (HTTP 200) [2026-03-23 06:46:53] 📤 Sending to store: Sete (ID: 2759) [2026-03-23 06:46:53] ✅ Broadcast sent to Sete (HTTP 200) [2026-03-23 06:46:53] 📤 Sending to store: Sevres (ID: 0242) [2026-03-23 06:46:53] ✅ Broadcast sent to Sevres (HTTP 200) [2026-03-23 06:46:53] 📤 Sending to store: Vinci (ID: 0216) [2026-03-23 06:46:53] ✅ Broadcast sent to Vinci (HTTP 200) [2026-03-23 06:46:53] ===== IMPORT_STOCK END (SUCCESS) ===== [2026-03-24 06:21:13] ===== IMPORT_STOCK START ===== [2026-03-24 06:21:13] ✅ Config files found [2026-03-24 06:21:13] ✅ DB connected [2026-03-24 06:21:13] 📥 File upload detected: StockTicketEasyMonoprix.xlsx [2026-03-24 06:21:13] 📄 File extension: xlsx [2026-03-24 06:21:13] ✅ File found in mapping: {"receive":"StockTicketEasyMonoprix.xlsx","final":"StockTicketEasyMonoprix.csv","mail":"monop@mail"} [2026-03-24 06:21:13] 📁 Target folder: uploads/old/2026-03-24 [2026-03-24 06:21:13] 📁 Created target folder [2026-03-24 06:21:13] 📖 Parsing Excel file... [2026-03-24 06:21:13] ✅ Excel parsed successfully. Row count: 4925 [2026-03-24 06:21:13] ✅ Header found at line: 1 [2026-03-24 06:21:13] ✅ All critical columns found: EAN, PV, STOCK, CTM [2026-03-24 06:21:13] 🔄 Processing rows... [2026-03-24 06:21:13] ✅ CSV file created: uploads/old/2026-03-24/StockTicketEasyMonoprix.csv with 4924 products [2026-03-24 06:21:13] 🚀 Creating products via API... [2026-03-24 06:21:13] 🔧 createProductsFromXlsx function called [2026-03-24 06:21:13] 📤 Sending 4924 EANs to API endpoint [2026-03-24 06:21:18] ✅ API response received (HTTP 200): { "status": "success", "successCount": 0, "errorCount": 0, "total": 4924, "error [2026-03-24 06:21:18] 🏪 Fetching stores for csv_path: StockTicketEasyMonoprix.csv [2026-03-24 06:21:18] ✅ Found 24 stores [2026-03-24 06:21:18] 📨 Broadcasting CSV to stores... [2026-03-24 06:21:18] 📤 Sending to store: Aix (ID: 0176) [2026-03-24 06:21:18] ✅ Broadcast sent to Aix (HTTP 200) [2026-03-24 06:21:18] 📤 Sending to store: Aulnay (ID: 0295) [2026-03-24 06:21:18] ✅ Broadcast sent to Aulnay (HTTP 200) [2026-03-24 06:21:18] 📤 Sending to store: Avignon (ID: 0135) [2026-03-24 06:21:18] ✅ Broadcast sent to Avignon (HTTP 200) [2026-03-24 06:21:18] 📤 Sending to store: Belvedere (ID: 0325) [2026-03-24 06:21:19] ✅ Broadcast sent to Belvedere (HTTP 200) [2026-03-24 06:21:19] 📤 Sending to store: Brunoy (ID: 2576) [2026-03-24 06:21:19] ✅ Broadcast sent to Brunoy (HTTP 200) [2026-03-24 06:21:19] 📤 Sending to store: Clamart (ID: 0176) [2026-03-24 06:21:19] ✅ Broadcast sent to Clamart (HTTP 200) [2026-03-24 06:21:19] 📤 Sending to store: Convention (ID: 0324) [2026-03-24 06:21:19] ✅ Broadcast sent to Convention (HTTP 200) [2026-03-24 06:21:19] 📤 Sending to store: Crimee (ID: 0292) [2026-03-24 06:21:19] ✅ Broadcast sent to Crimee (HTTP 200) [2026-03-24 06:21:19] 📤 Sending to store: Dausmesnil (ID: 0253) [2026-03-24 06:21:19] ✅ Broadcast sent to Dausmesnil (HTTP 200) [2026-03-24 06:21:19] 📤 Sending to store: Dimax (ID: 0245) [2026-03-24 06:21:20] ✅ Broadcast sent to Dimax (HTTP 200) [2026-03-24 06:21:20] 📤 Sending to store: Draveil (ID: 2571) [2026-03-24 06:21:20] ✅ Broadcast sent to Draveil (HTTP 200) [2026-03-24 06:21:20] 📤 Sending to store: Fontenay (ID: 1134) [2026-03-24 06:21:20] ✅ Broadcast sent to Fontenay (HTTP 200) [2026-03-24 06:21:20] 📤 Sending to store: Joinville (ID: 2389) [2026-03-24 06:21:20] ✅ Broadcast sent to Joinville (HTTP 200) [2026-03-24 06:21:20] 📤 Sending to store: Le perreux (ID: 0312) [2026-03-24 06:21:20] ✅ Broadcast sent to Le perreux (HTTP 200) [2026-03-24 06:21:20] 📤 Sending to store: Marseille (ID: 0344) [2026-03-24 06:21:21] ✅ Broadcast sent to Marseille (HTTP 200) [2026-03-24 06:21:21] 📤 Sending to store: Montgeron (ID: 0) [2026-03-24 06:21:21] ✅ Broadcast sent to Montgeron (HTTP 400) [2026-03-24 06:21:21] 📤 Sending to store: Montpellier (ID: 0107) [2026-03-24 06:21:21] ✅ Broadcast sent to Montpellier (HTTP 200) [2026-03-24 06:21:21] 📤 Sending to store: Nimes (ID: 2704) [2026-03-24 06:21:21] ✅ Broadcast sent to Nimes (HTTP 200) [2026-03-24 06:21:21] 📤 Sending to store: Nogent (ID: 0) [2026-03-24 06:21:21] ✅ Broadcast sent to Nogent (HTTP 400) [2026-03-24 06:21:21] 📤 Sending to store: roquette (ID: 1149) [2026-03-24 06:21:21] ✅ Broadcast sent to roquette (HTTP 200) [2026-03-24 06:21:21] 📤 Sending to store: Saint Paul (ID: 0294) [2026-03-24 06:21:21] ✅ Broadcast sent to Saint Paul (HTTP 200) [2026-03-24 06:21:21] 📤 Sending to store: Sete (ID: 2759) [2026-03-24 06:21:21] ✅ Broadcast sent to Sete (HTTP 200) [2026-03-24 06:21:21] 📤 Sending to store: Sevres (ID: 0242) [2026-03-24 06:21:21] ✅ Broadcast sent to Sevres (HTTP 200) [2026-03-24 06:21:21] 📤 Sending to store: Vinci (ID: 0216) [2026-03-24 06:21:22] ✅ Broadcast sent to Vinci (HTTP 200) [2026-03-24 06:21:22] ===== IMPORT_STOCK END (SUCCESS) ===== [2026-03-25 02:19:42] ===== IMPORT_STOCK START ===== [2026-03-25 02:19:42] ✅ Config files found [2026-03-25 02:19:42] ✅ DB connected [2026-03-25 02:19:42] ⚠️ Invalid request - POST with file required [2026-03-26 06:28:34] ===== IMPORT_STOCK START ===== [2026-03-26 06:28:34] ✅ Config files found [2026-03-26 06:28:34] ✅ DB connected [2026-03-26 06:28:34] 📥 File upload detected: StockTicketEasyMonoprix.xlsx [2026-03-26 06:28:34] 📄 File extension: xlsx [2026-03-26 06:28:34] ✅ File found in mapping: {"receive":"StockTicketEasyMonoprix.xlsx","final":"StockTicketEasyMonoprix.csv","mail":"monop@mail"} [2026-03-26 06:28:34] 📁 Target folder: uploads/old/2026-03-26 [2026-03-26 06:28:34] 📁 Created target folder [2026-03-26 06:28:34] 📖 Parsing Excel file... [2026-03-26 06:28:34] ✅ Excel parsed successfully. Row count: 4927 [2026-03-26 06:28:34] ✅ Header found at line: 1 [2026-03-26 06:28:34] ✅ All critical columns found: EAN, PV, STOCK, CTM [2026-03-26 06:28:34] 🔄 Processing rows... [2026-03-26 06:28:34] ✅ CSV file created: uploads/old/2026-03-26/StockTicketEasyMonoprix.csv with 4926 products [2026-03-26 06:28:34] 🚀 Creating products via API... [2026-03-26 06:28:34] 🔧 createProductsFromXlsx function called [2026-03-26 06:28:34] 📤 Sending 4926 EANs to API endpoint [2026-03-26 06:28:39] ✅ API response received (HTTP 200): { "status": "success", "successCount": 0, "errorCount": 0, "total": 4926, "error [2026-03-26 06:28:39] 🏪 Fetching stores for csv_path: StockTicketEasyMonoprix.csv [2026-03-26 06:28:39] ✅ Found 24 stores [2026-03-26 06:28:39] 📨 Broadcasting CSV to stores... [2026-03-26 06:28:39] 📤 Sending to store: Aix (ID: 0176) [2026-03-26 06:28:39] ✅ Broadcast sent to Aix (HTTP 200) [2026-03-26 06:28:39] 📤 Sending to store: Aulnay (ID: 0295) [2026-03-26 06:28:39] ✅ Broadcast sent to Aulnay (HTTP 200) [2026-03-26 06:28:39] 📤 Sending to store: Avignon (ID: 0135) [2026-03-26 06:28:40] ✅ Broadcast sent to Avignon (HTTP 200) [2026-03-26 06:28:40] 📤 Sending to store: Belvedere (ID: 0325) [2026-03-26 06:28:40] ✅ Broadcast sent to Belvedere (HTTP 200) [2026-03-26 06:28:40] 📤 Sending to store: Brunoy (ID: 2576) [2026-03-26 06:28:40] ✅ Broadcast sent to Brunoy (HTTP 200) [2026-03-26 06:28:40] 📤 Sending to store: Clamart (ID: 0176) [2026-03-26 06:28:40] ✅ Broadcast sent to Clamart (HTTP 200) [2026-03-26 06:28:40] 📤 Sending to store: Convention (ID: 0324) [2026-03-26 06:28:40] ✅ Broadcast sent to Convention (HTTP 200) [2026-03-26 06:28:40] 📤 Sending to store: Crimee (ID: 0292) [2026-03-26 06:28:41] ✅ Broadcast sent to Crimee (HTTP 200) [2026-03-26 06:28:41] 📤 Sending to store: Dausmesnil (ID: 0253) [2026-03-26 06:28:41] ✅ Broadcast sent to Dausmesnil (HTTP 200) [2026-03-26 06:28:41] 📤 Sending to store: Dimax (ID: 0245) [2026-03-26 06:28:41] ✅ Broadcast sent to Dimax (HTTP 200) [2026-03-26 06:28:41] 📤 Sending to store: Draveil (ID: 2571) [2026-03-26 06:28:41] ✅ Broadcast sent to Draveil (HTTP 200) [2026-03-26 06:28:41] 📤 Sending to store: Fontenay (ID: 1134) [2026-03-26 06:28:41] ✅ Broadcast sent to Fontenay (HTTP 200) [2026-03-26 06:28:41] 📤 Sending to store: Joinville (ID: 2389) [2026-03-26 06:28:41] ✅ Broadcast sent to Joinville (HTTP 200) [2026-03-26 06:28:41] 📤 Sending to store: Le perreux (ID: 0312) [2026-03-26 06:28:42] ✅ Broadcast sent to Le perreux (HTTP 200) [2026-03-26 06:28:42] 📤 Sending to store: Marseille (ID: 0344) [2026-03-26 06:28:42] ✅ Broadcast sent to Marseille (HTTP 200) [2026-03-26 06:28:42] 📤 Sending to store: Montgeron (ID: 0) [2026-03-26 06:28:42] ✅ Broadcast sent to Montgeron (HTTP 400) [2026-03-26 06:28:42] 📤 Sending to store: Montpellier (ID: 0107) [2026-03-26 06:28:42] ✅ Broadcast sent to Montpellier (HTTP 200) [2026-03-26 06:28:42] 📤 Sending to store: Nimes (ID: 2704) [2026-03-26 06:28:42] ✅ Broadcast sent to Nimes (HTTP 200) [2026-03-26 06:28:42] 📤 Sending to store: Nogent (ID: 0) [2026-03-26 06:28:42] ✅ Broadcast sent to Nogent (HTTP 400) [2026-03-26 06:28:42] 📤 Sending to store: roquette (ID: 1149) [2026-03-26 06:28:42] ✅ Broadcast sent to roquette (HTTP 200) [2026-03-26 06:28:42] 📤 Sending to store: Saint Paul (ID: 0294) [2026-03-26 06:28:42] ✅ Broadcast sent to Saint Paul (HTTP 200) [2026-03-26 06:28:42] 📤 Sending to store: Sete (ID: 2759) [2026-03-26 06:28:42] ✅ Broadcast sent to Sete (HTTP 200) [2026-03-26 06:28:42] 📤 Sending to store: Sevres (ID: 0242) [2026-03-26 06:28:43] ✅ Broadcast sent to Sevres (HTTP 200) [2026-03-26 06:28:43] 📤 Sending to store: Vinci (ID: 0216) [2026-03-26 06:28:43] ✅ Broadcast sent to Vinci (HTTP 200) [2026-03-26 06:28:43] ===== IMPORT_STOCK END (SUCCESS) ===== [2026-03-30 16:06:28] ===== IMPORT_STOCK START ===== [2026-03-30 16:06:28] ✅ Config files found [2026-03-30 16:06:28] ✅ DB connected [2026-03-30 16:06:28] ⚠️ Invalid request - POST with file required [2026-03-31 01:40:26] ===== IMPORT_STOCK START ===== [2026-03-31 01:40:26] ✅ Config files found [2026-03-31 01:40:26] ✅ DB connected [2026-03-31 01:40:26] ⚠️ Invalid request - POST with file required [2026-03-31 08:15:14] ===== IMPORT_STOCK START ===== [2026-03-31 08:15:14] ✅ Config files found [2026-03-31 08:15:14] ✅ DB connected [2026-03-31 08:15:14] ⚠️ Invalid request - POST with file required [2026-04-06 02:45:07] ===== IMPORT_STOCK START ===== [2026-04-06 02:45:07] ✅ Config files found [2026-04-06 02:45:07] ✅ DB connected [2026-04-06 02:45:07] ⚠️ Invalid request - POST with file required [2026-04-09 18:51:01] ===== IMPORT_STOCK START ===== [2026-04-09 18:51:01] ✅ Config files found [2026-04-09 18:51:01] ✅ DB connected [2026-04-09 18:51:01] ⚠️ Invalid request - POST with file required [2026-04-09 18:51:08] ===== IMPORT_STOCK START ===== [2026-04-09 18:51:08] ✅ Config files found [2026-04-09 18:51:08] ✅ DB connected [2026-04-09 18:51:08] ⚠️ Invalid request - POST with file required [2026-04-11 10:45:23] ===== IMPORT_STOCK START ===== [2026-04-11 10:45:23] ✅ Config files found [2026-04-11 10:45:23] ✅ DB connected [2026-04-11 10:45:23] ⚠️ Invalid request - POST with file required [2026-04-11 14:50:55] ===== IMPORT_STOCK START ===== [2026-04-11 14:50:55] ✅ Config files found [2026-04-11 14:50:55] ✅ DB connected [2026-04-11 14:50:55] ⚠️ Invalid request - POST with file required [2026-04-14 05:00:34] ===== IMPORT_STOCK START ===== [2026-04-14 05:00:34] ✅ Config files found [2026-04-14 05:00:34] ✅ DB connected [2026-04-14 05:00:34] ⚠️ Invalid request - POST with file required [2026-04-17 08:52:35] ===== IMPORT_STOCK START ===== [2026-04-17 08:52:35] ✅ Config files found [2026-04-17 08:52:35] ✅ DB connected [2026-04-17 08:52:35] ⚠️ Invalid request - POST with file required [2026-04-17 13:12:52] ===== IMPORT_STOCK START ===== [2026-04-17 13:12:52] ✅ Config files found [2026-04-17 13:12:52] ✅ DB connected [2026-04-17 13:12:52] ⚠️ Invalid request - POST with file required