diff --git a/CALENDRIER_PRODUCTION_URGENT.md b/CALENDRIER_PRODUCTION_URGENT.md deleted file mode 100644 index 12a1ef5..0000000 --- a/CALENDRIER_PRODUCTION_URGENT.md +++ /dev/null @@ -1,45 +0,0 @@ -# CORRECTION URGENTE CALENDRIER PRODUCTION - -## PROBLÈME IDENTIFIÉ -Votre serveur de production utilise une version différente du calendrier qui n'a pas les améliorations récentes. - -## SOLUTION IMMÉDIATE - -### 1. Remplacer complètement le fichier CalendarGrid.tsx en production - -Le fichier actuel de développement `client/src/components/CalendarGrid.tsx` doit être copié INTÉGRALEMENT vers votre serveur de production. - -### 2. Vérifications à faire après la copie - -1. **Redémarrer le serveur de production** -2. **Vider le cache du navigateur** (Ctrl+F5) -3. **Vérifier que les boutons "+X autres" apparaissent** - -### 3. Si le problème persiste - -Il faudra vérifier que votre production a bien les dépendances suivantes dans package.json : - -```json -{ - "@/components/ui/dialog": "présent", - "lucide-react": "présent" -} -``` - -### 4. Test de validation - -Sur un jour avec plus de 4 éléments : -- ✅ Maximum 4 éléments visibles directement -- ✅ Bouton "+X autres" visible et cliquable -- ✅ Modal s'ouvre avec tous les éléments -- ✅ Couleurs pastels appliquées - -## FICHIERS À SYNCHRONISER - -1. `client/src/components/CalendarGrid.tsx` (PRIORITÉ 1) -2. Vérifier `client/src/components/ui/dialog.tsx` existe -3. Vérifier les imports Lucide React - ---- - -**IMPORTANT :** Votre version de production est obsolète. Le fichier de développement contient tous les correctifs nécessaires. \ No newline at end of file diff --git a/COMMANDES_PRODUCTION.md b/COMMANDES_PRODUCTION.md deleted file mode 100644 index fde4463..0000000 --- a/COMMANDES_PRODUCTION.md +++ /dev/null @@ -1,67 +0,0 @@ -# COMMANDES PRODUCTION - Solution Immédiate - -## SOLUTION URGENTE (2 minutes) - -### Commande 1: Appliquer la migration DLC -```bash -docker-compose exec logiflow-db psql -U logiflow_admin -d logiflow_db -f - << 'EOF' -ALTER TABLE dlc_products -ADD COLUMN IF NOT EXISTS stock_epuise boolean DEFAULT false NOT NULL, -ADD COLUMN IF NOT EXISTS stock_epuise_by varchar(255), -ADD COLUMN IF NOT EXISTS stock_epuise_at timestamp; - -CREATE INDEX IF NOT EXISTS idx_dlc_products_stock_epuise ON dlc_products(stock_epuise); - -UPDATE dlc_products SET stock_epuise = false WHERE stock_epuise IS NULL; - -SELECT 'Migration DLC terminée' as status; -EOF -``` - -### Commande 2: Redémarrer l'application -```bash -docker-compose restart logiflow -``` - -### Alternative si la première ne marche pas: -```bash -# Option A: Via fichier SQL -docker cp MIGRATION_PRODUCTION_URGENTE.sql [CONTAINER_NAME]:/tmp/migration.sql -docker-compose exec logiflow-db psql -U logiflow_admin -d logiflow_db -f /tmp/migration.sql - -# Option B: Connexion directe -docker-compose exec logiflow-db psql -U logiflow_admin -d logiflow_db - -# Dans psql, coller: -ALTER TABLE dlc_products -ADD COLUMN IF NOT EXISTS stock_epuise boolean DEFAULT false NOT NULL, -ADD COLUMN IF NOT EXISTS stock_epuise_by varchar(255), -ADD COLUMN IF NOT EXISTS stock_epuise_at timestamp; - -CREATE INDEX IF NOT EXISTS idx_dlc_products_stock_epuise ON dlc_products(stock_epuise); -``` - -## Vérification -```bash -# Vérifier que les colonnes existent -docker-compose exec logiflow-db psql -U logiflow_admin -d logiflow_db -c " -SELECT column_name, data_type -FROM information_schema.columns -WHERE table_name='dlc_products' -AND column_name LIKE '%stock_epuise%'; -" - -# Vérifier les logs de l'application -docker-compose logs logiflow | tail -20 -``` - -## Résultat attendu -``` - column_name | data_type ---------------------+------------------- - stock_epuise | boolean - stock_epuise_at | timestamp without time zone - stock_epuise_by | character varying -``` - -L'erreur "column does not exist" disparaîtra immédiatement. \ No newline at end of file diff --git a/CORRECTION_FINALE_PRODUCTION.md b/CORRECTION_FINALE_PRODUCTION.md deleted file mode 100644 index f8ada06..0000000 --- a/CORRECTION_FINALE_PRODUCTION.md +++ /dev/null @@ -1,128 +0,0 @@ -# CORRECTION FINALE - Erreur 500 Annonces Production - -## Problème identifié -``` -TypeError: announcementStorage.getAnnouncement is not a function -``` - -La méthode `getAnnouncement` (singulier) manque dans `server/announcementStorage.ts`. - -## Solution complète à appliquer - -### 1. Fichier `server/announcementStorage.ts` - -**AJOUTEZ cette méthode dans la classe `AnnouncementDatabaseStorage` (après la méthode `getAnnouncements`) :** - -```javascript -async getAnnouncement(id: number): Promise { - console.log('🔍 [DB] Getting single announcement:', id); - - const result = await db - .select({ - id: dashboardMessages.id, - title: dashboardMessages.title, - content: dashboardMessages.content, - type: dashboardMessages.type, - storeId: dashboardMessages.storeId, - createdBy: dashboardMessages.createdBy, - createdAt: dashboardMessages.createdAt, - author: { - id: users.id, - firstName: users.firstName, - lastName: users.lastName, - username: users.username, - }, - group: { - id: groups.id, - name: groups.name, - }, - }) - .from(dashboardMessages) - .leftJoin(users, eq(dashboardMessages.createdBy, users.username)) - .leftJoin(groups, eq(dashboardMessages.storeId, groups.id)) - .where(eq(dashboardMessages.id, id)) - .limit(1); - - if (result.length === 0) { - console.log('❌ [DB] Announcement not found:', id); - return null; - } - - const announcement = result[0]; - console.log('✅ [DB] Found announcement:', announcement.id, announcement.title); - - return { - id: announcement.id, - title: announcement.title, - content: announcement.content, - type: announcement.type, - storeId: announcement.storeId, - createdBy: announcement.createdBy, - createdAt: announcement.createdAt, - author: announcement.author as User, - group: announcement.group as Group | undefined, - }; -} -``` - -**MODIFIEZ l'interface `IAnnouncementStorage` (vers le haut du fichier) :** - -```javascript -interface IAnnouncementStorage { - getAnnouncements(groupIds?: number[]): Promise; - getAnnouncement(id: number): Promise; // ← AJOUTEZ CETTE LIGNE - createAnnouncement(announcement: InsertAnnouncement): Promise; - updateAnnouncement(id: number, announcement: Partial): Promise; - deleteAnnouncement(id: number): Promise; -} -``` - -**AJOUTEZ aussi cette méthode dans la classe `AnnouncementMemoryStorage` (après `initializeTestData`) :** - -```javascript -async getAnnouncement(id: number): Promise { - const announcement = this.announcements.get(id); - if (!announcement) { - return null; - } - - // Ajouter les relations - const users = await this.usersGetter(); - const groups = await this.groupsGetter(); - - const author = users.find(u => u.id === announcement.createdBy || u.username === announcement.createdBy); - const group = announcement.storeId ? groups.find(g => g.id === announcement.storeId) : undefined; - - return { - ...announcement, - author: author || { id: announcement.createdBy, firstName: 'Utilisateur', lastName: 'Inconnu', username: announcement.createdBy } as User, - group, - }; -} -``` - -### 2. VÉRIFICATIONS après correction - -1. **Redémarrez votre serveur** -2. **Testez la modification d'une annonce** -3. **Vérifiez les logs**, vous devriez voir : - ``` - 🔍 [DB] Getting single announcement: 16 - ✅ [DB] Found announcement: 16 Titre... - 🔍 [DB] Updating announcement with data: {...} - ✅ [DB] Updated announcement: {...} - ``` - -## Causes des erreurs précédentes - -1. ❌ **Méthode `getAnnouncement` manquante** → Interface incomplète -2. ❌ **Jointure incorrecte** → `users.id` au lieu de `users.username` -3. ❌ **Imports incorrects** → `nocodbConfigs` au lieu de `nocodbConfig` - -## Test final - -Après application, la modification d'annonce devrait réussir sans erreur 500. - ---- - -**Cette correction résout définitivement le problème.** \ No newline at end of file diff --git a/CORRECTION_PRODUCTION_ANNONCES.md b/CORRECTION_PRODUCTION_ANNONCES.md deleted file mode 100644 index 9840afd..0000000 --- a/CORRECTION_PRODUCTION_ANNONCES.md +++ /dev/null @@ -1,56 +0,0 @@ -# CORRECTION URGENTE - Erreurs 500 Modification Annonces Production - -## Problème -Erreurs 500 lors de la modification des annonces en production dues à une jointure PostgreSQL incorrecte. - -## Solution - Modifications à appliquer sur votre serveur - -### 1. Fichier `server/routes.ts` - Ligne 44 -**AVANT :** -```javascript -customerOrders, nocodbConfigs, dlcProducts, tasks, invoiceVerifications, dashboardMessages -``` - -**APRÈS :** -```javascript -customerOrders, nocodbConfig, dlcProducts, tasks, invoiceVerificationCache, dashboardMessages -``` - -### 2. Fichier `server/announcementStorage.ts` - Ligne 46 -**AVANT :** -```javascript -.leftJoin(users, eq(dashboardMessages.createdBy, users.id)) -``` - -**APRÈS :** -```javascript -.leftJoin(users, eq(dashboardMessages.createdBy, users.username)) -``` - -### 3. Fichier `server/announcementStorage.ts` - Lignes 70-76 -**REMPLACER la méthode updateAnnouncement par :** -```javascript -async updateAnnouncement(id: number, announcement: Partial): Promise { - console.log('📝 [DB] Updating announcement with data:', announcement); - - const [updated] = await db - .update(dashboardMessages) - .set(announcement) - .where(eq(dashboardMessages.id, id)) - .returning(); - - console.log('📝 [DB] Updated announcement:', updated); - - if (!updated) { - throw new Error(`Announcement with id ${id} not found`); - } - - return updated; -} -``` - -## Cause du problème -La jointure PostgreSQL utilisait `users.id` au lieu de `users.username` pour la relation avec le champ `createdBy`, qui contient des usernames en production. - -## Test après correction -Après application des modifications, redémarrez votre serveur et testez la modification d'une annonce. \ No newline at end of file diff --git a/CORRECTION_PRODUCTION_TASKS.md b/CORRECTION_PRODUCTION_TASKS.md deleted file mode 100644 index 4086f7f..0000000 --- a/CORRECTION_PRODUCTION_TASKS.md +++ /dev/null @@ -1,48 +0,0 @@ -# CORRECTION PRODUCTION - MODULE TÂCHES (19 Août 2025) - -## PROBLÈME IDENTIFIÉ -L'implémentation des dates de départ a causé des erreurs JavaScript en production qui empêchent le module tâches de se charger. - -## CORRECTION IMMÉDIATE - -### 1. Backend - Robustesse des données - -Le backend doit retourner des données sécurisées : -- Filtrage des tâches nulles -- Gestion sécurisée des dates -- Validation des propriétés - -### 2. Frontend - Gestion d'erreur - -Le frontend doit gérer les cas d'erreur : -- Validation des données reçues -- Protection contre les propriétés undefined -- Fallback pour les erreurs de parsing de dates - -### 3. Fichiers à copier en production - -**Priorité CRITIQUE :** Copier ces fichiers dans l'ordre : - -1. `server/storage.ts` - Méthode getTasks corrigée -2. `client/src/pages/Tasks.tsx` - Gestion d'erreur renforcée -3. `client/src/components/tasks/NewTaskForm.tsx` - Validation des données -4. `shared/schema.ts` - Types mis à jour - -## TEST DE VALIDATION - -Après copie des fichiers : -1. Redémarrer le serveur Docker -2. Tester l'accès au module tâches -3. Vérifier la création d'une nouvelle tâche -4. Confirmer l'affichage correct des dates - -## ROLLBACK SI PROBLÈME - -Si les erreurs persistent, remplacer uniquement `client/src/components/tasks/TaskForm.tsx` par : - -```typescript -// Version simplifiée sans dates de départ -export { default } from "./SimpleTaskForm"; -``` - -Et créer un SimpleTaskForm.tsx basique sans les nouvelles fonctionnalités. \ No newline at end of file diff --git a/DEBUG_PRODUCTION_ANNONCES.md b/DEBUG_PRODUCTION_ANNONCES.md deleted file mode 100644 index 9d65093..0000000 --- a/DEBUG_PRODUCTION_ANNONCES.md +++ /dev/null @@ -1,149 +0,0 @@ -# DIAGNOSTIC PRODUCTION - Erreurs 500 Annonces - -## Script de test à exécuter sur votre serveur - -### 1. Test de connexion PostgreSQL - -```javascript -// Ajoutez temporairement dans server/routes.ts après la ligne 50 -app.get('/api/debug/db-connection', async (req, res) => { - try { - console.log('🔍 Testing PostgreSQL connection...'); - const result = await db.select().from(dashboardMessages).limit(1); - console.log('✅ DB Connection OK, sample result:', result); - res.json({ status: 'ok', connection: 'success', sampleData: result }); - } catch (error) { - console.error('❌ DB Connection Error:', error); - res.status(500).json({ status: 'error', error: error.message }); - } -}); -``` - -### 2. Test de mise à jour avec logs détaillés - -```javascript -// Remplacez temporairement la route PUT /api/announcements/:id par ceci -app.put('/api/announcements/:id', isAuthenticated, async (req: any, res) => { - console.log('🔍 [DEBUG] Starting announcement update process'); - console.log('🔍 [DEBUG] Request params:', req.params); - console.log('🔍 [DEBUG] Request body:', req.body); - console.log('🔍 [DEBUG] User:', req.user); - - try { - const userId = req.user.claims ? req.user.claims.sub : req.user.id; - console.log('🔍 [DEBUG] Extracted userId:', userId); - - const user = await storage.getUserWithGroups(userId); - console.log('🔍 [DEBUG] User found:', user ? 'YES' : 'NO'); - if (user) { - console.log('🔍 [DEBUG] User details:', { id: user.id, username: user.username, role: user.role }); - } - - if (!user) { - console.error('❌ [DEBUG] User not found'); - return res.status(404).json({ message: "User not found" }); - } - - if (user.role !== 'admin') { - console.error('❌ [DEBUG] Access denied - user role:', user.role); - return res.status(403).json({ message: "Only administrators can edit announcements" }); - } - - const id = parseInt(req.params.id); - console.log('🔍 [DEBUG] Announcement ID to update:', id); - - // Test if announcement exists - console.log('🔍 [DEBUG] Checking if announcement exists...'); - const existingAnnouncement = await storage.getAnnouncement(id); - console.log('🔍 [DEBUG] Existing announcement:', existingAnnouncement ? 'FOUND' : 'NOT FOUND'); - if (existingAnnouncement) { - console.log('🔍 [DEBUG] Existing announcement details:', { - id: existingAnnouncement.id, - title: existingAnnouncement.title, - createdBy: existingAnnouncement.createdBy - }); - } - - if (!existingAnnouncement) { - console.error('❌ [DEBUG] Announcement not found:', id); - return res.status(404).json({ message: "Announcement not found" }); - } - - console.log('🔍 [DEBUG] Validating request data...'); - const announcementData = insertAnnouncementSchema.partial().parse(req.body); - console.log('🔍 [DEBUG] Validated data:', announcementData); - - console.log('🔍 [DEBUG] Calling storage.updateAnnouncement...'); - const updatedAnnouncement = await storage.updateAnnouncement(id, announcementData); - console.log('✅ [DEBUG] Update successful:', updatedAnnouncement); - - res.json(updatedAnnouncement); - } catch (error) { - console.error('❌ [DEBUG] Error in update process:', error); - console.error('❌ [DEBUG] Error stack:', error.stack); - - if (error instanceof z.ZodError) { - console.error('❌ [DEBUG] Validation errors:', error.errors); - return res.status(400).json({ message: "Validation error", errors: error.errors }); - } - - res.status(500).json({ - message: "Failed to update announcement", - error: error.message, - debug: true - }); - } -}); -``` - -### 3. Test de la méthode updateAnnouncement directement - -```javascript -// Ajoutez cette route de test -app.post('/api/debug/test-update', isAuthenticated, async (req: any, res) => { - try { - console.log('🔍 [DEBUG] Direct update test'); - - // Test direct sur la base de données - const testResult = await db - .update(dashboardMessages) - .set({ title: 'Test Update ' + new Date().toISOString() }) - .where(eq(dashboardMessages.id, 1)) - .returning(); - - console.log('✅ [DEBUG] Direct DB update result:', testResult); - res.json({ status: 'success', result: testResult }); - } catch (error) { - console.error('❌ [DEBUG] Direct update error:', error); - res.status(500).json({ status: 'error', error: error.message }); - } -}); -``` - -## Instructions d'utilisation - -1. **Ajoutez ces routes de debug** à votre serveur de production -2. **Redémarrez le serveur** -3. **Testez dans l'ordre** : - - GET `/api/debug/db-connection` - - POST `/api/debug/test-update` - - PUT `/api/announcements/1` avec les nouveaux logs -4. **Envoyez-moi les logs complets** de ces tests - -## Vérifications supplémentaires - -### Vérifiez que les tables existent : -```sql -SELECT table_name FROM information_schema.tables -WHERE table_schema = 'public' AND table_name = 'dashboard_messages'; - -SELECT column_name, data_type FROM information_schema.columns -WHERE table_name = 'dashboard_messages'; -``` - -### Vérifiez les données : -```sql -SELECT id, title, created_by FROM dashboard_messages LIMIT 3; -``` - -Ces tests nous diront exactement où est le problème dans votre environnement de production. \ No newline at end of file diff --git a/FINAL_PRODUCTION_FIX.md b/FINAL_PRODUCTION_FIX.md deleted file mode 100644 index 01f3998..0000000 --- a/FINAL_PRODUCTION_FIX.md +++ /dev/null @@ -1,39 +0,0 @@ -# FIX FINAL PRODUCTION - ERREUR CN (19 Août 2025) - -## 🚫 PROBLÈME PERSISTANT -L'erreur `ReferenceError: cn is not defined` persiste malgré les corrections précédentes. - -## ✅ SOLUTION FINALE - -### Nouveau fichier créé : `TaskFormProduction.tsx` -- ✅ **ZÉRO utilisation de la fonction `cn`** -- ✅ Classes CSS écrites directement avec conditions ternaires -- ✅ Toutes les fonctionnalités conservées (dates de début + échéance) -- ✅ Validation robuste des dates -- ✅ Interface complète avec icônes - -### Modification de `TaskForm.tsx` -- ✅ Export maintenant vers `TaskFormProduction` au lieu de `SimpleTaskForm` -- ✅ Garantit que le module tâches utilise la version sans cn - -## 📁 FICHIERS À COPIER EN PRODUCTION -1. `client/src/components/tasks/TaskForm.tsx` (modifié) -2. `client/src/components/tasks/TaskFormProduction.tsx` (nouveau) - -## 🎯 AVANTAGES -- **100% sans dépendance cn** : Aucune utilisation de la fonction problématique -- **Classes directes** : `className={field.value ? "classe1" : "classe2"}` -- **Même interface** : Toutes les fonctionnalités préservées -- **Production ready** : Conçu spécifiquement pour éviter les erreurs - -## ⚡ DÉPLOIEMENT -```bash -# Copier les 2 fichiers sur votre serveur -# Redémarrer -docker-compose restart -``` - -## ✅ RÉSULTAT ATTENDU -- ✅ Module tâches se charge sans erreur -- ✅ Formulaire avec dates de début et d'échéance -- ✅ Plus jamais d'erreur `cn is not defined` \ No newline at end of file diff --git a/INSTRUCTIONS_CALENDRIER_PRODUCTION_FINAL.md b/INSTRUCTIONS_CALENDRIER_PRODUCTION_FINAL.md deleted file mode 100644 index 3512c01..0000000 --- a/INSTRUCTIONS_CALENDRIER_PRODUCTION_FINAL.md +++ /dev/null @@ -1,55 +0,0 @@ -# INSTRUCTIONS FINALES - CALENDRIER PRODUCTION - -## PROBLÈME IDENTIFIÉ -Votre serveur de production utilise une version différente de CalendarGrid.tsx qui limite encore l'affichage à 2 éléments. - -## SOLUTION DÉFINITIVE - -### 1. Fichier de remplacement créé -Le fichier `CalendarGrid.PRODUCTION.tsx` contient la version finale optimisée pour votre production avec : - -- ✅ **MAX_VISIBLE_ITEMS = 4** (fixé et forcé) -- ✅ **Bouton "+X autres" en blanc/gris** (fini l'orange) -- ✅ **Hauteur cellules = h-36** (plus d'espace) -- ✅ **Styles inline forcés** pour éviter les conflits CSS -- ✅ **Modal Dialog** pour voir tous les éléments - -### 2. Étapes de déploiement sur votre serveur - -1. **Sauvegarder votre fichier actuel :** - ```bash - cp client/src/components/CalendarGrid.tsx client/src/components/CalendarGrid.tsx.backup - ``` - -2. **Remplacer par la nouvelle version :** - ```bash - cp CalendarGrid.PRODUCTION.tsx client/src/components/CalendarGrid.tsx - ``` - -3. **Redémarrer votre application :** - ```bash - npm run build - pm2 restart all - # ou votre méthode de redémarrage - ``` - -4. **Vider le cache navigateur :** Ctrl+F5 - -### 3. Vérifications post-déploiement - -- [ ] Maximum 4 éléments visibles par jour -- [ ] Bouton "+X autres" blanc/gris visible -- [ ] Modal s'ouvre en cliquant sur "+X autres" -- [ ] Toutes les commandes/livraisons affichées dans le modal -- [ ] Pas de problèmes d'affichage ou de CSS - -### 4. En cas de problème - -Si ça ne fonctionne toujours pas : -1. Vérifiez que le bon fichier a été copié -2. Vérifiez les logs de votre serveur -3. Essayez un redémarrage complet -4. Contactez-moi avec les logs d'erreur - ---- -**IMPORTANT :** Ce fichier CalendarGrid.PRODUCTION.tsx est spécialement optimisé pour résoudre vos problèmes de production. \ No newline at end of file diff --git a/INSTRUCTIONS_DEPLOYMENT.md b/INSTRUCTIONS_DEPLOYMENT.md deleted file mode 100644 index 58c6900..0000000 --- a/INSTRUCTIONS_DEPLOYMENT.md +++ /dev/null @@ -1,108 +0,0 @@ -# 🚀 Instructions de Déploiement avec Migration Automatique - -## Vue d'ensemble -Le système est maintenant configuré pour exécuter automatiquement les migrations de base de données lors de chaque mise à jour Docker, garantissant que toutes les tables nécessaires sont créées. - -## 🔧 Configuration Automatique - -### Scripts créés -1. **`scripts/auto-migrate-production.sh`** - Migration automatique au démarrage -2. **`scripts/docker-entrypoint.sh`** - Point d'entrée avec migration -3. **`scripts/manual-migrate.sh`** - Migration manuelle si nécessaire - -### Dockerfile modifié -- Copie automatique des scripts de migration -- Point d'entrée personnalisé avec migration -- Permissions configurées automatiquement - -## 🚀 Déploiement - -### Option 1: Reconstruction complète (Recommandée) -```bash -# Arrêter le conteneur actuel -docker-compose down - -# Reconstruire avec les nouveaux scripts -docker-compose up --build -d - -# Vérifier les logs de migration -docker-compose logs -f -``` - -### Option 2: Mise à jour sans reconstruction -```bash -# Copier les scripts dans le conteneur existant -docker cp scripts/ logiflow-logiflow-1:/app/ - -# Exécuter la migration manuellement -docker exec logiflow-logiflow-1 chmod +x /app/scripts/auto-migrate-production.sh -docker exec logiflow-logiflow-1 /app/scripts/auto-migrate-production.sh - -# Redémarrer l'application -docker-compose restart -``` - -## 🔍 Vérification - -### Logs de migration -```bash -# Voir les logs de migration au démarrage -docker-compose logs | grep "AUTO-MIGRATE" -``` - -### État des tables -```bash -# Vérifier que toutes les tables existent -docker exec logiflow-logiflow-1 psql $DATABASE_URL -c " -SELECT tablename -FROM pg_tables -WHERE schemaname = 'public' -ORDER BY tablename; -" -``` - -### Test du système d'annonces -```bash -# Vérifier la table announcements spécifiquement -docker exec logiflow-logiflow-1 psql $DATABASE_URL -c " -SELECT 'announcements' as table_name, count(*) as columns -FROM information_schema.columns -WHERE table_name = 'announcements'; -" -``` - -## 🛠️ Dépannage - -### Migration manuelle forcée -```bash -# Si la migration automatique échoue -docker exec logiflow-logiflow-1 /app/scripts/manual-migrate.sh -``` - -### Vérification des permissions -```bash -# Vérifier que les scripts sont exécutables -docker exec logiflow-logiflow-1 ls -la /app/scripts/ -``` - -### Logs détaillés -```bash -# Activer le debug des migrations -docker-compose up -d --env DEBUG_MIGRATIONS=true -``` - -## 📋 Table créée automatiquement - -✅ **announcements** - Système d'informations - -Le script vérifie et crée **UNIQUEMENT** la table `announcements` si elle n'existe pas. Toutes les autres tables existent déjà en production et ne sont pas touchées. - -## 🔄 Futures mises à jour - -Désormais, chaque fois que vous mettez à jour votre application Docker : -1. Le conteneur démarre -2. La migration automatique s'exécute -3. Toutes les nouvelles tables sont créées -4. L'application démarre normalement - -**Plus besoin d'intervention manuelle !** \ No newline at end of file diff --git a/INSTRUCTIONS_PRODUCTION.md b/INSTRUCTIONS_PRODUCTION.md deleted file mode 100644 index 8402429..0000000 --- a/INSTRUCTIONS_PRODUCTION.md +++ /dev/null @@ -1,38 +0,0 @@ -# Instructions pour corriger la production - -## Problème identifié -La table `announcements` n'existe pas dans votre base de données de production. - -## Solution rapide - -### Étape 1: Accédez à votre conteneur -```bash -# Accédez au conteneur de votre application -docker exec -it logiflow-logiflow-1 /bin/bash -``` - -### Étape 2: Exécutez le script SQL -```bash -# Dans le conteneur, exécutez le script de correction -psql $DATABASE_URL -f fix_production_announcements.sql -``` - -### Alternative: Depuis l'extérieur du conteneur -```bash -# Copiez le fichier dans le conteneur -docker cp fix_production_announcements.sql logiflow-logiflow-1:/app/ - -# Exécutez le script -docker exec logiflow-logiflow-1 psql $DATABASE_URL -f /app/fix_production_announcements.sql -``` - -## Vérification -Après l'exécution, vous devriez voir : -``` -Table announcements créée avec succès! -``` - -Le système d'annonces fonctionnera immédiatement après cette correction. - -## Prévention future -Pour éviter ce problème lors des futures mises à jour, utilisez le fichier `init.sql` pour les nouvelles installations. \ No newline at end of file diff --git a/INSTRUCTIONS_PRODUCTION_CALENDRIER.md b/INSTRUCTIONS_PRODUCTION_CALENDRIER.md deleted file mode 100644 index a114e77..0000000 --- a/INSTRUCTIONS_PRODUCTION_CALENDRIER.md +++ /dev/null @@ -1,47 +0,0 @@ -# Instructions de Mise à Jour du Calendrier en Production - -## Problème Identifié -Le calendrier en production affiche seulement 2 éléments par jour au lieu de 4, et les boutons "+X autres" n'apparaissent pas malgré la logique fonctionnelle (visible dans les logs de la console). - -## Solution -Copier le fichier CalendarGrid.tsx mis à jour vers votre serveur de production. - -## Fichier à Copier -``` -client/src/components/CalendarGrid.tsx -``` - -## Changements Principaux - -### 1. Limite d'affichage augmentée -```javascript -const MAX_VISIBLE_ITEMS = 4; // Était 2 avant -``` - -### 2. Modal remplace le popover -- Import `Dialog` au lieu de `Popover` -- Interface modal moderne pour voir tous les éléments -- Bouton orange visible : `bg-orange-200 hover:bg-orange-300` - -### 3. Couleurs pastels appliquées -- Commandes : `bg-blue-300 text-gray-800` -- Livraisons : `bg-green-300 text-gray-800` -- Planifiées : `bg-yellow-300 text-gray-800` -- Livrées : `bg-gray-400 text-white` - -## Vérification Après Copie - -1. **Teste sur un jour avec plus de 4 éléments** -2. **Le bouton orange "+X autres" doit apparaître** -3. **Clic sur le bouton ouvre le modal avec tous les éléments** -4. **Couleurs pastels visibles partout** - -## Logs à Vérifier -Dans la console du navigateur, vous devriez voir : -``` -✅ Button "+X autres" should appear: [nombre] -🔍 DayItemsContainer: { shouldShowButton: true } -``` - ---- -**Note importante :** Cette mise à jour corrige définitivement le problème d'affichage limité à 2 éléments en production. \ No newline at end of file diff --git a/PRODUCTION_DEBUG.md b/PRODUCTION_DEBUG.md deleted file mode 100644 index e2b2d7f..0000000 --- a/PRODUCTION_DEBUG.md +++ /dev/null @@ -1,161 +0,0 @@ -# 🐛 DEBUG PRODUCTION - Module Avoirs - -## ⚠️ Problème identifié -D'après votre capture d'écran, l'erreur "Failed to create avoir" indique un problème côté serveur. - -## 🔍 ÉTAPES DE DÉBOGAGE - -### 1️⃣ **Vérifier que la table `avoirs` existe** - -```bash -# Connectez-vous à votre base PostgreSQL -psql -d votre_database_name - -# Vérifiez si la table existe -\dt avoirs - -# Si elle n'existe pas, vous verrez "Did not find any relation named avoirs" -``` - -### 2️⃣ **Créer la table manquante** - -Si la table n'existe pas, exécutez le script SQL fourni : - -```bash -# Depuis votre serveur, exécutez : -psql -d votre_database_name -f sql/create_avoirs_table.sql - -# Ou copiez-collez le contenu du fichier directement : -``` - -```sql --- Script de création de la table avoirs pour la production -CREATE TABLE IF NOT EXISTS avoirs ( - id SERIAL PRIMARY KEY, - supplier_id INTEGER NOT NULL REFERENCES suppliers(id) ON DELETE CASCADE, - group_id INTEGER NOT NULL REFERENCES groups(id) ON DELETE CASCADE, - invoice_reference VARCHAR(255), - amount DECIMAL(10,2), - comment TEXT, - commercial_processed BOOLEAN DEFAULT FALSE, - status VARCHAR(50) DEFAULT 'En attente de demande' CHECK (status IN ('En attente de demande', 'Demandé', 'Reçu')), - webhook_sent BOOLEAN DEFAULT FALSE, - nocodb_verified BOOLEAN DEFAULT FALSE, - nocodb_verified_at TIMESTAMP, - processed_at TIMESTAMP, - created_by VARCHAR(255) NOT NULL REFERENCES users(id) ON DELETE CASCADE, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -); - --- Index pour améliorer les performances -CREATE INDEX IF NOT EXISTS idx_avoirs_supplier_id ON avoirs(supplier_id); -CREATE INDEX IF NOT EXISTS idx_avoirs_group_id ON avoirs(group_id); -CREATE INDEX IF NOT EXISTS idx_avoirs_created_by ON avoirs(created_by); -CREATE INDEX IF NOT EXISTS idx_avoirs_status ON avoirs(status); -CREATE INDEX IF NOT EXISTS idx_avoirs_created_at ON avoirs(created_at DESC); - --- Trigger pour mettre à jour automatically updated_at -CREATE OR REPLACE FUNCTION update_avoirs_updated_at() -RETURNS TRIGGER AS $$ -BEGIN - NEW.updated_at = CURRENT_TIMESTAMP; - RETURN NEW; -END; -$$ language 'plpgsql'; - -DROP TRIGGER IF EXISTS update_avoirs_updated_at_trigger ON avoirs; -CREATE TRIGGER update_avoirs_updated_at_trigger - BEFORE UPDATE ON avoirs - FOR EACH ROW - EXECUTE FUNCTION update_avoirs_updated_at(); -``` - -### 3️⃣ **Vérifier les logs serveur** - -```bash -# Sur votre serveur, surveillez les logs : -tail -f /var/log/your_app.log - -# Ou si vous utilisez PM2 : -pm2 logs your_app_name - -# Ou Docker : -docker logs your_container_name -f -``` - -### 4️⃣ **Tester manuellement l'API** - -```bash -# Test avec curl pour vérifier l'API -curl -X POST http://votre-serveur.com/api/avoirs \ - -H "Content-Type: application/json" \ - -H "Cookie: connect.sid=your_session_cookie" \ - -d '{ - "supplierId": 1, - "groupId": 1, - "invoiceReference": "TEST123", - "amount": 100.00, - "comment": "Test avoir", - "commercialProcessed": false - }' -``` - -### 5️⃣ **Vérifier les permissions de base** - -```sql --- Vérifiez que votre utilisateur de base de données a les bonnes permissions -GRANT ALL PRIVILEGES ON TABLE avoirs TO your_db_user; -GRANT USAGE, SELECT ON SEQUENCE avoirs_id_seq TO your_db_user; -``` - -## 🛠️ SOLUTIONS COMMUNES - -### **Erreur : Table 'avoirs' doesn't exist** -➡️ Exécutez le script SQL ci-dessus - -### **Erreur : Permission denied** -➡️ Vérifiez les droits sur la table et la séquence - -### **Erreur : Foreign key constraint fails** -➡️ Vérifiez que les IDs `supplierId` et `groupId` existent dans leurs tables respectives - -### **Erreur : Webhook timeout** -➡️ Le webhook n'est pas bloquant, l'avoir sera créé même si le webhook échoue - -## 🔧 COMMANDES DE DIAGNOSTIC - -```sql --- Vérifier la structure de la table -\d avoirs - --- Voir les contraintes -SELECT conname, contype FROM pg_constraint WHERE conrelid = 'avoirs'::regclass; - --- Compter les enregistrements -SELECT COUNT(*) FROM avoirs; - --- Tester une insertion basique -INSERT INTO avoirs (supplier_id, group_id, invoice_reference, amount, created_by) -VALUES (1, 1, 'TEST-001', 50.00, 'admin') -RETURNING id; -``` - -## ⚡ RESTART RAPIDE - -Si tout semble correct mais ça ne marche toujours pas : - -```bash -# Redémarrez votre application -pm2 restart your_app_name - -# Ou Docker -docker restart your_container_name - -# Ou service systemd -sudo systemctl restart your_app_service -``` - ---- - -💡 **Une fois la table créée et les permissions correctes, l'interface devrait fonctionner immédiatement !** \ No newline at end of file diff --git a/PRODUCTION_DLC_STOCK_UPDATE.md b/PRODUCTION_DLC_STOCK_UPDATE.md deleted file mode 100644 index c7e06d3..0000000 --- a/PRODUCTION_DLC_STOCK_UPDATE.md +++ /dev/null @@ -1,92 +0,0 @@ -# Mise à jour Production - Fonctionnalité Stock Épuisé DLC - -## Nouveaux champs ajoutés au module DLC - -Cette mise à jour ajoute la fonctionnalité de gestion du stock épuisé pour les produits DLC, permettant de distinguer les produits périmés des produits en rupture de stock. - -### Changements de base de données - -**Nouveaux champs dans la table `dlc_products` :** -- `stock_epuise` (boolean) - Indique si le produit est épuisé en stock -- `stock_epuise_by` (varchar) - Utilisateur qui a marqué le produit comme épuisé -- `stock_epuise_at` (timestamp) - Date de marquage comme épuisé - -### Scripts de migration - -#### Pour une nouvelle installation -Les nouveaux champs sont inclus dans `init.sql` (lignes 188-190) - -#### Pour une base de données existante -Exécuter le script : `migrations/add_stock_epuise_fields.sql` - -```sql -ALTER TABLE dlc_products -ADD COLUMN IF NOT EXISTS stock_epuise boolean DEFAULT false NOT NULL, -ADD COLUMN IF NOT EXISTS stock_epuise_by varchar(255), -ADD COLUMN IF NOT EXISTS stock_epuise_at timestamp; -``` - -### Nouvelles routes API - -#### Route pour marquer un produit comme stock épuisé -- **Endpoint:** `PUT /api/dlc-products/:id/stock-epuise` -- **Permissions:** Accessible à tous les utilisateurs authentifiés -- **Fonction:** Marque un produit comme épuisé en stock (avec suivi utilisateur et date) - -#### Route pour restaurer le stock d'un produit -- **Endpoint:** `PUT /api/dlc-products/:id/restore-stock` -- **Permissions:** Réservé aux admin, directeur et manager -- **Fonction:** Remet le produit en stock disponible - -### Interface utilisateur - -#### Nouveaux boutons -- **Bouton "Stock épuisé"** (icône PackageX) : Visible sur tous les produits non épuisés et non validés -- **Bouton "Restaurer stock"** (icône RotateCcw) : Visible uniquement pour les utilisateurs privilégiés sur les produits épuisés - -#### Styles visuels -- **Produits épuisés** : Fond jaune avec badge "Stock épuisé" (jaune) -- **Produits validés** : Fond gris avec badge "Validé" (gris) -- **Produits normaux** : Fond blanc - -### Déploiement - -1. **Mise à jour Docker :** - ```bash - docker-compose down - docker-compose build - docker-compose up -d - ``` - -2. **Migration base de données :** - ```bash - # Se connecter au conteneur PostgreSQL - docker exec -it [postgres_container] psql -U [username] -d [database] - - # Exécuter le script de migration - \i migrations/add_stock_epuise_fields.sql - ``` - -3. **Vérification :** - - Tester les nouveaux boutons dans l'interface DLC - - Vérifier les permissions (admin/directeur/manager pour restauration) - - Contrôler l'affichage des badges et couleurs - -### Notes importantes - -- Les nouveaux champs ont des valeurs par défaut pour éviter les erreurs sur les données existantes -- La fonctionnalité est rétrocompatible avec les produits DLC existants -- Les permissions suivent la logique existante du système -- Aucun impact sur les fonctionnalités existantes de validation DLC - -### Support - -En cas de problème : -1. Vérifier que la migration a été appliquée : `\d dlc_products` -2. Contrôler les logs de l'application pour les erreurs API -3. Vérifier les permissions utilisateur dans l'interface admin - ---- -**Date de création :** $(date) -**Version :** 1.0.0 -**Auteur :** Système de gestion DLC \ No newline at end of file diff --git a/PRODUCTION_FIX_COMPLET.md b/PRODUCTION_FIX_COMPLET.md deleted file mode 100644 index e7575ec..0000000 --- a/PRODUCTION_FIX_COMPLET.md +++ /dev/null @@ -1,37 +0,0 @@ -# FIX PRODUCTION COMPLET - MODULE TÂCHES (19 Août 2025) - -## ✅ PROBLÈME RÉSOLU -Le module tâches fonctionne maintenant en production avec les dates de début. - -## 📁 FICHIERS CORRIGÉS - -### 1. `client/src/components/tasks/TaskForm.tsx` -- ✅ Export corrigé vers SimpleTaskForm -- ✅ Commentaire mis à jour - -### 2. `client/src/components/tasks/SimpleTaskForm.tsx` -- ✅ Schéma robuste avec startDate et dueDate -- ✅ Validation : échéance ≥ début -- ✅ Interface avec 2 champs de dates -- ✅ Gestion d'erreur useQuery v5 -- ✅ Types corrigés pour production -- ✅ Explications visuelles des dates - -## 🎯 FONCTIONNALITÉS -- ✅ Date de début (📅) : Quand la tâche devient visible -- ✅ Date d'échéance (⏰) : Quand elle doit être terminée -- ✅ Validation automatique des dates -- ✅ Interface responsive 2 colonnes -- ✅ Icônes explicatives -- ✅ Gestion d'erreur robuste - -## 📋 COPIER EN PRODUCTION -1. `client/src/components/tasks/TaskForm.tsx` -2. `client/src/components/tasks/SimpleTaskForm.tsx` -3. Redémarrer : `docker-compose restart` - -## ✅ VALIDATION -- Module tâches se charge correctement -- Formulaire avec 2 dates s'affiche -- Création/modification fonctionne -- Validation des dates active \ No newline at end of file diff --git a/SOLUTION_IMMEDIATE.md b/SOLUTION_IMMEDIATE.md deleted file mode 100644 index fc9ff15..0000000 --- a/SOLUTION_IMMEDIATE.md +++ /dev/null @@ -1,42 +0,0 @@ -# SOLUTION IMMÉDIATE - ERREUR CN PRODUCTION (19 Août 2025) - -## 🔥 PROBLÈME -L'erreur `ReferenceError: cn is not defined` persiste en production malgré les corrections. - -## ✅ SOLUTION DÉFINITIVE - -### Nouveau fichier créé : `TaskFormClean.tsx` -- **ZÉRO fonction cn** : Aucune utilisation de la fonction problématique -- **Classes CSS directes** : Conditions ternaires uniquement -- **API corrigée** : Appels apiRequest avec la bonne syntaxe -- **Interface complète** : Toutes fonctionnalités (dates début + échéance) - -### Export modifié dans `TaskForm.tsx` -- ✅ Pointe maintenant vers `TaskFormClean.tsx` -- ✅ Version ultra-propre pour production - -## 📁 FICHIERS À COPIER SUR VOTRE SERVEUR - -1. **`client/src/components/tasks/TaskForm.tsx`** (modifié) -2. **`client/src/components/tasks/TaskFormClean.tsx`** (nouveau, ultra-propre) - -## 🚀 DÉPLOIEMENT IMMÉDIAT - -```bash -# Sur votre serveur de production -# 1. Copier TaskForm.tsx -# 2. Copier TaskFormClean.tsx -# 3. Redémarrer -docker-compose restart -``` - -## ✅ GARANTIES -- **100% sans cn** : Aucune référence à la fonction problématique -- **API correcte** : Syntaxe apiRequest validée -- **Production ready** : Testé et optimisé spécifiquement -- **Fonctionnalités complètes** : Dates de début + échéance + validation - -## 🎯 RÉSULTAT -- ✅ Module tâches se charge sans erreur -- ✅ Formulaire avec 2 dates fonctionnel -- ✅ Plus jamais d'erreur `cn is not defined` \ No newline at end of file diff --git a/SOLUTION_URGENTE.md b/SOLUTION_URGENTE.md deleted file mode 100644 index a26c3ae..0000000 --- a/SOLUTION_URGENTE.md +++ /dev/null @@ -1,51 +0,0 @@ -# SOLUTION URGENTE - Production DLC - -## Commande immédiate à exécuter sur votre serveur - -### Étape 1: Appliquer la migration -```bash -docker-compose exec logiflow-db psql -U logiflow_admin -d logiflow_db << 'EOF' -ALTER TABLE dlc_products -ADD COLUMN IF NOT EXISTS stock_epuise boolean DEFAULT false NOT NULL, -ADD COLUMN IF NOT EXISTS stock_epuise_by varchar(255), -ADD COLUMN IF NOT EXISTS stock_epuise_at timestamp; - -CREATE INDEX IF NOT EXISTS idx_dlc_products_stock_epuise ON dlc_products(stock_epuise); - -SELECT 'Migration DLC terminée' as status; -EOF -``` - -### Étape 2: Redémarrer l'application -```bash -docker-compose restart logiflow -``` - -## Si la première commande ne fonctionne pas - -### Alternative avec connexion directe: -```bash -# Identifier le nom du conteneur PostgreSQL -docker ps | grep postgres - -# Se connecter directement -docker exec -it [NOM_CONTENEUR_POSTGRES] psql -U logiflow_admin -d logiflow_db - -# Puis dans psql, exécuter: -ALTER TABLE dlc_products -ADD COLUMN IF NOT EXISTS stock_epuise boolean DEFAULT false NOT NULL, -ADD COLUMN IF NOT EXISTS stock_epuise_by varchar(255), -ADD COLUMN IF NOT EXISTS stock_epuise_at timestamp; - -CREATE INDEX IF NOT EXISTS idx_dlc_products_stock_epuise ON dlc_products(stock_epuise); - -\q -``` - -## Vérification -Après l'application, vérifiez que les colonnes existent : -```bash -docker-compose exec logiflow-db psql -U logiflow_admin -d logiflow_db -c "\d dlc_products" -``` - -L'erreur "column does not exist" disparaîtra immédiatement. \ No newline at end of file diff --git a/SYNC_DEV_PRODUCTION.md b/SYNC_DEV_PRODUCTION.md deleted file mode 100644 index b52c1f7..0000000 --- a/SYNC_DEV_PRODUCTION.md +++ /dev/null @@ -1,42 +0,0 @@ -# SYNCHRONISATION DEV ↔ PRODUCTION - -## PROBLÈME RÉSOLU -Le fichier `client/src/components/CalendarGrid.tsx` est maintenant unifié pour développement ET production. - -## CHANGEMENTS APPLIQUÉS - -### ✅ Paramètres uniformisés -- `MAX_VISIBLE_ITEMS = 2` (identique dev/prod) -- Bouton "+X autres" blanc/gris (fini l'orange) -- Hauteur cellules `h-36` (plus d'espace) -- Styles forcés pour compatibilité production - -### ✅ Commentaires clarifiés -- "DEV = PRODUCTION" dans le code -- "IDENTIQUE DEV/PROD" sur les composants -- "BLANC/GRIS UNIFORME" sur le bouton - -## POUR VOTRE PRODUCTION - -1. **Copiez ce fichier sur votre serveur :** - ```bash - # Fichier à copier depuis ce projet Replit : - client/src/components/CalendarGrid.tsx - ``` - -2. **Remplacez sur votre serveur :** - ```bash - # Sur votre serveur de production : - cp CalendarGrid.tsx client/src/components/CalendarGrid.tsx - ``` - -3. **Redémarrez votre application** - -## RÉSULTAT ATTENDU -- ✅ 2 éléments max visibles par jour -- ✅ Bouton "+X autres" blanc/gris -- ✅ Modal qui s'ouvre correctement -- ✅ Interface identique dev/production - ---- -**Le fichier est maintenant unifié - plus de différences entre dev et prod !** \ No newline at end of file diff --git a/URGENT_FIX_CN_PRODUCTION.md b/URGENT_FIX_CN_PRODUCTION.md deleted file mode 100644 index 468443c..0000000 --- a/URGENT_FIX_CN_PRODUCTION.md +++ /dev/null @@ -1,33 +0,0 @@ -# FIX URGENT - ERREUR CN PRODUCTION (19 Août 2025) - -## PROBLÈME -`ReferenceError: cn is not defined` - La fonction utilitaire `cn` de `@/lib/utils` n'est pas disponible en production. - -## SOLUTION IMMÉDIATE - -### Option 1 : Fonction cn intégrée (RAPIDE) -J'ai ajouté la fonction `cn` directement dans `SimpleTaskForm.tsx` pour éviter la dépendance. - -**Fichier modifié :** `client/src/components/tasks/SimpleTaskForm.tsx` -- ✅ Suppression de l'import `{ cn } from "@/lib/utils"` -- ✅ Ajout de la fonction cn intégrée -- ✅ Fonction simplifiée mais fonctionnelle - -### Option 2 : Vérifier le fichier utils.ts -Si le problème persiste, créer ou vérifier `client/src/lib/utils.ts` : - -```typescript -export function cn(...inputs: (string | undefined | null | false)[]): string { - return inputs.filter(Boolean).join(' '); -} -``` - -## ACTION IMMÉDIATE -1. Copier le fichier `SimpleTaskForm.tsx` modifié sur votre serveur -2. Redémarrer : `docker-compose restart` -3. Tester le module tâches - -## VALIDATION -- ✅ Plus d'erreur `cn is not defined` -- ✅ Module tâches se charge correctement -- ✅ Formulaire fonctionne avec les 2 dates \ No newline at end of file diff --git a/URGENT_PRODUCTION_FIX_TACHES.md b/URGENT_PRODUCTION_FIX_TACHES.md deleted file mode 100644 index b6afc0f..0000000 --- a/URGENT_PRODUCTION_FIX_TACHES.md +++ /dev/null @@ -1,41 +0,0 @@ -# FIX URGENT PRODUCTION - MODULE TÂCHES (19 Août 2025) - -## PROBLÈME -Le module tâches ne se charge pas en production à cause des nouvelles fonctionnalités de dates de départ. - -## SOLUTION IMMÉDIATE - ROLLBACK TEMPORAIRE - -### Étape 1 : Modifier TaskForm.tsx -Remplacer le contenu du fichier `client/src/components/tasks/TaskForm.tsx` par : - -```typescript -// Rollback temporaire - utilise la version simple sans dates de départ -export { default } from "./SimpleTaskForm"; -``` - -### Étape 2 : Créer SimpleTaskForm.tsx -Copier le fichier `client/src/components/tasks/SimpleTaskForm.tsx` sur votre serveur. - -### Étape 3 : Redémarrer -```bash -docker-compose restart -``` - -## CE QUE FAIT CE FIX -- Supprime temporairement les dates de départ problématiques -- Garde toutes les autres fonctionnalités (création, modification, suppression) -- Permet au module de fonctionner immédiatement - -## ALTERNATIVE - Correction backend si vous préférez garder les dates -Si vous voulez garder les dates de départ, corrigez le backend : - -1. Dans `server/storage.ts`, remplacer la méthode `getTasks` (lignes ~1587-1669) -2. Dans `client/src/pages/Tasks.tsx`, ajouter la gestion d'erreur robuste -3. Redémarrer le serveur - -## VALIDATION -Après le fix : -- ✅ Le module tâches se charge -- ✅ Création de tâches fonctionne -- ✅ Liste des tâches s'affiche -- ⚠️ Dates de départ temporairement désactivées \ No newline at end of file diff --git a/attached_assets/Pasted--Calcul-statistiques-mensuelles-year-2025-month-8-startDate-2025-1755292316686_1755292316686.txt b/attached_assets/Pasted--Calcul-statistiques-mensuelles-year-2025-month-8-startDate-2025-1755292316686_1755292316686.txt deleted file mode 100644 index 4d8aba0..0000000 --- a/attached_assets/Pasted--Calcul-statistiques-mensuelles-year-2025-month-8-startDate-2025-1755292316686_1755292316686.txt +++ /dev/null @@ -1,202 +0,0 @@ - - -📊 Calcul statistiques mensuelles: { - - year: 2025, - - month: 8, - - startDate: '2025-08-01', - - endDate: '2025-09-01', - - groupIds: undefined - -} - -🗓️ [DATE-CALC] Aujourd'hui: 2025-08-15 (Vendredi) - -🗓️ [DATE-CALC] Année précédente: 2024-08-16 (Vendredi) - -🌤️ [RESPONSE] Weather data prepared: { - - hasCurrentYear: true, - - hasPreviousYear: true, - - location: 'Frouard, France' - -} - -GET /api/weather/current 304 in 72ms - -📊 Statistiques calculées: { - - ordersCount: 20, - - deliveriesCount: 42, - - pendingOrdersCount: 8, - - averageDeliveryTime: 0.3611111111111111, - - totalPalettes: 120, - - totalPackages: 36 - -} - -GET /api/stats/monthly 304 in 72ms - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: undefined - -Fetching all deliveries - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - userRole: 'admin' - -} - -Admin filtering with groupIds: undefined - -Fetching all orders - -Customer Orders API called with: { groupIds: undefined, userRole: 'admin' } - -🔗 PRODUCTION: getOrders() récupéré 51 commandes avec relations - -Orders returned: 51 items - -GET /api/orders 304 in 372ms - -🔍 Tasks API called with: { - - groupIds: undefined, - - userRole: 'admin', - - userId: 'admin_local', - - requestedStoreId: undefined, - - userGroups: 'all' - -} - -GET /api/user 304 in 361ms - -GET /api/dlc-products/stats 304 in 367ms - -🔗 PRODUCTION: getDeliveries() récupéré 86 livraisons avec relations - -Deliveries returned: 86 items - -GET /api/deliveries 304 in 384ms - -Customer Orders returned: 37 items - -GET /api/customer-orders 304 in 385ms - -📋 Tasks returned: 55 items for user: admin_local - -GET /api/tasks 304 in 377ms - -GET /api/publicities 304 in 384ms - -GET /api/user 304 in 5ms - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - userRole: 'admin' - -} - -Admin filtering with groupIds: [ 1 ] - -Fetching all orders - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: [ 1 ] - -Fetching all deliveries - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -🔗 PRODUCTION: getOrders() récupéré 33 commandes avec relations - -Orders returned: 33 items - -GET /api/orders 304 in 120ms - -🔗 PRODUCTION: getDeliveries() récupéré 48 livraisons avec relations - -Deliveries returned: 48 items - -GET /api/deliveries 304 in 137ms - -Customer Orders returned: 9 items - -GET /api/customer-orders 304 in 139ms - -GET /api/groups 304 in 60ms - -GET /api/publicities 304 in 90ms - -GET /api/user 304 in 6ms - -GET /api/suppliers 304 in 9ms - -GET /api/dlc-products 304 in 24ms - -GET /api/weather/current 401 in 1ms - -📄 SPA: Serving index.html for /auth - -GET /api/user 401 in 1ms - -GET /api/user 401 in 1ms - -GET /api/default-credentials-check 304 in 4ms - -HEAD /api/health 200 in 1ms - diff --git a/attached_assets/Pasted--Database-initialization-NODE-ENV-production-isProduction-true-h-1755083906219_1755083906219.txt b/attached_assets/Pasted--Database-initialization-NODE-ENV-production-isProduction-true-h-1755083906219_1755083906219.txt deleted file mode 100644 index d73adee..0000000 --- a/attached_assets/Pasted--Database-initialization-NODE-ENV-production-isProduction-true-h-1755083906219_1755083906219.txt +++ /dev/null @@ -1,140 +0,0 @@ - - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db' - -} - -🐳 PRODUCTION: Using standard PostgreSQL - -✅ PostgreSQL connection test successful - -🐳 PRODUCTION: Using PostgreSQL storage - -🐳 PRODUCTION: Local auth configured with PostgreSQL sessions - -🐳 PRODUCTION: Starting LogiFlow application - -🐳 Environment: { NODE_ENV: 'production', DATABASE_URL: 'Present', PORT: '3000' } - -🔍 Using development storage and authentication - -🔧 Using memory session store for development - -Warning: connect.session() MemoryStore is not - -designed for a production environment, as it will leak - -memory, and will not scale past a single process. - -🐳 Serving static files from: /app/dist/public - -🐳 PRODUCTION: LogiFlow serving on port 3000 - -✅ Production admin user found: { id: 'admin_local', username: 'admin', passwordFormat: 'present' } - -✅ Admin user exists, preserving current password - -HEAD /api/health 200 in 5ms - -📄 SPA: Serving index.html for /bl-reconciliation - -🔍 PRODUCTION /api/user - req.user: { - - id: 'admin_local', - - role: 'admin', - - hasUserGroups: true, - - userGroupsLength: 0, - - userGroups: [] - -} - -GET /api/user 304 in 10ms - -🔍 PRODUCTION /api/user - req.user: { - - id: 'admin_local', - - role: 'admin', - - hasUserGroups: true, - - userGroupsLength: 0, - - userGroups: [] - -} - -GET /api/user 304 in 9ms - -GET /api/suppliers 304 in 19ms - -🔍 PRODUCTION /api/user - req.user: { - - id: 'admin_local', - - role: 'admin', - - hasUserGroups: true, - - userGroupsLength: 0, - - userGroups: [] - -} - -GET /api/user 304 in 20ms - -🔍 PRODUCTION /api/user - req.user: { - - id: 'admin_local', - - role: 'admin', - - hasUserGroups: true, - - userGroupsLength: 0, - - userGroups: [] - -} - -GET /api/user 304 in 8ms - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: undefined - -Fetching all deliveries - -Deliveries returned: 81 items - -GET /api/deliveries 304 in 50ms - -GET /api/groups 304 in 36ms - -HEAD /api/health 200 in 1ms - diff --git a/attached_assets/Pasted--Deliveries-returned-195-items-GET-api-deliveries-200-in-13646ms-PRODUCTION-get-1762238340459_1762238340460.txt b/attached_assets/Pasted--Deliveries-returned-195-items-GET-api-deliveries-200-in-13646ms-PRODUCTION-get-1762238340459_1762238340460.txt deleted file mode 100644 index eace67e..0000000 --- a/attached_assets/Pasted--Deliveries-returned-195-items-GET-api-deliveries-200-in-13646ms-PRODUCTION-get-1762238340459_1762238340460.txt +++ /dev/null @@ -1,205 +0,0 @@ - - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13646ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13267ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13327ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13210ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13452ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13162ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13242ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13356ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13372ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13661ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13182ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13344ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13296ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13193ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13173ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13386ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13497ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 12887ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 12851ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13639ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13306ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13363ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13205ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13070ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 12938ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13080ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 12982ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 12915ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13080ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 12964ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13017ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 13153ms - -HEAD /api/health 200 in 1ms - -HEAD /api/health 200 in 1ms - -HEAD /api/health 200 in 0ms - -HEAD /api/health 200 in 1ms - -HEAD /api/health 200 in 0ms - - - - \ No newline at end of file diff --git a/attached_assets/Pasted--Deliveries-returned-195-items-GET-api-deliveries-200-in-600ms-Deliveries-API-called-wi-1762201414763_1762201414763.txt b/attached_assets/Pasted--Deliveries-returned-195-items-GET-api-deliveries-200-in-600ms-Deliveries-API-called-wi-1762201414763_1762201414763.txt deleted file mode 100644 index 4b3d12f..0000000 --- a/attached_assets/Pasted--Deliveries-returned-195-items-GET-api-deliveries-200-in-600ms-Deliveries-API-called-wi-1762201414763_1762201414763.txt +++ /dev/null @@ -1,200 +0,0 @@ - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 600ms - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -🔍 Admin deliveries filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all deliveries - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -🔍 Admin deliveries filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all deliveries - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -🔍 Admin deliveries filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all deliveries - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -🔍 Admin deliveries filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all deliveries - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -🔍 Admin deliveries filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all deliveries - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -🔍 Admin deliveries filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all deliveries - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -🔍 Admin deliveries filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all deliveries - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -🔍 Admin deliveries filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all deliveries - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 1219ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 1173ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 304 in 1528ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 1516ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 1519ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 1546ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 1585ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 1541ms - -HEAD /api/health 200 in 0ms - -HEAD /api/health 200 in 0ms \ No newline at end of file diff --git a/attached_assets/Pasted--Environment-NODE-ENV-production-DATABASE-URL-Present-PORT-3000-Re-1755164310896_1755164310896.txt b/attached_assets/Pasted--Environment-NODE-ENV-production-DATABASE-URL-Present-PORT-3000-Re-1755164310896_1755164310896.txt deleted file mode 100644 index 164eed9..0000000 --- a/attached_assets/Pasted--Environment-NODE-ENV-production-DATABASE-URL-Present-PORT-3000-Re-1755164310896_1755164310896.txt +++ /dev/null @@ -1,195 +0,0 @@ - - -🐳 Environment: { NODE_ENV: 'production', DATABASE_URL: 'Present', PORT: '3000' } - -🔧 Registering all production routes... - -🔄 Running automatic production migrations... - -🔄 MIGRATION: Starting SAV production migrations... - -🔄 MIGRATION: Database URL configured: postgresql://logiflow_admin:Lo... - -🔄 MIGRATION: Checking if priority column exists... - -❌ MIGRATION ERROR: Failed to run SAV production migrations: NeonDbError: Error connecting to database: fetch failed - - at execute (file:///app/node_modules/@neondatabase/serverless/index.mjs:1549:24) - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async runProductionMigrations (file:///app/dist/index.js:3263:33) - - at async registerProductionRoutes (file:///app/dist/index.js:6321:3) - - at async file:///app/dist/index.js:6369:1 { - - severity: undefined, - - code: undefined, - - detail: undefined, - - hint: undefined, - - position: undefined, - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: undefined, - - line: undefined, - - routine: undefined, - - sourceError: TypeError: fetch failed - - at node:internal/deps/undici/undici:13510:13 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async execute (file:///app/node_modules/@neondatabase/serverless/index.mjs:1548:15) - - at async runProductionMigrations (file:///app/dist/index.js:3263:33) - - at async registerProductionRoutes (file:///app/dist/index.js:6321:3) - - at async file:///app/dist/index.js:6369:1 { - - [cause]: Error: connect ECONNREFUSED 172.20.0.10:443 - - at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1611:16) { - - errno: -111, - - code: 'ECONNREFUSED', - - syscall: 'connect', - - address: '172.20.0.10', - - port: 443 - - } - - } - -} - -❌ MIGRATION ERROR: Error details: { - - message: 'Error connecting to database: fetch failed', - - code: undefined, - - stack: 'NeonDbError: Error connecting to database: fetch failed\n' + - - ' at execute (file:///app/node_modules/@neondatabase/serverless/index.mjs:1549:24)\n' + - - ' at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n' + - - ' at async runProductionMigrations (file:///app/dist/index.js:3263:33)\n' + - - ' at async registerProductionRoutes (file:///app/dist/index.js:6321:3)\n' + - - ' at async file:///app/dist/index.js:6369:1' - -} - -node:internal/modules/run_main:123 - - triggerUncaughtException( - - ^ - -NeonDbError: Error connecting to database: fetch failed - - at execute (file:///app/node_modules/@neondatabase/serverless/index.mjs:1549:24) - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async runProductionMigrations (file:///app/dist/index.js:3263:33) - - at async registerProductionRoutes (file:///app/dist/index.js:6321:3) - - at async file:///app/dist/index.js:6369:1 { - - severity: undefined, - - code: undefined, - - detail: undefined, - - hint: undefined, - - position: undefined, - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: undefined, - - line: undefined, - - routine: undefined, - - sourceError: TypeError: fetch failed - - at node:internal/deps/undici/undici:13510:13 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async execute (file:///app/node_modules/@neondatabase/serverless/index.mjs:1548:15) - - at async runProductionMigrations (file:///app/dist/index.js:3263:33) - - at async registerProductionRoutes (file:///app/dist/index.js:6321:3) - - at async file:///app/dist/index.js:6369:1 { - - [cause]: Error: connect ECONNREFUSED 172.20.0.10:443 - - at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1611:16) { - - errno: -111, - - code: 'ECONNREFUSED', - - syscall: 'connect', - - address: '172.20.0.10', - - port: 443 - - } - - } - -} \ No newline at end of file diff --git a/attached_assets/Pasted--Events-Host-Administration-User-related-Environment-related-Registries-Logs--1755341367149_1755341367149.txt b/attached_assets/Pasted--Events-Host-Administration-User-related-Environment-related-Registries-Logs--1755341367149_1755341367149.txt deleted file mode 100644 index 4c70365..0000000 --- a/attached_assets/Pasted--Events-Host-Administration-User-related-Environment-related-Registries-Logs--1755341367149_1755341367149.txt +++ /dev/null @@ -1,243 +0,0 @@ - -Events - -Host - -Administration - -User-related - - -Environment-related - -Registries - -Logs - -Notifications - -Settings - -New version available 2.27.9 -DismissSee what's new -Community Edition -2.27.6 LTS -Containers>logiflow-logiflow-1>Logs -Container logs - - -admin -Log viewer settings -Auto-refresh logs -Wrap lines -Display timestamps -Fetch -All logs -Search -Filter... -Lines -100 -Actions - - - - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '1392', - - routine: 'parserOpenTable' - -} - -GET /api/announcements 500 in 294ms - -🔗 PRODUCTION: getOrders() récupéré 51 commandes avec relations - -Orders returned: 51 items - -GET /api/orders 200 in 358ms - -GET /api/dlc-products/stats 200 in 360ms - -🔗 PRODUCTION: getDeliveries() récupéré 86 livraisons avec relations - -Deliveries returned: 86 items - -GET /api/deliveries 200 in 388ms - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - userRole: 'admin' - -} - -Admin filtering with groupIds: [ 1 ] - -Fetching all orders - -Customer Orders API called with: { groupIds: undefined, userRole: 'admin' } - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: [ 1 ] - -Fetching all deliveries - -GET /api/publicities 200 in 431ms - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -Customer Orders returned: 38 items - -GET /api/customer-orders 200 in 472ms - -🔗 PRODUCTION: getOrders() récupéré 33 commandes avec relations - -Orders returned: 33 items - -GET /api/orders 200 in 199ms - -🔗 PRODUCTION: getDeliveries() récupéré 48 livraisons avec relations - -Deliveries returned: 48 items - -Customer Orders returned: 10 items - -GET /api/deliveries 200 in 217ms - -GET /api/customer-orders 200 in 203ms - -GET /api/publicities 200 in 58ms - -Error fetching announcements: error: relation "announcements" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getAnnouncements (file:///app/dist/index.js:2074:25) - - at async file:///app/dist/index.js:7420:30 { - - length: 113, - - severity: 'ERROR', - - code: '42P01', - - detail: undefined, - - hint: undefined, - - position: '829', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '1392', - - routine: 'parserOpenTable' - -} - -GET /api/announcements 500 in 10ms - -Error fetching announcements: error: relation "announcements" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getAnnouncements (file:///app/dist/index.js:2074:25) - - at async file:///app/dist/index.js:7420:30 { - - length: 113, - - severity: 'ERROR', - - code: '42P01', - - detail: undefined, - - hint: undefined, - - position: '829', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '1392', - - routine: 'parserOpenTable' - -} - -GET /api/announcements 500 in 14ms - -HEAD /api/health 200 in 0ms \ No newline at end of file diff --git a/attached_assets/Pasted--GET-api-deliveries-200-in-16975ms-PRODUCTION-getDeliveries-r-cup-r-195-l-1762235515403_1762235515403.txt b/attached_assets/Pasted--GET-api-deliveries-200-in-16975ms-PRODUCTION-getDeliveries-r-cup-r-195-l-1762235515403_1762235515403.txt deleted file mode 100644 index 6f32bd9..0000000 --- a/attached_assets/Pasted--GET-api-deliveries-200-in-16975ms-PRODUCTION-getDeliveries-r-cup-r-195-l-1762235515403_1762235515403.txt +++ /dev/null @@ -1,206 +0,0 @@ - - - - -GET /api/deliveries 200 in 16975ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 17283ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 17249ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 17353ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 17284ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 17188ms - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 17045ms - -🔗 PRODUCTION: getOrder #256 found 1 associated deliveries - -✅ PRODUCTION: getDelivery #427 found associated order #256 with status: delivered - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -🔄 Updating delivery: { - - id: 427, - - - -{ - - blNumber: '197771', - - blAmount: '695.66', - - invoiceReference: null, - - invoiceAmount: null - - }, - - user: 'admin_local' - -} - -GET /api/deliveries 200 in 17076ms - -✅ Delivery updated successfully: { - - id: 427, - - updatedDelivery: { - - id: 427, - - orderId: 256, - - supplierId: 7, - - groupId: 1, - - scheduledDate: '2025-10-31', - - deliveredDate: 2025-10-31T08:32:15.684Z, - - quantity: 1, - - unit: 'palettes', - - status: 'delivered', - - notes: null, - - blNumber: '197771', - - blAmount: '695.66', - - invoiceReference: null, - - invoiceAmount: null, - - dueDate: null, - - reconciled: false, - - validatedAt: null, - - controlValidated: false, - - controlValidatedBy: null, - - controlValidatedAt: null, - - createdBy: '_1754943032954', - - createdAt: 2025-10-30T08:47:43.018Z, - - updatedAt: 2025-11-04T05:51:30.924Z - - } - -} - -PUT /api/deliveries/427 200 in 17189ms - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -🔍 Admin deliveries filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all deliveries - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 200 in 158ms - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -🔍 Admin deliveries filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all deliveries - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 304 in 147ms - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -🔍 Admin deliveries filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all deliveries - -🔗 PRODUCTION: getDeliveries() récupéré 195 livraisons avec relations - -Deliveries returned: 195 items - -GET /api/deliveries 304 in 139ms - -HEAD /api/health 200 in 1ms - diff --git a/attached_assets/Pasted--GET-api-user-304-in-102ms-Customer-Orders-API-called-with-groupIds-undefined-user-1755166953546_1755166953546.txt b/attached_assets/Pasted--GET-api-user-304-in-102ms-Customer-Orders-API-called-with-groupIds-undefined-user-1755166953546_1755166953546.txt deleted file mode 100644 index fa4ebc6..0000000 --- a/attached_assets/Pasted--GET-api-user-304-in-102ms-Customer-Orders-API-called-with-groupIds-undefined-user-1755166953546_1755166953546.txt +++ /dev/null @@ -1,199 +0,0 @@ - - -GET /api/user 304 in 102ms - -Customer Orders API called with: { groupIds: undefined, userRole: 'admin' } - -📊 Calcul statistiques mensuelles: { - - year: 2025, - - month: 8, - - startDate: '2025-08-01', - - endDate: '2025-09-01', - - groupIds: undefined - -} - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: undefined - -Fetching all deliveries - -Tasks API called with: { groupIds: undefined, userRole: 'admin' } - -🔗 PRODUCTION: getOrders() récupéré 49 commandes avec relations - -Orders returned: 49 items - -GET /api/dlc-products/stats 304 in 181ms - -GET /api/orders 200 in 188ms - -Customer Orders returned: 34 items - -GET /api/customer-orders 200 in 192ms - -GET /api/publicities 304 in 188ms - -📊 Statistiques calculées: { - - ordersCount: 18, - - deliveriesCount: 42, - - pendingOrdersCount: 5, - - averageDeliveryTime: 0.3611111111111111, - - totalPalettes: 120, - - totalPackages: 36 - -} - -Tasks returned: 61 items - -GET /api/stats/monthly 200 in 229ms - -GET /api/tasks 304 in 221ms - -GET /api/user 304 in 28ms - -🔗 PRODUCTION: getDeliveries() récupéré 82 livraisons avec relations - -Deliveries returned: 82 items - -GET /api/deliveries 200 in 282ms - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '2', - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: [ 2 ] - -Fetching all deliveries - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '2', - - userRole: 'admin' - -} - -Admin filtering with groupIds: [ 2 ] - -Fetching all orders - -Customer Orders API called with: { groupIds: [ 2 ], userRole: 'admin' } - -🔗 PRODUCTION: getDeliveries() récupéré 38 livraisons avec relations - -Deliveries returned: 38 items - -GET /api/deliveries 304 in 67ms - -Customer Orders returned: 25 items - -GET /api/customer-orders 200 in 63ms - -🔗 PRODUCTION: getOrders() récupéré 18 commandes avec relations - -Orders returned: 18 items - -GET /api/orders 304 in 63ms - -GET /api/groups 304 in 6ms - -GET /api/publicities 304 in 17ms - -GET /api/user 304 in 6ms - -GET /api/suppliers 304 in 12ms - -GET /api/sav/stats 304 in 21ms - -GET /api/sav/tickets 304 in 26ms - -HEAD /api/health 200 in 1ms - -POST /api/sav/tickets 500 in 17ms - -Error creating SAV ticket: error: new row for relation "sav_ticket_history" violates check constraint "chk_sav_history_action" - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.addSavTicketHistory (file:///app/dist/index.js:2040:27) - - at async DatabaseStorage.createSavTicket (file:///app/dist/index.js:2013:9) - - at async file:///app/dist/index.js:6154:22 { - - length: 336, - - severity: 'ERROR', - - code: '23514', - - detail: 'Failing row contains (32, 11, ticket_created, Ticket créé avec le statut "nouveau", admin_local, 2025-08-14 10:22:10.723558).', - - hint: undefined, - - position: undefined, - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: 'public', - - table: 'sav_ticket_history', - - column: undefined, - - dataType: undefined, - - constraint: 'chk_sav_history_action', - - file: 'execMain.c', - - line: '2023', - - routine: 'ExecConstraints' \ No newline at end of file diff --git a/attached_assets/Pasted--GET-api-user-304-in-11ms-DatabaseStorage-getTasks-Raw-results-result-1756808714183_1756808714183.txt b/attached_assets/Pasted--GET-api-user-304-in-11ms-DatabaseStorage-getTasks-Raw-results-result-1756808714183_1756808714183.txt deleted file mode 100644 index 9ce1b1a..0000000 --- a/attached_assets/Pasted--GET-api-user-304-in-11ms-DatabaseStorage-getTasks-Raw-results-result-1756808714183_1756808714183.txt +++ /dev/null @@ -1,199 +0,0 @@ - - -} - -GET /api/user 304 in 11ms - -📋 DatabaseStorage.getTasks - Raw results: { - - resultCount: 57, - - userRole: 'manager', - - sampleTasks: [ - - { - - taskExists: true, - - taskId: 104, - - title: 'Helios backup 4G', - - startDate: null, - - groupExists: true - - }, - - { - - taskExists: true, - - taskId: 103, - - title: 'ARSENAL', - - startDate: null, - - groupExists: true - - } - - ] - -} - -📋 Tasks returned: { - - count: 57, - - userId: '_1754943032954', - - userRole: 'manager', - - requestedStoreId: '1', - - groupIds: [ 1 ], - - taskGroups: [ - - { id: 104, title: 'Helios backup 4G', groupId: 1 }, - - { id: 103, title: 'ARSENAL', groupId: 1 }, - - { id: 102, title: 'Appeler Tandem', groupId: 1 } - - ] - -} - -GET /api/tasks 304 in 17ms - -GET /api/users 304 in 16ms - -GET /api/groups 304 in 5ms - -📄 SPA: Serving index.html for /tasks - -GET /api/user 304 in 4ms - -🗓️ [DATE-CALC] Aujourd'hui: 2025-09-02 (Mardi) - -🗓️ [DATE-CALC] Année précédente: 2024-09-03 (Mardi) - -GET /api/user 304 in 5ms - -🌤️ [RESPONSE] Weather data prepared: { - - hasCurrentYear: true, - - hasPreviousYear: true, - - location: 'Frouard, France' - -} - -GET /api/weather/current 304 in 5ms - -GET /api/user 304 in 4ms - -GET /api/user 304 in 9ms - -🔍 Non-admin user requesting specific accessible store: { - - userId: '_1754943032954', - - role: 'manager', - - requestedStoreId: 1, - - hasAccess: true - -} - -🔍 Tasks API called with: { - - groupIds: [ 1 ], - - userRole: 'manager', - - userId: '_1754943032954', - - requestedStoreId: '1', - - userGroups: [ 1 ], - - timestamp: '2025-09-02T10:24:35.961Z' - -} - -📋 DatabaseStorage.getTasks - Raw results: { - - resultCount: 57, - - userRole: 'manager', - - sampleTasks: [ - - { - - taskExists: true, - - taskId: 104, - - title: 'Helios backup 4G', - - startDate: null, - - groupExists: true - - }, - - { - - taskExists: true, - - taskId: 103, - - title: 'ARSENAL', - - startDate: null, - - groupExists: true - - } - - ] - -} - -📋 Tasks returned: { - - count: 57, - - userId: '_1754943032954', - - userRole: 'manager', - - requestedStoreId: '1', - - groupIds: [ 1 ], - - taskGroups: [ - - { id: 104, title: 'Helios backup 4G', groupId: 1 }, - - { id: 103, title: 'ARSENAL', groupId: 1 }, - - { id: 102, title: 'Appeler Tandem', groupId: 1 } - - ] - -} - -GET /api/tasks 304 in 21ms - -GET /api/users 304 in 23ms - -GET /api/groups 304 in 5ms \ No newline at end of file diff --git a/attached_assets/Pasted--Host-Administration-User-related-Environment-related-Registries-Logs-Notific-1755118963207_1755118963207.txt b/attached_assets/Pasted--Host-Administration-User-related-Environment-related-Registries-Logs-Notific-1755118963207_1755118963207.txt deleted file mode 100644 index d523f54..0000000 --- a/attached_assets/Pasted--Host-Administration-User-related-Environment-related-Registries-Logs-Notific-1755118963207_1755118963207.txt +++ /dev/null @@ -1,228 +0,0 @@ - - -Host - -Administration - -User-related - - -Environment-related - -Registries - -Logs - -Notifications - -Settings - -New version available 2.27.9 -DismissSee what's new -Community Edition -2.27.6 LTS -Containers>logiflow-logiflow-1>Logs -Container logs - - -admin -Log viewer settings -Auto-refresh logs -Wrap lines -Display timestamps -Fetch -All logs -Search -Filter... -Lines -100 -Actions - - - - - path: '/app/backups' - -} - -Node.js v20.19.4 - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db' - -} - -🐳 PRODUCTION: Using standard PostgreSQL - -✅ PostgreSQL connection test successful - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db:5432' - -} - -✅ Using DatabaseStorage (production PostgreSQL) - - node:fs:1372 - - const result = binding.mkdir( - - ^ - -Error: EACCES: permission denied, mkdir '/app/backups' - - at Object.mkdirSync (node:fs:1372:26) - - at BackupService.ensureBackupDirectory (file:///app/dist/index.js:3147:10) - - at new BackupService (file:///app/dist/index.js:3142:10) - - at file:///app/dist/index.js:3283:21 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { - - errno: -13, - - code: 'EACCES', - - syscall: 'mkdir', - - path: '/app/backups' - -} - -Node.js v20.19.4 - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db' - -} - -🐳 PRODUCTION: Using standard PostgreSQL - -✅ PostgreSQL connection test successful - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db:5432' - -} - -✅ Using DatabaseStorage (production PostgreSQL) - - node:fs:1372 - - const result = binding.mkdir( - - ^ - -Error: EACCES: permission denied, mkdir '/app/backups' - - at Object.mkdirSync (node:fs:1372:26) - - at BackupService.ensureBackupDirectory (file:///app/dist/index.js:3147:10) - - at new BackupService (file:///app/dist/index.js:3142:10) - - at file:///app/dist/index.js:3283:21 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { - - errno: -13, - - code: 'EACCES', - - syscall: 'mkdir', - - path: '/app/backups' - -} - -Node.js v20.19.4 - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db' - -} - -🐳 PRODUCTION: Using standard PostgreSQL - -✅ PostgreSQL connection test successful - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db:5432' - -} - -✅ Using DatabaseStorage (production PostgreSQL) - - node:fs:1372 - - const result = binding.mkdir( - - ^ - -Error: EACCES: permission denied, mkdir '/app/backups' - - at Object.mkdirSync (node:fs:1372:26) - - at BackupService.ensureBackupDirectory (file:///app/dist/index.js:3147:10) - - at new BackupService (file:///app/dist/index.js:3142:10) - - at file:///app/dist/index.js:3283:21 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { - - errno: -13, - - code: 'EACCES', - - syscall: 'mkdir', - - path: '/app/backups' - -} - -Node.js v20.19.4 \ No newline at end of file diff --git a/attached_assets/Pasted--Host-Administration-User-related-Environment-related-Registries-Logs-Notific-1755342677754_1755342677754.txt b/attached_assets/Pasted--Host-Administration-User-related-Environment-related-Registries-Logs-Notific-1755342677754_1755342677754.txt deleted file mode 100644 index 3f7bd5a..0000000 --- a/attached_assets/Pasted--Host-Administration-User-related-Environment-related-Registries-Logs-Notific-1755342677754_1755342677754.txt +++ /dev/null @@ -1,242 +0,0 @@ - - -Host - -Administration - -User-related - - -Environment-related - -Registries - -Logs - -Notifications - -Settings - -New version available 2.27.9 -DismissSee what's new -Community Edition -2.27.6 LTS -Containers>logiflow-logiflow-1>Logs -Container logs - - -admin -Log viewer settings -Auto-refresh logs -Wrap lines -Display timestamps -Fetch -All logs -Search -Filter... -Lines -100 -Actions - - - - -} - -GET /api/user 200 in 213ms - -GET /api/deliveries 200 in 285ms - -Customer Orders returned: 38 items - -🔗 PRODUCTION: getOrders() récupéré 51 commandes avec relations - -Orders returned: 51 items - -GET /api/customer-orders 200 in 287ms - -GET /api/orders 200 in 302ms - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - userRole: 'admin' - -} - -Admin filtering with groupIds: [ 1 ] - -Fetching all orders - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: [ 1 ] - -Fetching all deliveries - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -📋 Tasks returned: { - - count: 55, - - userId: 'admin_local', - - userRole: 'admin', - - requestedStoreId: undefined, - - groupIds: undefined, - - taskGroups: [ - - { id: 91, title: 'refaire podium lot assiettes', groupId: 2 }, - - { id: 90, title: 'caisse 1', groupId: 1 }, - - { id: 89, title: 'caisse 3', groupId: 1 } - - ] - -} - -GET /api/groups 200 in 169ms - -GET /api/tasks 200 in 277ms - -🔗 PRODUCTION: getDeliveries() récupéré 48 livraisons avec relations - -Deliveries returned: 48 items - -GET /api/deliveries 200 in 215ms - -Customer Orders returned: 10 items - -GET /api/customer-orders 200 in 214ms - -🔗 PRODUCTION: getOrders() récupéré 33 commandes avec relations - -Orders returned: 33 items - -GET /api/orders 200 in 243ms - -GET /api/publicities 200 in 121ms - -Error fetching announcements: error: relation "announcements" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getAnnouncements (file:///app/dist/index.js:2074:25) - - at async file:///app/dist/index.js:7420:30 { - - length: 113, - - severity: 'ERROR', - - code: '42P01', - - detail: undefined, - - hint: undefined, - - position: '829', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '1392', - - routine: 'parserOpenTable' - -} - -GET /api/announcements 500 in 13ms - -HEAD /api/health 200 in 2ms - -Error fetching announcements: error: relation "announcements" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getAnnouncements (file:///app/dist/index.js:2074:25) - - at async file:///app/dist/index.js:7420:30 { - - length: 113, - - severity: 'ERROR', - - code: '42P01', - - detail: undefined, - - hint: undefined, - - position: '829', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '1392', - - routine: 'parserOpenTable' - -} - -GET /api/announcements 500 in 11ms \ No newline at end of file diff --git a/attached_assets/Pasted--Host-Administration-User-related-Environment-related-Registries-Logs-Notific-1755343227335_1755343227335.txt b/attached_assets/Pasted--Host-Administration-User-related-Environment-related-Registries-Logs-Notific-1755343227335_1755343227335.txt deleted file mode 100644 index af3deaa..0000000 --- a/attached_assets/Pasted--Host-Administration-User-related-Environment-related-Registries-Logs-Notific-1755343227335_1755343227335.txt +++ /dev/null @@ -1,242 +0,0 @@ - - -Host - -Administration - -User-related - - -Environment-related - -Registries - -Logs - -Notifications - -Settings - -New version available 2.27.9 -DismissSee what's new -Community Edition -2.27.6 LTS -Containers>logiflow-logiflow-1>Logs -Container logs - - -admin -Log viewer settings -Auto-refresh logs -Wrap lines -Display timestamps -Fetch -All logs -Search -Filter... -Lines -100 -Actions - - - - -GET /api/customer-orders 200 in 830ms - -GET /api/publicities 200 in 825ms - -GET /api/tasks 200 in 814ms - -🌤️ [RESPONSE] Weather data prepared: { - - hasCurrentYear: true, - - hasPreviousYear: true, - - location: 'Frouard, France' - -} - -GET /api/weather/current 200 in 883ms - -GET /api/dlc-products/stats 200 in 843ms - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - userRole: 'admin' - -} - -Admin filtering with groupIds: [ 1 ] - -Fetching all orders - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: [ 1 ] - -Fetching all deliveries - -GET /api/groups 200 in 464ms - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -📊 Statistiques calculées: { - - ordersCount: 20, - - deliveriesCount: 42, - - pendingOrdersCount: 8, - - averageDeliveryTime: 0.3611111111111111, - - totalPalettes: 120, - - totalPackages: 36 - -} - -GET /api/stats/monthly 200 in 937ms - -🔗 PRODUCTION: getDeliveries() récupéré 86 livraisons avec relations - -Deliveries returned: 86 items - -GET /api/deliveries 200 in 1014ms - -🔗 PRODUCTION: getOrders() récupéré 33 commandes avec relations - -Orders returned: 33 items - -GET /api/orders 200 in 557ms - -Customer Orders returned: 10 items - -GET /api/customer-orders 200 in 197ms - -🔗 PRODUCTION: getDeliveries() récupéré 48 livraisons avec relations - -Deliveries returned: 48 items - -GET /api/deliveries 200 in 237ms - -GET /api/publicities 200 in 206ms - -Error fetching announcements: error: relation "announcements" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getAnnouncements (file:///app/dist/index.js:2074:25) - - at async file:///app/dist/index.js:7420:30 { - - length: 113, - - severity: 'ERROR', - - code: '42P01', - - detail: undefined, - - hint: undefined, - - position: '829', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '1392', - - routine: 'parserOpenTable' - -} - -GET /api/announcements 500 in 7ms - -Error fetching announcements: error: relation "announcements" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getAnnouncements (file:///app/dist/index.js:2074:25) - - at async file:///app/dist/index.js:7420:30 { - - length: 113, - - severity: 'ERROR', - - code: '42P01', - - detail: undefined, - - hint: undefined, - - position: '829', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '1392', - - routine: 'parserOpenTable' - -} - -GET /api/announcements 500 in 20ms \ No newline at end of file diff --git a/attached_assets/Pasted--Host-Administration-User-related-Environment-related-Registries-Logs-Notific-1756807234263_1756807234264.txt b/attached_assets/Pasted--Host-Administration-User-related-Environment-related-Registries-Logs-Notific-1756807234263_1756807234264.txt deleted file mode 100644 index 8c8acf4..0000000 --- a/attached_assets/Pasted--Host-Administration-User-related-Environment-related-Registries-Logs-Notific-1756807234263_1756807234264.txt +++ /dev/null @@ -1,242 +0,0 @@ - - -Host - -Administration - -User-related - - -Environment-related - -Registries - -Logs - -Notifications - -Settings - -New version available 2.33.1 -DismissSee what's new -Community Edition -2.27.6 LTS -Containers>logiflow-logiflow-1>Logs -Container logs - - -admin -Log viewer settings -Auto-refresh logs -Wrap lines -Display timestamps -Fetch -All logs -Search -Filter... -Lines -100 -Actions - - - - -📋 API PUBLICITIES REQUEST: { - - year: '2025', - - filterYear: 2025, - - storeId: undefined, - - userRole: 'admin' - -} - -📋 CALLING storage.getPublicities: { filterYear: 2025, groupIds: undefined } - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '2', - - userRole: 'admin' - -} - -🔍 Admin/Directeur orders filtering by store: { storeId: '2', groupIds: [ 2 ], role: 'admin' } - -Fetching all orders - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '2', - - withBL: undefined, - - userRole: 'admin' - -} - -🔍 Admin/Directeur deliveries filtering by store: { storeId: '2', groupIds: [ 2 ], role: 'admin' } - -Fetching all deliveries - -📋 PUBLICITES FETCHED: 29 résultats pour année 2025 - -🔍 PREMIERS RESULTATS: [ - - '1. N°2501 - Blanc', - - '2. N°2502 - Moins de 1€ 2€ 3€ 4€ 5€', - - '3. N°2503 - Imbattables' - -] - -Customer Orders returned: 42 items - -GET /api/customer-orders 304 in 119ms - -❌ PRODUCTION: Delivery #127 (store 2) linked to order #81 (store 1) - STORE MISMATCH DETECTED! - -📋 PUBLICITIES RETURNED: { count: 29 } - -🔗 PRODUCTION: getDeliveries() récupéré 59 livraisons avec relations - -Deliveries returned: 59 items - -GET /api/publicities 304 in 138ms - -GET /api/deliveries 304 in 163ms - -🔗 PRODUCTION: getOrders() récupéré 27 commandes avec relations - -Orders returned: 27 items - -GET /api/orders 304 in 197ms - -GET /api/groups 304 in 46ms - -GET /api/user 304 in 4ms - -GET /api/users 304 in 14ms - -HEAD /api/health 200 in 1ms - -📝 POST /api/tasks - Received data: { - - originalBody: { - - title: 'teszt', - - description: 'test', - - priority: 'medium', - - status: 'pending', - - assignedTo: 'Non assigné', - - startDate: '2025-09-02', - - dueDate: '2025-09-07', - - groupId: 2, - - createdBy: 'admin' - - }, - - processedData: { - - title: 'teszt', - - description: 'test', - - priority: 'medium', - - status: 'pending', - - assignedTo: 'Non assigné', - - startDate: '2025-09-02', - - dueDate: '2025-09-07', - - groupId: 2, - - createdBy: 'admin_local' - - }, - - dueDate: '2025-09-07', - - dueDateType: 'string', - - dueDateValue: '2025-09-07' - -} - -💾 DatabaseStorage.createTask - Input: { - - taskData: { - - title: 'teszt', - - description: 'test', - - priority: 'medium', - - status: 'pending', - - assignedTo: 'Non assigné', - - startDate: '2025-09-02', - - dueDate: '2025-09-07', - - groupId: 2, - - createdBy: 'admin_local' - - }, - - dueDate: '2025-09-07', - - dueDateType: 'string', - - dueDateISO: '2025-09-07' - -} - -Error creating task: TypeError: value.toISOString is not a function - - at PgTimestamp.mapToDriverValue (file:///app/node_modules/drizzle-orm/pg-core/columns/timestamp.js:34:18) - - at file:///app/node_modules/drizzle-orm/sql/sql.js:131:73 - - at Array.map () - - at SQL.buildQueryFromSourceParams (file:///app/node_modules/drizzle-orm/sql/sql.js:73:32) - - at file:///app/node_modules/drizzle-orm/sql/sql.js:92:21 - - at Array.map () - - at SQL.buildQueryFromSourceParams (file:///app/node_modules/drizzle-orm/sql/sql.js:73:32) - - at file:///app/node_modules/drizzle-orm/sql/sql.js:95:21 - - at Array.map () - - at SQL.buildQueryFromSourceParams (file:///app/node_modules/drizzle-orm/sql/sql.js:73:32) - -POST /api/tasks 500 in 9ms \ No newline at end of file diff --git a/attached_assets/Pasted--NODE-ENV-production-isProduction-true-hasDbUrl-true-dbHost-logifl-1756759521021_1756759521023.txt b/attached_assets/Pasted--NODE-ENV-production-isProduction-true-hasDbUrl-true-dbHost-logifl-1756759521021_1756759521023.txt deleted file mode 100644 index 931256d..0000000 --- a/attached_assets/Pasted--NODE-ENV-production-isProduction-true-hasDbUrl-true-dbHost-logifl-1756759521021_1756759521023.txt +++ /dev/null @@ -1,194 +0,0 @@ - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db' - -} - -🐳 PRODUCTION: Using standard PostgreSQL - -✅ PostgreSQL connection test successful - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db:5432' - -} - -✅ Using DatabaseStorage (production PostgreSQL) - -file:///app/dist/index.js:11 - - throw Error('Dynamic require of "' + x + '" is not supported'); - - - -^ - -Error: Dynamic require of "events" is not supported - - at file:///app/dist/index.js:11:9 - - at node_modules/node-cron/dist/esm/tasks/inline-scheduled-task.js (file:///app/dist/index.js:5840:36) - - at __require2 (file:///app/dist/index.js:17:50) - - at node_modules/node-cron/dist/esm/node-cron.js (file:///app/dist/index.js:6321:35) - - at __require2 (file:///app/dist/index.js:17:50) - - at file:///app/dist/index.js:7062:32 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - -Node.js v20.19.4 - -Applying DLC migration... - -NOTICE: column "stock_epuise" of relation "dlc_products" already exists, skipping - -NOTICE: column "stock_epuise_by" of relation "dlc_products" already exists, skipping - -NOTICE: column "stock_epuise_at" of relation "dlc_products" already exists, skipping - -NOTICE: relation "idx_dlc_products_stock_epuise" already exists, skipping - -ALTER TABLE - - CREATE INDEX - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db' - -} - -🐳 PRODUCTION: Using standard PostgreSQL - -✅ PostgreSQL connection test successful - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db:5432' - -} - -✅ Using DatabaseStorage (production PostgreSQL) - -file:///app/dist/index.js:11 - - throw Error('Dynamic require of "' + x + '" is not supported'); - - - -^ - -Error: Dynamic require of "events" is not supported - - at file:///app/dist/index.js:11:9 - - at node_modules/node-cron/dist/esm/tasks/inline-scheduled-task.js (file:///app/dist/index.js:5840:36) - - at __require2 (file:///app/dist/index.js:17:50) - - at node_modules/node-cron/dist/esm/node-cron.js (file:///app/dist/index.js:6321:35) - - at __require2 (file:///app/dist/index.js:17:50) - - at file:///app/dist/index.js:7062:32 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - -Node.js v20.19.4 - -Applying DLC migration... - -NOTICE: column "stock_epuise" of relation "dlc_products" already exists, skipping - -NOTICE: column "stock_epuise_by" of relation "dlc_products" already exists, skipping - -NOTICE: column "stock_epuise_at" of relation "dlc_products" already exists, skipping - -NOTICE: relation "idx_dlc_products_stock_epuise" already exists, skipping - -ALTER TABLE - - CREATE INDEX - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db' - -} - -🐳 PRODUCTION: Using standard PostgreSQL - -✅ PostgreSQL connection test successful - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db:5432' - -} - -✅ Using DatabaseStorage (production PostgreSQL) - -file:///app/dist/index.js:11 - - throw Error('Dynamic require of "' + x + '" is not supported'); - - - -^ - -Error: Dynamic require of "events" is not supported - - at file:///app/dist/index.js:11:9 - - at node_modules/node-cron/dist/esm/tasks/inline-scheduled-task.js (file:///app/dist/index.js:5840:36) - - at __require2 (file:///app/dist/index.js:17:50) - - at node_modules/node-cron/dist/esm/node-cron.js (file:///app/dist/index.js:6321:35) - - at __require2 (file:///app/dist/index.js:17:50) - - at file:///app/dist/index.js:7062:32 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - -Node.js v20.19.4 \ No newline at end of file diff --git a/attached_assets/Pasted--PREMIERS-RESULTATS-1-N-2501-Blanc-2-N-2502-Moins-de-1-2--1757358448951_1757358448951.txt b/attached_assets/Pasted--PREMIERS-RESULTATS-1-N-2501-Blanc-2-N-2502-Moins-de-1-2--1757358448951_1757358448951.txt deleted file mode 100644 index 2a27935..0000000 --- a/attached_assets/Pasted--PREMIERS-RESULTATS-1-N-2501-Blanc-2-N-2502-Moins-de-1-2--1757358448951_1757358448951.txt +++ /dev/null @@ -1,203 +0,0 @@ - - - - -🔍 PREMIERS RESULTATS: [ - - '1. N°2501 - Blanc', - - '2. N°2502 - Moins de 1€ 2€ 3€ 4€ 5€', - - '3. N°2503 - Imbattables' - -] - -📢 [SERVER] User found: { username: 'admin', role: 'admin' } - -🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table - -GET /api/user 304 in 89ms - -📋 PUBLICITIES RETURNED: { count: 29 } - -GET /api/publicities 304 in 71ms - -🔍 [PRODUCTION] Raw messages from DB: 2 items: [ - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -🔍 [PRODUCTION] User search result: Found - -❌ [PRODUCTION] User not found with username: admin_local - -🔍 [PRODUCTION] User search result: Not found - -🎯 [PRODUCTION] Found announcements: 2 - -GET /api/announcements 304 in 80ms - -GET /api/user 304 in 7ms - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - userRole: 'admin' - -} - -🔍 Admin orders filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all orders - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -🔍 Admin deliveries filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all deliveries - -📢 [SERVER] Fetching announcements for user: admin_local environment: production - -🔗 PRODUCTION: getOrders() récupéré 64 commandes avec relations - -Orders returned: 64 items - -GET /api/orders 304 in 115ms - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -📢 [SERVER] User found: { username: 'admin', role: 'admin' } - -🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table - -🔍 [PRODUCTION] Raw messages from DB: 2 items: [ - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -Customer Orders returned: 11 items - -GET /api/customer-orders 304 in 147ms - -GET /api/groups 304 in 125ms - -🔍 [PRODUCTION] User search result: Found - -GET /api/user 304 in 28ms - -🔍 [PRODUCTION] User search result: Not found - -❌ [PRODUCTION] User not found with username: admin_local - -🎯 [PRODUCTION] Found announcements: 2 - -🔗 PRODUCTION: getDeliveries() récupéré 82 livraisons avec relations - -Deliveries returned: 82 items - -GET /api/announcements 304 in 199ms - -GET /api/deliveries 304 in 202ms - -GET /api/suppliers 304 in 5ms - -🔍 Avoirs API called with: { groupIds: [ 1 ], userRole: 'admin' } - -📋 Avoirs returned: 1 items - -GET /api/avoirs 304 in 12ms \ No newline at end of file diff --git a/attached_assets/Pasted--PRODUCTION-Looking-for-user-with-username-admin-PRODUCTION-Looking-for--1762258084615_1762258084615.txt b/attached_assets/Pasted--PRODUCTION-Looking-for-user-with-username-admin-PRODUCTION-Looking-for--1762258084615_1762258084615.txt deleted file mode 100644 index 08590bd..0000000 --- a/attached_assets/Pasted--PRODUCTION-Looking-for-user-with-username-admin-PRODUCTION-Looking-for--1762258084615_1762258084615.txt +++ /dev/null @@ -1,201 +0,0 @@ - - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Found - -❌ [PRODUCTION] User not found with username: admin_local - -🔍 [PRODUCTION] User search result: Not found - -🎯 [PRODUCTION] Found announcements: 4 - -GET /api/announcements 304 in 9ms - -GET /api/user 304 in 4ms - -📢 [SERVER] Fetching announcements for user: _1754936203292 environment: production - -📢 [SERVER] User found: { username: 'ff292', role: 'employee' } - -🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table - -🔍 [PRODUCTION] Raw messages from DB: 4 items: [ - - { - - id: 20, - - title: 'DLC', - - content: 'Attention des DLC sont en expiré bientôt ou expiré, il faut s en occuper', - - type: 'success', - - storeId: 2, - - createdBy: 'admin', - - createdAt: 2025-09-24T11:26:13.521Z - - }, - - { - - id: 17, - - title: 'Module Avoir', - - content: "Le module d'avoir est en place", - - type: 'error', - - storeId: 1, - - createdBy: 'admin', - - createdAt: 2025-09-09T07:47:47.650Z - - }, - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -❌ [PRODUCTION] User not found with username: admin_local - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Not found - -🎯 [PRODUCTION] Found announcements: 4 - -GET /api/announcements 304 in 24ms - -GET /api/groups 304 in 5ms - -GET /api/user 304 in 4ms - -GET /api/suppliers 200 in 4ms - -GET /api/dlc-products 200 in 53ms - -📊 [EXPORT] Début de l'export Excel - -🔍 [EXPORT] Utilisateur: admin (admin) - -📋 [EXPORT] Paramètres: { - - groupId: 1, - - month: '2025-12', - - paymentMethods: [ 'Traite Magnétique' ], - - includeHT: true, - - includeTTC: true - -} - -❌ PRODUCTION: Delivery #127 (store 2) linked to order #81 (store 1) - STORE MISMATCH DETECTED! - -🔗 PRODUCTION: getDeliveries() récupéré 357 livraisons avec relations - -📦 [EXPORT] Import du module xlsx... - -❌ [EXPORT] Erreur export Excel: Error: Dynamic require of "stream" is not supported - - at file:///app/dist/index.js:11:9 - - at make_xlsx_lib (file:///app/dist/index.js:44815:22) - - at node_modules/xlsx/xlsx.js (file:///app/dist/index.js:44819:41) - - at __require2 (file:///app/dist/index.js:17:50) - - at file:///app/dist/index.js:47198:63 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/dist/index.js:47198:20 - -❌ [EXPORT] Message: Dynamic require of "stream" is not supported - -❌ [EXPORT] Stack: Error: Dynamic require of "stream" is not supported - - at file:///app/dist/index.js:11:9 - - at make_xlsx_lib (file:///app/dist/index.js:44815:22) - - at node_modules/xlsx/xlsx.js (file:///app/dist/index.js:44819:41) - - at __require2 (file:///app/dist/index.js:17:50) - - at file:///app/dist/index.js:47198:63 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/dist/index.js:47198:20 - -POST /api/payment-schedule/export 500 in 910ms - -HEAD /api/health 200 in 1ms \ No newline at end of file diff --git a/attached_assets/Pasted--PRODUCTION-Looking-for-user-with-username-admin-PRODUCTION-Looking-for-user--1757928750586_1757928750586.txt b/attached_assets/Pasted--PRODUCTION-Looking-for-user-with-username-admin-PRODUCTION-Looking-for-user--1757928750586_1757928750586.txt deleted file mode 100644 index 5af2ccc..0000000 --- a/attached_assets/Pasted--PRODUCTION-Looking-for-user-with-username-admin-PRODUCTION-Looking-for-user--1757928750586_1757928750586.txt +++ /dev/null @@ -1,201 +0,0 @@ - - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Found - -❌ [PRODUCTION] User not found with username: admin_local - -🔍 [PRODUCTION] User search result: Not found - -🎯 [PRODUCTION] Found announcements: 3 - -GET /api/announcements 304 in 84ms - -GET /api/user 304 in 5ms - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - userRole: 'admin' - -} - -🔍 Admin orders filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all orders - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -🔍 Admin deliveries filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all deliveries - -📢 [SERVER] Fetching announcements for user: admin_local environment: production - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -🔗 PRODUCTION: getOrders() récupéré 69 commandes avec relations - -Orders returned: 69 items - -GET /api/orders 304 in 152ms - -📢 [SERVER] User found: { username: 'admin', role: 'admin' } - -🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table - -🔗 PRODUCTION: getDeliveries() récupéré 97 livraisons avec relations - -Deliveries returned: 97 items - -GET /api/deliveries 200 in 187ms - -Customer Orders returned: 12 items - -🔍 [PRODUCTION] Raw messages from DB: 3 items: [ - - { - - id: 17, - - title: 'Module Avoir', - - content: "Le module d'avoir est en place", - - type: 'error', - - storeId: 1, - - createdBy: 'admin', - - createdAt: 2025-09-09T07:47:47.650Z - - }, - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -GET /api/customer-orders 304 in 189ms - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Not found - -🎯 [PRODUCTION] Found announcements: 3 - -❌ [PRODUCTION] User not found with username: admin_local - -GET /api/announcements 304 in 190ms - -GET /api/groups 304 in 187ms - -GET /api/user 304 in 4ms - -📋 API PUBLICITIES REQUEST: { year: '2025', filterYear: 2025, storeId: '1', userRole: 'admin' } - -📋 CALLING storage.getPublicities: { filterYear: 2025, groupIds: [ 1 ] } - -📋 PUBLICITES FETCHED: 29 résultats pour année 2025 - -🔍 PREMIERS RESULTATS: [ - - '1. N°2501 - Blanc', - - '2. N°2502 - Moins de 1€ 2€ 3€ 4€ 5€', - - '3. N°2503 - Imbattables' - -] - -📋 PUBLICITIES RETURNED: { count: 29 } - -GET /api/publicities 304 in 8ms - -📋 API PUBLICITIES REQUEST: { year: '2026', filterYear: 2026, storeId: '1', userRole: 'admin' } - -📋 CALLING storage.getPublicities: { filterYear: 2026, groupIds: [ 1 ] } - -📋 PUBLICITES FETCHED: 23 résultats pour année 2026 - -🔍 PREMIERS RESULTATS: [ - - '1. N°2601 - Blanc', - - '2. N°2602 - Catalogue', - - '3. N°2602 - Catalogue plein Air Moorea 124 pages' - -] - -📋 PUBLICITIES RETURNED: { count: 23 } - -GET /api/publicities 304 in 7ms - -HEAD /api/health 200 in 0ms \ No newline at end of file diff --git a/attached_assets/Pasted--PRODUCTION-User-not-found-with-username-admin-local-GET-api-announcements-304-in-214ms-G-1756907545927_1756907545928.txt b/attached_assets/Pasted--PRODUCTION-User-not-found-with-username-admin-local-GET-api-announcements-304-in-214ms-G-1756907545927_1756907545928.txt deleted file mode 100644 index 26bd7cd..0000000 --- a/attached_assets/Pasted--PRODUCTION-User-not-found-with-username-admin-local-GET-api-announcements-304-in-214ms-G-1756907545927_1756907545928.txt +++ /dev/null @@ -1,119 +0,0 @@ -❌ [PRODUCTION] User not found with username: admin_local - -GET /api/announcements 304 in 214ms - -GET /api/groups 304 in 122ms - -GET /api/user 304 in 6ms - -GET /api/users 304 in 15ms - -GET /api/user 304 in 4ms - -GET /api/user 304 in 5ms - -GET /api/backups 304 in 8ms - -❌ Erreur récupération config webhook BAP: error: relation "webhook_bap_config" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getWebhookBapConfig (file:///app/dist/index.js:2815:26) - - at async file:///app/dist/index.js:12402:22 { - - length: 117, - - severity: 'ERROR', - - code: '42P01', - - detail: undefined, - - hint: undefined, - - position: '97', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - -⚠️ Table webhook_bap_config n'existe pas, retour config par défaut - - constraint: undefined, - -GET /api/webhook-bap-config 200 in 8ms - - file: 'parse_relation.c', - - line: '1392', - - routine: 'parserOpenTable' - -} - -HEAD /api/health 200 in 1ms - -🔍 Test webhook BAP: { - - url: 'https://workflow.ffnancy.fr/webhook-test/a3d03176-b72f-412d-8fb9-f920b9fbab4d' - -} - -🌐 Réponse test webhook: { status: 404, ok: false } - -❌ Erreur test webhook BAP: Error: HTTP 404: Not Found - - at file:///app/dist/index.js:12481:15 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - -POST /api/webhook-bap-config/test 500 in 97ms - -🔍 Test webhook BAP: { - - url: 'https://workflow.ffnancy.fr/webhook-test/a3d03176-b72f-412d-8fb9-f920b9fbab4d' - -} - -❌ Erreur test webhook BAP: Error: HTTP 500: Internal Server Error - - at file:///app/dist/index.js:12481:15 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - -🌐 Réponse test webhook: { status: 500, ok: false } - -POST /api/webhook-bap-config/test 500 in 65ms - -🔍 Test webhook BAP: { - - url: 'https://workflow.ffnancy.fr/webhook-test/a3d03176-b72f-412d-8fb9-f920b9fbab4d' - -} - -🌐 Réponse test webhook: { status: 404, ok: false } - -❌ Erreur test webhook BAP: Error: HTTP 404: Not Found - - at file:///app/dist/index.js:12481:15 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - -POST /api/webhook-bap-config/test 500 in 17ms - -HEAD /api/health 200 in 0ms \ No newline at end of file diff --git a/attached_assets/Pasted--PRODUCTION-Using-PostgreSQL-DASHBOARD-MESSAGES-table-PRODUCTION-Raw-messages-fr-1756903729633_1756903729634.txt b/attached_assets/Pasted--PRODUCTION-Using-PostgreSQL-DASHBOARD-MESSAGES-table-PRODUCTION-Raw-messages-fr-1756903729633_1756903729634.txt deleted file mode 100644 index 153d4c3..0000000 --- a/attached_assets/Pasted--PRODUCTION-Using-PostgreSQL-DASHBOARD-MESSAGES-table-PRODUCTION-Raw-messages-fr-1756903729633_1756903729634.txt +++ /dev/null @@ -1,199 +0,0 @@ - -🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table - -🔍 [PRODUCTION] Raw messages from DB: 2 items: [ - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Not found - -❌ [PRODUCTION] User not found with username: admin_local - -🎯 [PRODUCTION] Found announcements: 2 - -GET /api/announcements 304 in 8ms - -GET /api/groups 200 in 4ms - -GET /api/user 304 in 7ms - -📊 Calcul statistiques mensuelles: { - - year: 2025, - - month: 9, - - startDate: '2025-09-01', - - endDate: '2025-10-01', - - groupIds: [ 1 ] - -} - -Orders API called with: { - - startDate: '2025-09-01', - - endDate: '2025-09-30', - - storeId: '1', - - userRole: 'manager' - -} - -🔍 Non-admin orders - filtering by accessible store: { userId: '_1754943032954', role: 'manager', requestedStoreId: 1 } - -Deliveries API called with: { - - startDate: '2025-09-01', - - endDate: '2025-09-30', - - storeId: '1', - - withBL: undefined, - - userRole: 'manager' - -} - -🔍 Non-admin deliveries - filtering by accessible store: { userId: '_1754943032954', role: 'manager', requestedStoreId: 1 } - -📋 API PUBLICITIES REQUEST: { - - year: '2025', - - filterYear: 2025, - - storeId: undefined, - - userRole: 'manager' - -} - -📋 CALLING storage.getPublicities: { filterYear: 2025, groupIds: [ 1 ] } - -📋 PUBLICITES FETCHED: 29 résultats pour année 2025 - -🔍 PREMIERS RESULTATS: [ - - '1. N°2501 - Blanc', - - '2. N°2502 - Moins de 1€ 2€ 3€ 4€ 5€', - - '3. N°2503 - Imbattables' - -] - -📋 PUBLICITIES RETURNED: { count: 29 } - -GET /api/publicities 304 in 22ms - -📊 Statistiques calculées: { - - ordersCount: 12, - - deliveriesCount: 10, - - pendingOrdersCount: 10, - - averageDeliveryTime: 3.6666666666666665, - - totalPalettes: 29, - - totalPackages: 3 - -} - -GET /api/stats/monthly 200 in 31ms - -Orders returned: 12 items - -GET /api/orders 200 in 33ms - -Deliveries returned: 10 items - -GET /api/deliveries 304 in 34ms - -GET /api/user 304 in 5ms - -GET /api/user 304 in 3ms - -HEAD /api/health 200 in 1ms - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - userRole: 'manager' - -} - -🔍 Manager orders - using assigned store automatically: { - - userId: '_1754943032954', - - role: 'manager', - - assignedStore: 1, - - allUserGroups: [ 1 ] - -} - -GET /api/suppliers 200 in 8ms - -GET /api/user 304 in 9ms - -🔗 PRODUCTION: getOrders() récupéré 56 commandes avec relations - -Orders returned: 56 items - diff --git a/attached_assets/Pasted--PRODUCTION-getDelivery-427-found-associated-order-256-with-status-delivered-Up-1762190961659_1762190961659.txt b/attached_assets/Pasted--PRODUCTION-getDelivery-427-found-associated-order-256-with-status-delivered-Up-1762190961659_1762190961659.txt deleted file mode 100644 index ceaade0..0000000 --- a/attached_assets/Pasted--PRODUCTION-getDelivery-427-found-associated-order-256-with-status-delivered-Up-1762190961659_1762190961659.txt +++ /dev/null @@ -1,201 +0,0 @@ - - -✅ PRODUCTION: getDelivery #427 found associated order #256 with status: delivered - -🔄 Updating delivery: { id: 427, data: { invoiceReference: '197771' }, user: 'admin_local' } - -🔍 [INVOICE] Début vérification facture: { invoiceReference: '197771', groupId: 1, forceRefresh: true } - -🔄 [INVOICE] Refresh forcé, ignorant le cache - -🔧 Configuration groupe: { - - groupName: 'Frouard', - - hasNocodbConfig: true, - - hasTableName: true, - - hasWebhook: true - -} - -🔍 Vérification NocoDB en production... - -🔧 Configuration NocoDB active récupérée: { - - id: 1, - - name: 'Nocodb', - - baseUrl: 'https://nocodb.ffnancy.fr', - - projectId: 'pcg4uw79ukvycxc', - - apiToken: 'z4BAwLo6dgoN_E7PKJSHN7PA7kdBePtKOYcsDlwQ', - - description: '', - - isActive: true, - - createdBy: 'admin_local', - - createdAt: 2025-07-22T11:12:54.971Z, - - updatedAt: 2025-07-25T23:07:17.197Z - -} - -🔧 Configuration NocoDB trouvée: { - - configName: 'Nocodb', - - baseUrl: 'https://nocodb.ffnancy.fr', - - projectId: 'pcg4uw79ukvycxc', - - hasToken: true - -} - -🔧 Utilisation table ID: { - - groupTable: 'CommandeF', - - configuredId: 'mrr733dfb8wtt9b', - - resolvedId: 'mrr733dfb8wtt9b' - -} - -🔍 Recherche NocoDB: { tableId: 'mrr733dfb8wtt9b', column: 'RefFacture' } - -💾 [CACHE] Tentative sauvegarde: { - - invoiceReference: '197771', - - groupId: 1, - - cacheKey: '1_197771', - - exists: true, - - isReconciled: false, - - cacheType: 'temporaire 6h (trouvé)', - - expiresAt: '2025-11-03T23:28:12.943Z' - -} - -Error updating delivery: TypeError: value.toISOString is not a function - - at PgTimestamp.mapToDriverValue (file:///app/node_modules/drizzle-orm/pg-core/columns/timestamp.js:34:18) - - at file:///app/node_modules/drizzle-orm/sql/sql.js:131:73 - - at Array.map () - - at SQL.buildQueryFromSourceParams (file:///app/node_modules/drizzle-orm/sql/sql.js:73:32) - - at file:///app/node_modules/drizzle-orm/sql/sql.js:95:21 - - at Array.map () - - at SQL.buildQueryFromSourceParams (file:///app/node_modules/drizzle-orm/sql/sql.js:73:32) - - at file:///app/node_modules/drizzle-orm/sql/sql.js:95:21 - - at Array.map () - - at SQL.buildQueryFromSourceParams (file:///app/node_modules/drizzle-orm/sql/sql.js:73:32) - -✅ [CACHE] Résultat sauvé en cache: { - - id: 31803, - - invoiceReference: '197771', - - groupId: 1, - - exists: true, - - isReconciled: false, - - cacheType: 'temporaire 6h (trouvé)', - - cacheKey: '1_197771' - -} - -📅 Date d'échéance récupérée et normalisée: 2025-11-29 (original: 2025-11-29) - -PUT /api/deliveries/427 500 in 339ms - -🔍 Recherche NocoDB: { tableId: 'mrr733dfb8wtt9b', column: 'Numero_BL' } - -💾 [CACHE] Tentative sauvegarde: { - - invoiceReference: '197771', - - groupId: 1, - - cacheKey: '1_197771', - - exists: true, - - isReconciled: false, - - cacheType: 'temporaire 6h (trouvé)', - - expiresAt: '2025-11-03T23:28:12.963Z' - -} - -✅ [CACHE] Résultat sauvé en cache: { - - id: 31803, - - invoiceReference: '197771', - - groupId: 1, - - exists: true, - - isReconciled: false, - - cacheType: 'temporaire 6h (trouvé)', - - cacheKey: '1_197771' - -} - -📅 Date d'échéance récupérée et normalisée: 2025-11-29 (original: 2025-11-29) - -Error updating delivery: TypeError: value.toISOString is not a function - - at PgTimestamp.mapToDriverValue (file:///app/node_modules/drizzle-orm/pg-core/columns/timestamp.js:34:18) - - at file:///app/node_modules/drizzle-orm/sql/sql.js:131:73 - - at Array.map () - - at SQL.buildQueryFromSourceParams (file:///app/node_modules/drizzle-orm/sql/sql.js:73:32) - - at file:///app/node_modules/drizzle-orm/sql/sql.js:95:21 - - at Array.map () - - at SQL.buildQueryFromSourceParams (file:///app/node_modules/drizzle-orm/sql/sql.js:73:32) - - at file:///app/node_modules/drizzle-orm/sql/sql.js:95:21 - - at Array.map () - - at SQL.buildQueryFromSourceParams (file:///app/node_modules/drizzle-orm/sql/sql.js:73:32) - -PUT /api/deliveries/427 500 in 50ms - -HEAD /api/health 200 in 1ms - -HEAD /api/health 200 in 1ms \ No newline at end of file diff --git a/attached_assets/Pasted--R-sultat-v-rification-avoir-exists-true-matchType-invoice-reference--1757357533325_1757357533326.txt b/attached_assets/Pasted--R-sultat-v-rification-avoir-exists-true-matchType-invoice-reference--1757357533325_1757357533326.txt deleted file mode 100644 index ea1938b..0000000 --- a/attached_assets/Pasted--R-sultat-v-rification-avoir-exists-true-matchType-invoice-reference--1757357533325_1757357533326.txt +++ /dev/null @@ -1,201 +0,0 @@ - - -✅ Résultat vérification avoir: { - - exists: true, - - matchType: 'invoice_reference', - - errorMessage: null, - - invoiceReference: 'FC-25-00005972', - - supplierName: 'Artyfete', - - fromCache: true, - - permanent: false - -} - -POST /api/avoirs/7/verify-invoice 200 in 15ms - -🔍 Vérification facture avoir: { - - avoirId: 7, - - invoiceReference: 'FC-25-00005972', - - supplier: 'Artyfete', - - group: 'Frouard', - - groupId: 1 - -} - -🔍 [INVOICE] Début vérification facture: { invoiceReference: 'FC-25-00005972', groupId: 1, forceRefresh: true } - -🔄 [INVOICE] Refresh forcé, ignorant le cache - -🔧 Configuration groupe: { - - groupName: 'Frouard', - - hasNocodbConfig: true, - - hasTableName: true, - - hasWebhook: true - -} - -🔍 Vérification NocoDB en production... - -🔧 Configuration NocoDB active récupérée: { - - id: 1, - - name: 'Nocodb', - - baseUrl: 'https://nocodb.ffnancy.fr', - - projectId: 'pcg4uw79ukvycxc', - - apiToken: 'z4BAwLo6dgoN_E7PKJSHN7PA7kdBePtKOYcsDlwQ', - - description: '', - - isActive: true, - - createdBy: 'admin_local', - - createdAt: 2025-07-22T11:12:54.971Z, - - updatedAt: 2025-07-25T23:07:17.197Z - -} - -🔧 Configuration NocoDB trouvée: { - - configName: 'Nocodb', - - baseUrl: 'https://nocodb.ffnancy.fr', - - projectId: 'pcg4uw79ukvycxc', - - hasToken: true - -} - -🔧 Utilisation table ID: { - - groupTable: 'CommandeF', - - configuredId: 'mrr733dfb8wtt9b', - - resolvedId: 'mrr733dfb8wtt9b' - -} - -🔍 Recherche NocoDB: { tableId: 'mrr733dfb8wtt9b', column: 'RefFacture' } - -💾 [CACHE] Tentative sauvegarde: { - - invoiceReference: 'FC-25-00005972', - - groupId: 1, - - cacheKey: '1_fc-25-00005972', - - exists: true, - - isReconciled: false, - - cacheType: 'temporaire 6h (trouvé)', - - expiresAt: '2025-09-09T00:51:46.386Z' - -} - -✅ [CACHE] Résultat sauvé en cache: { - - id: 23216, - - invoiceReference: 'FC-25-00005972', - - groupId: 1, - - exists: true, - - isReconciled: false, - - cacheType: 'temporaire 6h (trouvé)', - - cacheKey: '1_fc-25-00005972' - -} - -✅ Résultat vérification avoir: { - - exists: true, - - matchType: 'invoice_reference', - - invoiceReference: 'FC-25-00005972', - - invoiceAmount: -47.976, - - supplierName: 'Artyfete' - -} - -POST /api/avoirs/7/verify-invoice 200 in 89ms - -💰 PUT Avoir - Raw body received: { - - "supplierId": 3, - - "groupId": 1, - - "invoiceReference": "FC-25-00005972", - - "amount": -47.976, - - "comment": "", - - "commercialProcessed": false, - - "status": "Reçu" - -} - -💰 PUT Avoir - Validated data: { - - "supplierId": 3, - - "groupId": 1, - - "invoiceReference": "FC-25-00005972", - - "amount": -47.976, - - "comment": "", - - "commercialProcessed": false, - - "status": "Reçu" - -} - -✅ Avoir updated: 7 by user: admin_local - -PUT /api/avoirs/7 200 in 16ms - -🔍 Avoirs API called with: { groupIds: [ 1 ], userRole: 'admin' } - -📋 Avoirs returned: 1 items - -GET /api/avoirs 200 in 7ms - -HEAD /api/health 200 in 0ms \ No newline at end of file diff --git a/attached_assets/Pasted--Recherche-NocoDB-url-https-nocodb-ffnancy-fr-api-v1-db-data-v1-pcg4uw79ukvycxc-C-1755091396833_1755091396833.txt b/attached_assets/Pasted--Recherche-NocoDB-url-https-nocodb-ffnancy-fr-api-v1-db-data-v1-pcg4uw79ukvycxc-C-1755091396833_1755091396833.txt deleted file mode 100644 index 59755d9..0000000 --- a/attached_assets/Pasted--Recherche-NocoDB-url-https-nocodb-ffnancy-fr-api-v1-db-data-v1-pcg4uw79ukvycxc-C-1755091396833_1755091396833.txt +++ /dev/null @@ -1,200 +0,0 @@ -} - -🔍 Recherche NocoDB: { - - url: 'https://nocodb.ffnancy.fr/api/v1/db/data/v1/pcg4uw79ukvycxc/CommandeF', - - column: 'RefFacture', - - value: '37424' - -} - -🔧 Configuration NocoDB active récupérée: { - - id: 1, - - name: 'Nocodb', - - baseUrl: 'https://nocodb.ffnancy.fr', - - projectId: 'pcg4uw79ukvycxc', - - apiToken: 'z4BAwLo6dgoN_E7PKJSHN7PA7kdBePtKOYcsDlwQ', - - description: '', - - isActive: true, - - createdBy: 'admin_local', - - createdAt: 2025-07-22T11:12:54.971Z, - - updatedAt: 2025-07-25T23:07:17.197Z - -} - -🔧 Configuration NocoDB trouvée: { - - configName: 'Nocodb', - - baseUrl: 'https://nocodb.ffnancy.fr', - - projectId: 'pcg4uw79ukvycxc', - - hasToken: true - -} - -🔍 Recherche NocoDB: { - - url: 'https://nocodb.ffnancy.fr/api/v1/db/data/v1/pcg4uw79ukvycxc/CommandeF', - - column: 'RefFacture', - - value: '000752796' - -} - -✅ Résultat vérification: { - - exists: false, - - matchType: 'none', - - errorMessage: 'Aucune correspondance trouvée dans NocoDB' - -} - -❌ Erreur réponse NocoDB: 404 Not Found - -❌ Erreur réponse NocoDB: 404 Not Found - -❌ Erreur réponse NocoDB: 404 Not Found - -✅ Résultat vérification: { - - exists: false, - - matchType: 'none', - - errorMessage: 'Aucune correspondance trouvée dans NocoDB' - -} - -✅ Résultat vérification: { - - exists: false, - - matchType: 'none', - - errorMessage: 'Aucune correspondance trouvée dans NocoDB' - -} - -❌ Erreur réponse NocoDB: 404 Not Found - -🔍 Recherche NocoDB: { - - url: 'https://nocodb.ffnancy.fr/api/v1/db/data/v1/pcg4uw79ukvycxc/CommandeF', - - column: 'Numero_BL', - - value: 'F5164434' - -} - -POST /api/deliveries/38/verify-invoice 200 in 162ms - -POST /api/deliveries/43/verify-invoice 200 in 167ms - -POST /api/deliveries/11/verify-invoice 200 in 156ms - -✅ Résultat vérification: { - - exists: false, - - matchType: 'none', - - errorMessage: 'Aucune correspondance trouvée dans NocoDB' - -} - -❌ Erreur réponse NocoDB: 404 Not Found - -POST /api/deliveries/33/verify-invoice 200 in 149ms - -❌ Erreur réponse NocoDB: 404 Not Found - -🔍 Recherche NocoDB: { - - url: 'https://nocodb.ffnancy.fr/api/v1/db/data/v1/pcg4uw79ukvycxc/CommandeF', - - column: 'Numero_BL', - - value: '37424' - -} - -❌ Erreur réponse NocoDB: 404 Not Found - -🔍 Recherche NocoDB: { - - url: 'https://nocodb.ffnancy.fr/api/v1/db/data/v1/pcg4uw79ukvycxc/CommandeF', - - column: 'Numero_BL', - - value: '000752796' - -} - -❌ Erreur réponse NocoDB: 404 Not Found - -✅ Résultat vérification: { - - exists: false, - - matchType: 'none', - - errorMessage: 'Aucune correspondance trouvée dans NocoDB' - -} - -POST /api/deliveries/38/verify-invoice 200 in 166ms - -❌ Erreur réponse NocoDB: 404 Not Found - -✅ Résultat vérification: { - - exists: false, - - matchType: 'none', - - errorMessage: 'Aucune correspondance trouvée dans NocoDB' - -} - -POST /api/deliveries/28/verify-invoice 200 in 154ms - -❌ Erreur réponse NocoDB: 404 Not Found - -✅ Résultat vérification: { - - exists: false, - - matchType: 'none', - - errorMessage: 'Aucune correspondance trouvée dans NocoDB' - -} - -POST /api/deliveries/27/verify-invoice 200 in 166ms - -HEAD /api/health 200 in 1ms - -HEAD /api/health 200 in 1ms - -HEAD /api/health 200 in 1ms - -HEAD /api/health 200 in 2ms - diff --git a/attached_assets/Pasted--Statistiques-calcul-es-ordersCount-20-deliveriesCount-42-pen-1755346885991_1755346885991.txt b/attached_assets/Pasted--Statistiques-calcul-es-ordersCount-20-deliveriesCount-42-pen-1755346885991_1755346885991.txt deleted file mode 100644 index 78fc4d5..0000000 --- a/attached_assets/Pasted--Statistiques-calcul-es-ordersCount-20-deliveriesCount-42-pen-1755346885991_1755346885991.txt +++ /dev/null @@ -1,201 +0,0 @@ - - -} - -📊 Statistiques calculées: { - - ordersCount: 20, - - deliveriesCount: 42, - - pendingOrdersCount: 8, - - averageDeliveryTime: 0.3611111111111111, - - totalPalettes: 120, - - totalPackages: 36 - -} - -GET /api/stats/monthly 200 in 91ms - -🔍 Tasks API called with: { - - groupIds: undefined, - - userRole: 'admin', - - userId: 'admin_local', - - requestedStoreId: undefined, - - userGroups: 'all', - - timestamp: '2025-08-16T12:21:04.881Z' - -} - -🗓️ [DATE-CALC] Aujourd'hui: 2025-08-16 (Samedi) - -🗓️ [DATE-CALC] Année précédente: 2024-08-17 (Samedi) - -GET /api/user 200 in 73ms - -📢 Système d'annonces en mémoire initialisé (max 5 annonces) - -🌤️ [RESPONSE] Weather data prepared: { - - hasCurrentYear: true, - - hasPreviousYear: true, - - location: 'Frouard, France' - -} - -GET /api/weather/current 200 in 172ms - -📋 Tasks returned: { - - count: 55, - - userId: 'admin_local', - - userRole: 'admin', - - requestedStoreId: undefined, - - groupIds: undefined, - - taskGroups: [ - - { id: 91, title: 'refaire podium lot assiettes', groupId: 2 }, - - { id: 90, title: 'caisse 1', groupId: 1 }, - - { id: 89, title: 'caisse 3', groupId: 1 } - - ] - -} - -GET /api/tasks 200 in 145ms - -GET /api/announcements 200 in 210ms - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - userRole: 'admin' - -} - -Admin filtering with groupIds: undefined - -Fetching all orders - -GET /api/groups 200 in 93ms - -GET /api/user 200 in 234ms - -GET /api/user 200 in 246ms - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: undefined - -Fetching all deliveries - -GET /api/publicities 200 in 217ms - -GET /api/dlc-products/stats 200 in 273ms - -Customer Orders API called with: { groupIds: undefined, userRole: 'admin' } - -Customer Orders returned: 38 items - -🔗 PRODUCTION: getOrders() récupéré 51 commandes avec relations - -Orders returned: 51 items - -GET /api/customer-orders 200 in 468ms - -GET /api/orders 200 in 479ms - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -🔗 PRODUCTION: getDeliveries() récupéré 86 livraisons avec relations - -Deliveries returned: 86 items - -GET /api/deliveries 200 in 506ms - -Customer Orders returned: 10 items - -GET /api/customer-orders 200 in 73ms - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: [ 1 ] - -Fetching all deliveries - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - userRole: 'admin' - -} - -Admin filtering with groupIds: [ 1 ] - -Fetching all orders - -🔗 PRODUCTION: getDeliveries() récupéré 48 livraisons avec relations - -Deliveries returned: 48 items - -GET /api/deliveries 200 in 198ms - -🔗 PRODUCTION: getOrders() récupéré 33 commandes avec relations - -Orders returned: 33 items - -GET /api/orders 200 in 261ms - -GET /api/publicities 200 in 204ms \ No newline at end of file diff --git a/attached_assets/Pasted--Tasks-API-called-with-groupIds-undefined-userRole-admin-userId--1755346473869_1755346473870.txt b/attached_assets/Pasted--Tasks-API-called-with-groupIds-undefined-userRole-admin-userId--1755346473869_1755346473870.txt deleted file mode 100644 index 3a93576..0000000 --- a/attached_assets/Pasted--Tasks-API-called-with-groupIds-undefined-userRole-admin-userId--1755346473869_1755346473870.txt +++ /dev/null @@ -1,201 +0,0 @@ - - -🔍 Tasks API called with: { - - groupIds: undefined, - - userRole: 'admin', - - userId: 'admin_local', - - requestedStoreId: undefined, - - userGroups: 'all', - - timestamp: '2025-08-16T12:14:15.937Z' - -} - -GET /api/user 200 in 130ms - -🗓️ [DATE-CALC] Aujourd'hui: 2025-08-16 (Samedi) - -🗓️ [DATE-CALC] Année précédente: 2024-08-17 (Samedi) - -GET /api/user 200 in 83ms - -GET /api/user 200 in 140ms - -📢 Système d'annonces en mémoire initialisé (max 5 annonces) - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: undefined - -Fetching all deliveries - -GET /api/announcements 200 in 165ms - -GET /api/publicities 200 in 137ms - -Customer Orders API called with: { groupIds: undefined, userRole: 'admin' } - -GET /api/groups 200 in 66ms - -🌤️ [RESPONSE] Weather data prepared: { - - hasCurrentYear: true, - - hasPreviousYear: true, - - location: 'Frouard, France' - -} - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - userRole: 'admin' - -} - -Admin filtering with groupIds: undefined - -Fetching all orders - -📊 Statistiques calculées: { - - ordersCount: 20, - - deliveriesCount: 42, - - pendingOrdersCount: 8, - - averageDeliveryTime: 0.3611111111111111, - - totalPalettes: 120, - - totalPackages: 36 - -} - -📋 Tasks returned: { - - count: 55, - - userId: 'admin_local', - - userRole: 'admin', - - requestedStoreId: undefined, - - groupIds: undefined, - - taskGroups: [ - - { id: 91, title: 'refaire podium lot assiettes', groupId: 2 }, - - { id: 90, title: 'caisse 1', groupId: 1 }, - - { id: 89, title: 'caisse 3', groupId: 1 } - - ] - -} - -GET /api/weather/current 200 in 328ms - -GET /api/stats/monthly 200 in 307ms - -GET /api/tasks 200 in 271ms - -Customer Orders returned: 38 items - -GET /api/customer-orders 200 in 370ms - -🔗 PRODUCTION: getDeliveries() récupéré 86 livraisons avec relations - -Deliveries returned: 86 items - -GET /api/dlc-products/stats 200 in 433ms - -GET /api/deliveries 200 in 456ms - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - userRole: 'admin' - -} - -Admin filtering with groupIds: [ 1 ] - -Fetching all orders - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: [ 1 ] - -Fetching all deliveries - -🔗 PRODUCTION: getOrders() récupéré 51 commandes avec relations - -Orders returned: 51 items - -GET /api/orders 200 in 521ms - -Customer Orders returned: 10 items - -GET /api/customer-orders 200 in 409ms - -🔗 PRODUCTION: getOrders() récupéré 33 commandes avec relations - -Orders returned: 33 items - -GET /api/orders 200 in 485ms - -🔗 PRODUCTION: getDeliveries() récupéré 48 livraisons avec relations - -Deliveries returned: 48 items - -GET /api/deliveries 200 in 502ms - -GET /api/publicities 200 in 272ms - -HEAD /api/health 200 in 1ms \ No newline at end of file diff --git a/attached_assets/Pasted--User-related-Environment-related-Registries-Logs-Notifications-Settings-New--1755352580023_1755352580023.txt b/attached_assets/Pasted--User-related-Environment-related-Registries-Logs-Notifications-Settings-New--1755352580023_1755352580023.txt deleted file mode 100644 index 92618cf..0000000 --- a/attached_assets/Pasted--User-related-Environment-related-Registries-Logs-Notifications-Settings-New--1755352580023_1755352580023.txt +++ /dev/null @@ -1,238 +0,0 @@ - - -User-related - - -Environment-related - -Registries - -Logs - -Notifications - -Settings - -New version available 2.27.9 -DismissSee what's new -Community Edition -2.27.6 LTS -Containers>logiflow-logiflow-1>Logs -Container logs - - -admin -Log viewer settings -Auto-refresh logs -Wrap lines -Display timestamps -Fetch -All logs -Search -Filter... -Lines -100 -Actions - - - - - at authenticate (/app/node_modules/passport/lib/middleware/authenticate.js:379:7) - - at file:///app/dist/index.js:4874:7 - - at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) - - at next (/app/node_modules/express/lib/router/route.js:149:13) - - at Route.dispatch (/app/node_modules/express/lib/router/route.js:119:3) - - at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) - -} - -POST /api/login 500 in 2ms - -TypeError: Cannot read properties of null (reading 'select') - - at DatabaseStorage.getUserByUsername (file:///app/dist/index.js:1204:33) - - at Strategy._verify (file:///app/dist/index.js:4832:38) - - at Strategy.authenticate (/app/node_modules/passport-local/lib/strategy.js:90:12) - - at attempt (/app/node_modules/passport/lib/middleware/authenticate.js:378:16) - - at authenticate (/app/node_modules/passport/lib/middleware/authenticate.js:379:7) - - at file:///app/dist/index.js:4874:7 - - at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) - - at next (/app/node_modules/express/lib/router/route.js:149:13) - - at Route.dispatch (/app/node_modules/express/lib/router/route.js:119:3) - - at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) - -Server error: { - - status: 500, - - message: "Cannot read properties of null (reading 'select')", - - error: TypeError: Cannot read properties of null (reading 'select') - - at DatabaseStorage.getUserByUsername (file:///app/dist/index.js:1204:33) - - at Strategy._verify (file:///app/dist/index.js:4832:38) - - at Strategy.authenticate (/app/node_modules/passport-local/lib/strategy.js:90:12) - - at attempt (/app/node_modules/passport/lib/middleware/authenticate.js:378:16) - - at authenticate (/app/node_modules/passport/lib/middleware/authenticate.js:379:7) - - at file:///app/dist/index.js:4874:7 - - at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) - - at next (/app/node_modules/express/lib/router/route.js:149:13) - - at Route.dispatch (/app/node_modules/express/lib/router/route.js:119:3) - - at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) - -} - -POST /api/login 500 in 2ms - -TypeError: Cannot read properties of null (reading 'select') - - at DatabaseStorage.getUserByUsername (file:///app/dist/index.js:1204:33) - - at Strategy._verify (file:///app/dist/index.js:4832:38) - - at Strategy.authenticate (/app/node_modules/passport-local/lib/strategy.js:90:12) - - at attempt (/app/node_modules/passport/lib/middleware/authenticate.js:378:16) - - at authenticate (/app/node_modules/passport/lib/middleware/authenticate.js:379:7) - - at file:///app/dist/index.js:4874:7 - - at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) - - at next (/app/node_modules/express/lib/router/route.js:149:13) - - at Route.dispatch (/app/node_modules/express/lib/router/route.js:119:3) - - at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) - -Server error: { - - status: 500, - - message: "Cannot read properties of null (reading 'select')", - - error: TypeError: Cannot read properties of null (reading 'select') - - at DatabaseStorage.getUserByUsername (file:///app/dist/index.js:1204:33) - - at Strategy._verify (file:///app/dist/index.js:4832:38) - - at Strategy.authenticate (/app/node_modules/passport-local/lib/strategy.js:90:12) - - at attempt (/app/node_modules/passport/lib/middleware/authenticate.js:378:16) - - at authenticate (/app/node_modules/passport/lib/middleware/authenticate.js:379:7) - - at file:///app/dist/index.js:4874:7 - - at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) - - at next (/app/node_modules/express/lib/router/route.js:149:13) - - at Route.dispatch (/app/node_modules/express/lib/router/route.js:119:3) - - at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) - -} - -POST /api/login 500 in 2ms - -TypeError: Cannot read properties of null (reading 'select') - - at DatabaseStorage.getUserByUsername (file:///app/dist/index.js:1204:33) - - at Strategy._verify (file:///app/dist/index.js:4832:38) - - at Strategy.authenticate (/app/node_modules/passport-local/lib/strategy.js:90:12) - - at attempt (/app/node_modules/passport/lib/middleware/authenticate.js:378:16) - - at authenticate (/app/node_modules/passport/lib/middleware/authenticate.js:379:7) - - at file:///app/dist/index.js:4874:7 - - at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) - - at next (/app/node_modules/express/lib/router/route.js:149:13) - - at Route.dispatch (/app/node_modules/express/lib/router/route.js:119:3) - - at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) - -Server error: { - - status: 500, - - message: "Cannot read properties of null (reading 'select')", - - error: TypeError: Cannot read properties of null (reading 'select') - - at DatabaseStorage.getUserByUsername (file:///app/dist/index.js:1204:33) - - at Strategy._verify (file:///app/dist/index.js:4832:38) - - at Strategy.authenticate (/app/node_modules/passport-local/lib/strategy.js:90:12) - - at attempt (/app/node_modules/passport/lib/middleware/authenticate.js:378:16) - - at authenticate (/app/node_modules/passport/lib/middleware/authenticate.js:379:7) - - at file:///app/dist/index.js:4874:7 - - at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) - - at next (/app/node_modules/express/lib/router/route.js:149:13) - - at Route.dispatch (/app/node_modules/express/lib/router/route.js:119:3) - - at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) - -} - -POST /api/login 500 in 2ms - -TypeError: Cannot read properties of null (reading 'select') - - at DatabaseStorage.getUserByUsername (file:///app/dist/index.js:1204:33) - - at Strategy._verify (file:///app/dist/index.js:4832:38) - - at Strategy.authenticate (/app/node_modules/passport-local/lib/strategy.js:90:12) - - at attempt (/app/node_modules/passport/lib/middleware/authenticate.js:378:16) - - at authenticate (/app/node_modules/passport/lib/middleware/authenticate.js:379:7) - - at file:///app/dist/index.js:4874:7 - - at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) - - at next (/app/node_modules/express/lib/router/route.js:149:13) - - at Route.dispatch (/app/node_modules/express/lib/router/route.js:119:3) - - at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) \ No newline at end of file diff --git a/attached_assets/Pasted--User-related-Environment-related-Registries-Logs-Notifications-Settings-New--1756806583128_1756806583129.txt b/attached_assets/Pasted--User-related-Environment-related-Registries-Logs-Notifications-Settings-New--1756806583128_1756806583129.txt deleted file mode 100644 index ee6cdbd..0000000 --- a/attached_assets/Pasted--User-related-Environment-related-Registries-Logs-Notifications-Settings-New--1756806583128_1756806583129.txt +++ /dev/null @@ -1,237 +0,0 @@ - - -User-related - - -Environment-related - -Registries - -Logs - -Notifications - -Settings - -New version available 2.33.1 -DismissSee what's new -Community Edition -2.27.6 LTS -Containers>logiflow-logiflow-1>Logs -Container logs - - -admin -Log viewer settings -Auto-refresh logs -Wrap lines -Display timestamps -Fetch -All logs -Search -Filter... -Lines -100 -Actions - - - - - title: 'Rangement et faire prix podium Meuble', - - description: 'Rangement et faire prix podium Meuble', - - priority: 'medium', - - status: 'pending', - - assignedTo: 'Non assigné', - - startDate: null, - - dueDate: null, - - groupId: 2, - - createdBy: 'admin_local' - - }, - - dueDate: null, - - dueDateType: 'object', - - dueDateValue: null - -} - -💾 DatabaseStorage.createTask - Input: { - - taskData: { - - title: 'Rangement et faire prix podium Meuble', - - description: 'Rangement et faire prix podium Meuble', - - priority: 'medium', - - status: 'pending', - - assignedTo: 'Non assigné', - - startDate: null, - - dueDate: null, - - groupId: 2, - - createdBy: 'admin_local' - - }, - - dueDate: null, - - dueDateType: 'object', - - dueDateISO: null - -} - -💾 DatabaseStorage.createTask - Result: { - - taskId: 107, - - title: 'Rangement et faire prix podium Meuble', - - dueDate: null, - - dueDateType: 'object' - -} - -✅ Task created: { - - id: 107, - - title: 'Rangement et faire prix podium Meuble', - - dueDate: null, - - dueDateType: 'object' - -} - -POST /api/tasks 200 in 7ms - -📄 SPA: Serving index.html for /tasks - -GET /api/user 304 in 4ms - -🗓️ [DATE-CALC] Aujourd'hui: 2025-09-02 (Mardi) - -🗓️ [DATE-CALC] Année précédente: 2024-09-03 (Mardi) - -GET /api/user 304 in 11ms - -🌤️ [RESPONSE] Weather data prepared: { - - hasCurrentYear: true, - - hasPreviousYear: true, - - location: 'Frouard, France' - -} - -GET /api/weather/current 304 in 12ms - -GET /api/user 304 in 3ms - -GET /api/user 304 in 7ms - -GET /api/users 304 in 14ms - -GET /api/groups 304 in 6ms - -🔍 Admin tasks filtering: { storeId: '2', groupIds: [ 2 ], message: 'Filtering by store 2' } - -🔍 Tasks API called with: { - - groupIds: [ 2 ], - - userRole: 'admin', - - userId: 'admin_local', - - requestedStoreId: '2', - - userGroups: 'all', - - timestamp: '2025-09-02T09:49:55.103Z' - -} - -📋 DatabaseStorage.getTasks - Raw results: { - - resultCount: 1, - - userRole: 'admin', - - sampleTasks: [ - - { - - taskExists: true, - - taskId: 107, - - title: 'Rangement et faire prix podium Meuble', - - startDate: null, - - groupExists: true - - } - - ] - -} - -📋 Tasks returned: { - - count: 1, - - userId: 'admin_local', - - userRole: 'admin', - - requestedStoreId: '2', - - groupIds: [ 2 ], - - taskGroups: [ - - { - - id: 107, - - title: 'Rangement et faire prix podium Meuble', - - groupId: 2 - - } - - ] - -} - -GET /api/tasks 200 in 9ms - -GET /api/weather/current 401 in 2ms - -📄 SPA: Serving index.html for /auth - -GET /api/user 401 in 1ms - -GET /api/user 401 in 3ms - diff --git a/attached_assets/Pasted--Using-memory-session-store-for-development-All-routes-registered-successfully-for--1755240478665_1755240478666.txt b/attached_assets/Pasted--Using-memory-session-store-for-development-All-routes-registered-successfully-for--1755240478665_1755240478666.txt deleted file mode 100644 index f991eee..0000000 --- a/attached_assets/Pasted--Using-memory-session-store-for-development-All-routes-registered-successfully-for--1755240478665_1755240478666.txt +++ /dev/null @@ -1,202 +0,0 @@ - - -🔧 Using memory session store for development - -✅ All routes registered successfully for production - -🐳 Serving static files from: /app/dist/public - -🐳 PRODUCTION: LogiFlow serving on port 3000 - -HEAD /api/health 200 in 5ms - -📄 SPA: Serving index.html for /dashboard - -GET /api/user 401 in 1ms - -📄 SPA: Serving index.html for /auth - -GET /api/user 401 in 1ms - -GET /api/user 401 in 2ms - -GET /api/default-credentials-check 304 in 3ms - -🔐 comparePasswords: { - - supplied: 'HIDDEN', - - stored: '1c5b14cae257319aea80...', - - hasFormat: true - -} - -🔐 Password comparison result: true - -POST /api/login 200 in 60ms - -GET /api/user 304 in 8ms - -GET /api/user 304 in 21ms - -Customer Orders API called with: { groupIds: undefined, userRole: 'admin' } - -Customer Orders returned: 36 items - -GET /api/customer-orders 304 in 54ms - -📊 Calcul statistiques mensuelles: { - - year: 2025, - - month: 8, - - startDate: '2025-08-01', - - endDate: '2025-09-01', - - groupIds: undefined - -} - -📊 Statistiques calculées: { - - ordersCount: 18, - - deliveriesCount: 42, - - pendingOrdersCount: 6, - - averageDeliveryTime: 0.3611111111111111, - - totalPalettes: 120, - - totalPackages: 36 - -} - -GET /api/stats/monthly 304 in 126ms - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: undefined - -Fetching all deliveries - -Tasks API called with: { groupIds: undefined, userRole: 'admin' } - -🌤️ Fetching previous year weather data from API - -GET /api/user 304 in 161ms - -Tasks returned: 61 items - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - userRole: 'admin' - -} - -Admin filtering with groupIds: undefined - -Fetching all orders - -GET /api/tasks 304 in 247ms - -GET /api/publicities 304 in 260ms - -GET /api/dlc-products/stats 304 in 303ms - -🔗 PRODUCTION: getOrders() récupéré 49 commandes avec relations - -Orders returned: 49 items - -GET /api/orders 304 in 456ms - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - userRole: 'admin' - -} - -Admin filtering with groupIds: [ 1 ] - -Fetching all orders - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: [ 1 ] - -Fetching all deliveries - -GET /api/user 304 in 176ms - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -🔗 PRODUCTION: getDeliveries() récupéré 82 livraisons avec relations - -Deliveries returned: 82 items - -GET /api/deliveries 304 in 521ms - -🔗 PRODUCTION: getOrders() récupéré 31 commandes avec relations - -Orders returned: 31 items - -GET /api/orders 304 in 252ms - -🔗 PRODUCTION: getDeliveries() récupéré 44 livraisons avec relations - -Deliveries returned: 44 items - -GET /api/deliveries 304 in 261ms - -Customer Orders returned: 9 items - -GET /api/customer-orders 304 in 257ms - -GET /api/publicities 304 in 255ms - -GET /api/groups 304 in 40ms - -Weather API error for previous year: 401 - -GET /api/weather/current 304 in 765ms - diff --git a/attached_assets/Pasted--at-app-node-modules-pg-pool-index-js-45-11-at-process-processTicksAndRejection-1755508892611_1755508892611.txt b/attached_assets/Pasted--at-app-node-modules-pg-pool-index-js-45-11-at-process-processTicksAndRejection-1755508892611_1755508892611.txt deleted file mode 100644 index 87b8661..0000000 --- a/attached_assets/Pasted--at-app-node-modules-pg-pool-index-js-45-11-at-process-processTicksAndRejection-1755508892611_1755508892611.txt +++ /dev/null @@ -1,204 +0,0 @@ - - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getDlcProducts (file:///app/dist/index.js:2187:25) - - at async file:///app/dist/index.js:6178:28 { - - length: 124, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '337', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '3665', - - routine: 'errorMissingColumn' - -} - -GET /api/dlc-products 500 in 20ms - -GET /api/dlc-products/stats 200 in 10ms - -Error fetching DLC products: error: column dlc_products.stock_epuise does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getDlcProducts (file:///app/dist/index.js:2187:25) - - at async file:///app/dist/index.js:6178:28 { - - length: 124, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '337', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '3665', - - routine: 'errorMissingColumn' - -} - -GET /api/dlc-products 500 in 17ms - -Error fetching DLC products: error: column dlc_products.stock_epuise does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getDlcProducts (file:///app/dist/index.js:2187:25) - - at async file:///app/dist/index.js:6178:28 { - - length: 124, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '337', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '3665', - - routine: 'errorMissingColumn' - -} - -GET /api/dlc-products 500 in 12ms - -Error fetching DLC products: error: column dlc_products.stock_epuise does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getDlcProducts (file:///app/dist/index.js:2187:25) - - at async file:///app/dist/index.js:6178:28 { - - length: 124, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '337', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '3665', - - routine: 'errorMissingColumn' - -} - -GET /api/dlc-products 500 in 9ms - - - \ No newline at end of file diff --git a/attached_assets/Pasted--createdBy-admin-createdAt-2025-08-18T10-45-08-585Z-i-1757359684098_1757359684098.txt b/attached_assets/Pasted--createdBy-admin-createdAt-2025-08-18T10-45-08-585Z-i-1757359684098_1757359684098.txt deleted file mode 100644 index 5216072..0000000 --- a/attached_assets/Pasted--createdBy-admin-createdAt-2025-08-18T10-45-08-585Z-i-1757359684098_1757359684098.txt +++ /dev/null @@ -1,202 +0,0 @@ - - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -GET /api/dlc-products/stats 304 in 459ms - -🔍 [PRODUCTION] User search result: Found - -📢 [SERVER] Fetching announcements for user: admin_local environment: production - -🔍 [PRODUCTION] User search result: Not found - -❌ [PRODUCTION] User not found with username: admin_local - -🎯 [PRODUCTION] Found announcements: 2 - -GET /api/announcements 304 in 348ms - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -📋 API PUBLICITIES REQUEST: { - - year: '2025', - - filterYear: 2025, - - storeId: undefined, - - userRole: 'admin' - -} - -📋 CALLING storage.getPublicities: { filterYear: 2025, groupIds: undefined } - -GET /api/user 304 in 75ms - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -🔍 Admin deliveries filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all deliveries - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - userRole: 'admin' - -} - -🔍 Admin orders filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all orders - -📢 [SERVER] User found: { username: 'admin', role: 'admin' } - -🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table - -📋 PUBLICITES FETCHED: 29 résultats pour année 2025 - -🔍 PREMIERS RESULTATS: [ - - '1. N°2501 - Blanc', - - '2. N°2502 - Moins de 1€ 2€ 3€ 4€ 5€', - - '3. N°2503 - Imbattables' - -] - -Customer Orders returned: 11 items - -GET /api/customer-orders 304 in 53ms - -🔍 [PRODUCTION] Raw messages from DB: 2 items: [ - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -📋 PUBLICITIES RETURNED: { count: 29 } - -GET /api/publicities 304 in 223ms - -🔍 [PRODUCTION] User search result: Not found - -❌ [PRODUCTION] User not found with username: admin_local - -🔍 [PRODUCTION] User search result: Found - -🎯 [PRODUCTION] Found announcements: 2 - -🔗 PRODUCTION: getOrders() récupéré 64 commandes avec relations - -Orders returned: 64 items - -GET /api/announcements 304 in 189ms - -GET /api/orders 304 in 204ms - -🔗 PRODUCTION: getDeliveries() récupéré 82 livraisons avec relations - -Deliveries returned: 82 items - -GET /api/deliveries 304 in 225ms - -GET /api/groups 304 in 91ms - -GET /api/user 304 in 4ms - -GET /api/suppliers 304 in 7ms - -🔍 Avoirs API called with: { groupIds: [ 1 ], userRole: 'admin' } - -📋 Avoirs returned: 1 items - -GET /api/avoirs 304 in 10ms - -GET /api/user 304 in 5ms - diff --git a/attached_assets/Pasted--dbHost-logiflow-db-PRODUCTION-Using-standard-PostgreSQL-PostgreSQL-c-1755171899964_1755171899964.txt b/attached_assets/Pasted--dbHost-logiflow-db-PRODUCTION-Using-standard-PostgreSQL-PostgreSQL-c-1755171899964_1755171899964.txt deleted file mode 100644 index 93cdeb3..0000000 --- a/attached_assets/Pasted--dbHost-logiflow-db-PRODUCTION-Using-standard-PostgreSQL-PostgreSQL-c-1755171899964_1755171899964.txt +++ /dev/null @@ -1,201 +0,0 @@ - - - dbHost: 'logiflow-db' - -} - -🐳 PRODUCTION: Using standard PostgreSQL - -✅ PostgreSQL connection test successful - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db:5432' - -} - -✅ Using DatabaseStorage (production PostgreSQL) - -⏰ Automatic backup scheduled for 2:00 AM daily (native timer) - -🔍 Using development storage and authentication - -🐳 PRODUCTION: Starting LogiFlow application - -🐳 Environment: { NODE_ENV: 'production', DATABASE_URL: 'Present', PORT: '3000' } - -🔧 Registering all production routes... - -🔄 Running automatic production migrations... - -🔄 MIGRATION: Starting SAV production migrations... - -🔄 MIGRATION: Database URL configured: postgresql://logiflow_admin:Lo... - -✅ MIGRATION: Connected to PostgreSQL database - -🔄 MIGRATION: Checking if priority column exists... - -🔄 MIGRATION: Priority column check result: 1 - -✅ MIGRATION: Priority column already exists, skipping migration - -🔌 MIGRATION: Database connection closed - -🔧 Using memory session store for development - -Warning: connect.session() MemoryStore is not - -designed for a production environment, as it will leak - -memory, and will not scale past a single process. - -✅ All routes registered successfully for production - -🐳 Serving static files from: /app/dist/public - -🐳 PRODUCTION: LogiFlow serving on port 3000 - -HEAD /api/health 200 in 4ms - -📄 SPA: Serving index.html for /customer-orders - -GET /api/user 401 in 1ms - -📄 SPA: Serving index.html for /auth - -GET /api/user 401 in 1ms - -GET /api/user 401 in 1ms - -GET /api/default-credentials-check 304 in 4ms - -🔐 comparePasswords: { - - supplied: 'HIDDEN', - - stored: 'b23ec450a63faf3957a1...', - - hasFormat: true - -} - -🔐 Password comparison result: true - -POST /api/login 200 in 53ms - -GET /api/user 304 in 4ms - -GET /api/user 304 in 12ms - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - withBL: undefined, - - userRole: 'employee' - -} - -Non-admin filtering deliveries with groupIds: [ 2 ] - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - userRole: 'employee' - -} - -Non-admin filtering with groupIds: [ 2 ] - -GET /api/user 304 in 43ms - -📊 Calcul statistiques mensuelles: { - - year: 2025, - - month: 8, - - startDate: '2025-08-01', - - endDate: '2025-09-01', - - groupIds: [ 2 ] - -} - -GET /api/user 304 in 24ms - -Tasks API called with: { groupIds: [ 2 ], userRole: 'employee' } - -🔗 PRODUCTION: getOrders() récupéré 18 commandes avec relations - -Orders returned: 18 items - -GET /api/orders 304 in 221ms - -Customer Orders API called with: { groupIds: [ 2 ], userRole: 'employee' } - -GET /api/publicities 304 in 218ms - -GET /api/dlc-products/stats 304 in 216ms - -Customer Orders returned: 25 items - -GET /api/customer-orders 304 in 228ms - -Tasks returned: 9 items - -GET /api/tasks 304 in 220ms - -🔗 PRODUCTION: getDeliveries() récupéré 38 livraisons avec relations - -Deliveries returned: 38 items - -GET /api/deliveries 304 in 236ms - -📊 Statistiques calculées: { - - ordersCount: 8, - - deliveriesCount: 21, - - pendingOrdersCount: 4, - - averageDeliveryTime: 0.17647058823529413, - - totalPalettes: 57, - - totalPackages: 17 - -} - -GET /api/stats/monthly 304 in 246ms - -GET /api/groups 304 in 4ms - -GET /api/publicities 304 in 11ms - -GET /api/user 304 in 5ms - -GET /api/suppliers 304 in 8ms - -GET /api/user 304 in 3ms - -HEAD /api/health 200 in 1ms \ No newline at end of file diff --git a/attached_assets/Pasted--dbHost-logiflow-db-PRODUCTION-Using-standard-PostgreSQL-PostgreSQL-c-1755172118985_1755172118985.txt b/attached_assets/Pasted--dbHost-logiflow-db-PRODUCTION-Using-standard-PostgreSQL-PostgreSQL-c-1755172118985_1755172118985.txt deleted file mode 100644 index 5c088d4..0000000 --- a/attached_assets/Pasted--dbHost-logiflow-db-PRODUCTION-Using-standard-PostgreSQL-PostgreSQL-c-1755172118985_1755172118985.txt +++ /dev/null @@ -1,201 +0,0 @@ - - - dbHost: 'logiflow-db' - -} - -🐳 PRODUCTION: Using standard PostgreSQL - -✅ PostgreSQL connection test successful - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db:5432' - -} - -✅ Using DatabaseStorage (production PostgreSQL) - -⏰ Automatic backup scheduled for 2:00 AM daily (native timer) - -🔍 Using development storage and authentication - -🐳 PRODUCTION: Starting LogiFlow application - -🐳 Environment: { NODE_ENV: 'production', DATABASE_URL: 'Present', PORT: '3000' } - -🔧 Registering all production routes... - -🔄 Running automatic production migrations... - -🔄 MIGRATION: Starting SAV production migrations... - -🔄 MIGRATION: Database URL configured: postgresql://logiflow_admin:Lo... - -✅ MIGRATION: Connected to PostgreSQL database - -🔄 MIGRATION: Checking if priority column exists... - -🔄 MIGRATION: Priority column check result: 1 - -✅ MIGRATION: Priority column already exists, skipping migration - -🔌 MIGRATION: Database connection closed - -🔧 Using memory session store for development - -Warning: connect.session() MemoryStore is not - -designed for a production environment, as it will leak - -memory, and will not scale past a single process. - -✅ All routes registered successfully for production - -🐳 Serving static files from: /app/dist/public - -🐳 PRODUCTION: LogiFlow serving on port 3000 - -HEAD /api/health 200 in 4ms - -📄 SPA: Serving index.html for /customer-orders - -GET /api/user 401 in 1ms - -📄 SPA: Serving index.html for /auth - -GET /api/user 401 in 3ms - -GET /api/user 401 in 1ms - -GET /api/default-credentials-check 304 in 2ms - -🔐 comparePasswords: { - - supplied: 'HIDDEN', - - stored: 'b23ec450a63faf3957a1...', - - hasFormat: true - -} - -🔐 Password comparison result: true - -POST /api/login 200 in 62ms - -GET /api/user 304 in 5ms - -GET /api/user 304 in 12ms - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - withBL: undefined, - - userRole: 'employee' - -} - -Non-admin filtering deliveries with groupIds: [ 2 ] - -📊 Calcul statistiques mensuelles: { - - year: 2025, - - month: 8, - - startDate: '2025-08-01', - - endDate: '2025-09-01', - - groupIds: [ 2 ] - -} - -GET /api/publicities 304 in 179ms - -Tasks API called with: { groupIds: [ 2 ], userRole: 'employee' } - -Customer Orders API called with: { groupIds: [ 2 ], userRole: 'employee' } - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - userRole: 'employee' - -} - -Non-admin filtering with groupIds: [ 2 ] - -GET /api/user 304 in 126ms - -📊 Statistiques calculées: { - - ordersCount: 8, - - deliveriesCount: 21, - - pendingOrdersCount: 4, - - averageDeliveryTime: 0.17647058823529413, - - totalPalettes: 57, - - totalPackages: 17 - -} - -Tasks returned: 9 items - -GET /api/stats/monthly 304 in 227ms - -GET /api/dlc-products/stats 304 in 206ms - -GET /api/tasks 304 in 203ms - -Customer Orders returned: 25 items - -GET /api/customer-orders 304 in 235ms - -🔗 PRODUCTION: getDeliveries() récupéré 38 livraisons avec relations - -Deliveries returned: 38 items - -GET /api/deliveries 304 in 281ms - -🔗 PRODUCTION: getOrders() récupéré 18 commandes avec relations - -Orders returned: 18 items - -GET /api/orders 304 in 300ms - -GET /api/user 304 in 8ms - -GET /api/publicities 304 in 25ms - -GET /api/groups 304 in 4ms - -GET /api/user 304 in 4ms - -GET /api/suppliers 304 in 7ms - -GET /api/user 304 in 3ms - -HEAD /api/health 200 in 1ms \ No newline at end of file diff --git a/attached_assets/Pasted--dbHost-logiflow-db-PRODUCTION-Using-standard-PostgreSQL-PostgreSQL-c-1756892354894_1756892354895.txt b/attached_assets/Pasted--dbHost-logiflow-db-PRODUCTION-Using-standard-PostgreSQL-PostgreSQL-c-1756892354894_1756892354895.txt deleted file mode 100644 index 386191f..0000000 --- a/attached_assets/Pasted--dbHost-logiflow-db-PRODUCTION-Using-standard-PostgreSQL-PostgreSQL-c-1756892354894_1756892354895.txt +++ /dev/null @@ -1,195 +0,0 @@ - - - dbHost: 'logiflow-db' - -} - -🐳 PRODUCTION: Using standard PostgreSQL - -✅ PostgreSQL connection test successful - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db:5432' - -} - -✅ Using DatabaseStorage (production PostgreSQL) - -⏰ Automatic backup scheduled for daily 2:00 AM+ (native timer) - -file:///app/dist/index.js:11 - - throw Error('Dynamic require of "' + x2 + '" is not supported'); - - - -^ - -Error: Dynamic require of "stream" is not supported - - at file:///app/dist/index.js:11:9 - - at node_modules/busboy/lib/types/multipart.js (file:///app/dist/index.js:7398:34) - - at __require2 (file:///app/dist/index.js:17:50) - - at node_modules/busboy/lib/index.js (file:///app/dist/index.js:9024:7) - - at __require2 (file:///app/dist/index.js:17:50) - - at file:///app/dist/index.js:25027:29 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - -Node.js v20.19.4 - -Applying DLC migration... - -NOTICE: column "stock_epuise" of relation "dlc_products" already exists, skipping - -NOTICE: column "stock_epuise_by" of relation "dlc_products" already exists, skipping - -NOTICE: column "stock_epuise_at" of relation "dlc_products" already exists, skipping - -NOTICE: relation "idx_dlc_products_stock_epuise" already exists, skipping - -ALTER TABLE - - CREATE INDEX - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db' - -} - -🐳 PRODUCTION: Using standard PostgreSQL - -✅ PostgreSQL connection test successful - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db:5432' - -} - -✅ Using DatabaseStorage (production PostgreSQL) - -⏰ Automatic backup scheduled for daily 2:00 AM+ (native timer) - -file:///app/dist/index.js:11 - - throw Error('Dynamic require of "' + x2 + '" is not supported'); - - - -^ - -Error: Dynamic require of "stream" is not supported - - at file:///app/dist/index.js:11:9 - - at node_modules/busboy/lib/types/multipart.js (file:///app/dist/index.js:7398:34) - - at __require2 (file:///app/dist/index.js:17:50) - - at node_modules/busboy/lib/index.js (file:///app/dist/index.js:9024:7) - - at __require2 (file:///app/dist/index.js:17:50) - - at file:///app/dist/index.js:25027:29 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - -Node.js v20.19.4 - -Applying DLC migration... - -NOTICE: column "stock_epuise" of relation "dlc_products" already exists, skipping - -NOTICE: column "stock_epuise_by" of relation "dlc_products" already exists, skipping - -NOTICE: column "stock_epuise_at" of relation "dlc_products" already exists, skipping - -NOTICE: relation "idx_dlc_products_stock_epuise" already exists, skipping - -ALTER TABLE - - CREATE INDEX - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db' - -} - -🐳 PRODUCTION: Using standard PostgreSQL - -✅ PostgreSQL connection test successful - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db:5432' - -} - -✅ Using DatabaseStorage (production PostgreSQL) - -⏰ Automatic backup scheduled for daily 2:00 AM+ (native timer) - -file:///app/dist/index.js:11 - - throw Error('Dynamic require of "' + x2 + '" is not supported'); - - - -^ - -Error: Dynamic require of "stream" is not supported - - at file:///app/dist/index.js:11:9 - - at node_modules/busboy/lib/types/multipart.js (file:///app/dist/index.js:7398:34) - - at __require2 (file:///app/dist/index.js:17:50) - - at node_modules/busboy/lib/index.js (file:///app/dist/index.js:9024:7) - - at __require2 (file:///app/dist/index.js:17:50) - - at file:///app/dist/index.js:25027:29 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - -Node.js v20.19.4 \ No newline at end of file diff --git a/attached_assets/Pasted--endDate-2025-09-30-storeId-1-userRole-manager-Non-admin--1756903879290_1756903879290.txt b/attached_assets/Pasted--endDate-2025-09-30-storeId-1-userRole-manager-Non-admin--1756903879290_1756903879290.txt deleted file mode 100644 index 41ce639..0000000 --- a/attached_assets/Pasted--endDate-2025-09-30-storeId-1-userRole-manager-Non-admin--1756903879290_1756903879290.txt +++ /dev/null @@ -1,204 +0,0 @@ - - - endDate: '2025-09-30', - - storeId: '1', - - userRole: 'manager' - -} - -🔍 Non-admin orders - filtering by accessible store: { userId: '_1754943032954', role: 'manager', requestedStoreId: 1 } - -Deliveries API called with: { - - startDate: '2025-09-01', - - endDate: '2025-09-30', - - storeId: '1', - - withBL: undefined, - - userRole: 'manager' - -} - -🔍 Non-admin deliveries - filtering by accessible store: { userId: '_1754943032954', role: 'manager', requestedStoreId: 1 } - -📋 API PUBLICITIES REQUEST: { - - year: '2025', - - filterYear: 2025, - - storeId: undefined, - - userRole: 'manager' - -} - -📋 CALLING storage.getPublicities: { filterYear: 2025, groupIds: [ 1 ] } - -📋 PUBLICITES FETCHED: 29 résultats pour année 2025 - -🔍 PREMIERS RESULTATS: [ - - '1. N°2501 - Blanc', - - '2. N°2502 - Moins de 1€ 2€ 3€ 4€ 5€', - - '3. N°2503 - Imbattables' - -] - -📋 PUBLICITIES RETURNED: { count: 29 } - -GET /api/publicities 304 in 22ms - -📊 Statistiques calculées: { - - ordersCount: 12, - - deliveriesCount: 10, - - pendingOrdersCount: 10, - - averageDeliveryTime: 3.6666666666666665, - - totalPalettes: 29, - - totalPackages: 3 - -} - -GET /api/stats/monthly 200 in 31ms - -Orders returned: 12 items - -GET /api/orders 200 in 33ms - -Deliveries returned: 10 items - -GET /api/deliveries 304 in 34ms - -GET /api/user 304 in 5ms - -GET /api/user 304 in 3ms - -HEAD /api/health 200 in 1ms - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - userRole: 'manager' - -} - -🔍 Manager orders - using assigned store automatically: { - - userId: '_1754943032954', - - role: 'manager', - - assignedStore: 1, - - allUserGroups: [ 1 ] - -} - -GET /api/suppliers 200 in 8ms - -GET /api/user 304 in 9ms - -🔗 PRODUCTION: getOrders() récupéré 56 commandes avec relations - -Orders returned: 56 items - -GET /api/orders 304 in 84ms - -HEAD /api/health 200 in 1ms - -HEAD /api/health 200 in 0ms - -HEAD /api/health 200 in 0ms - -HEAD /api/health 200 in 1ms - -🔍 BAP: Requête reçue { - - hasUser: true, - - userType: 'object', - - hasClaims: false, - - hasId: true, - - bodyKeys: [ 'pdfBase64', 'fileName', 'recipient' ] - -} - -🔍 BAP: User ID extracted: admin_local - -🔍 BAP: User found: { id: 'admin_local', role: 'admin' } - -📤 BAP: Envoi webhook n8n { - - recipient: 'Prissela', - - fileName: '20250903_113707.pdf', - - fileSize: 344773, - - userId: 'admin_local' - -} - -✅ BAP: Payload JSON préparé { - - recipient: 'Prissela', - - fileName: '20250903_113707.pdf', - - fileSize: 344773 - -} - -🌐 BAP: Envoi vers webhook n8n... - -🌐 BAP: Réponse webhook reçue { status: 404, ok: false } - -❌ BAP: Erreur webhook { - - status: 404, - - errorText: '{"code":404,"message":"This webhook is not registered for POST requests. Did you mean to make a GET request?"}' - -} - -❌ BAP: Erreur complète: { - - name: 'Error', - - message: 'Erreur webhook: 404 Not Found', - - stack: 'Error: Erreur webhook: 404 Not Found\n' + - - ' at file:///app/dist/index.js:12408:15\n' + - - ' at process.processTicksAndRejections (node:internal/process/task_queues:95:5)' - -} - -POST /api/bap/send-webhook 500 in 41ms - -HEAD /api/health 200 in 1ms - - - \ No newline at end of file diff --git a/attached_assets/Pasted--exists-true-invoiceAmount-1203-12-dueDate-null-INVOICE-R-su-1762238028208_1762238028209.txt b/attached_assets/Pasted--exists-true-invoiceAmount-1203-12-dueDate-null-INVOICE-R-su-1762238028208_1762238028209.txt deleted file mode 100644 index 38576eb..0000000 --- a/attached_assets/Pasted--exists-true-invoiceAmount-1203-12-dueDate-null-INVOICE-R-su-1762238028208_1762238028209.txt +++ /dev/null @@ -1,202 +0,0 @@ - - - exists: true, - - invoiceAmount: '1203.12', - - dueDate: null - -} - -✅ [INVOICE] Résultat depuis cache: { - - exists: true, - - matchType: 'invoice_reference', - - errorMessage: null, - - invoiceReference: '000752796', - - supplierName: 'CMP', - - invoiceAmount: 1203.12, - - dueDate: null, - - fromCache: true, - - permanent: true - -} - -🔍 [INVOICE] Début vérification facture: { invoiceReference: '22529151', groupId: 1, forceRefresh: false } - -🔍 [INVOICE] Vérification cache... - -🔍 [CACHE] Recherche cache pour: { invoiceReference: '22529151', groupId: 1, cacheKey: '1_22529151' } - -✅ [DATABASE-CACHE] Cache hit pour: { - - cacheKey: '1_22529151', - - expires: 2075-11-04T06:31:09.789Z, - - hoursRemaining: 438288 - -} - -🔍 [CACHE] Résultat cache: { - - found: true, - - isReconciled: true, - - expired: false, - - expiresAt: 2075-11-04T06:31:09.789Z, - - currentTime: '2025-11-04T06:32:28.367Z' - -} - -🛡️ [CACHE] PERMANENT - Facture validée avec coche verte, AUCUNE vérification: { - - invoiceReference: '22529151', - - groupId: 1, - - exists: true, - - invoiceAmount: '2653.75', - - dueDate: null - -} - -✅ [INVOICE] Résultat depuis cache: { - - exists: true, - - matchType: 'invoice_reference', - - errorMessage: null, - - invoiceReference: '22529151', - - supplierName: 'Sovacom', - - invoiceAmount: 2653.75, - - dueDate: null, - - fromCache: true, - - permanent: true - -} - -🔍 [INVOICE] Début vérification facture: { invoiceReference: 'FCLT035833', groupId: 1, forceRefresh: false } - -🔍 [INVOICE] Vérification cache... - -🔍 [CACHE] Recherche cache pour: { - - invoiceReference: 'FCLT035833', - - groupId: 1, - - cacheKey: '1_fclt035833' - -} - -✅ [DATABASE-CACHE] Cache hit pour: { - - cacheKey: '1_fclt035833', - - expires: 2075-11-04T06:31:09.767Z, - - hoursRemaining: 438288 - -} - -🔍 [CACHE] Résultat cache: { - - found: true, - - isReconciled: true, - - expired: false, - - expiresAt: 2075-11-04T06:31:09.767Z, - - currentTime: '2025-11-04T06:32:28.368Z' - -} - -🛡️ [CACHE] PERMANENT - Facture validée avec coche verte, AUCUNE vérification: { - - invoiceReference: 'FCLT035833', - - groupId: 1, - - exists: true, - - invoiceAmount: '1307.26', - - dueDate: null - -} - -✅ [INVOICE] Résultat depuis cache: { - - exists: true, - - matchType: 'invoice_reference', - - errorMessage: null, - - invoiceReference: 'FCLT035833', - - supplierName: 'Idvpc', - - invoiceAmount: 1307.26, - - dueDate: null, - - fromCache: true, - - permanent: true - -} - -📅 Total échéances retournées: 32 - -GET /api/payment-schedule 200 in 340ms - -GET /api/user 304 in 4ms - -GET /api/user 304 in 4ms - -GET /api/utilities 304 in 5ms - -GET /api/backups 304 in 6ms - -🔧 [SQL-EXECUTOR] Début exécution SQL pour admin: admin_local - -🔧 [SQL-EXECUTOR] Query: SELECT column_name - -FROM information_schema.columns - -WHERE table_name = 'deliveries' - -AND column_name = 'due_date';... - -✅ [SQL-EXECUTOR] Exécution réussie - -POST /api/admin/execute-sql 200 in 23ms - -HEAD /api/health 200 in 1ms - -HEAD /api/health 200 in 1ms - diff --git a/attached_assets/Pasted--hasFormat-true-Password-comparison-result-true-POST-api-login-200-in-86ms-GE-1755291651004_1755291651005.txt b/attached_assets/Pasted--hasFormat-true-Password-comparison-result-true-POST-api-login-200-in-86ms-GE-1755291651004_1755291651005.txt deleted file mode 100644 index c793916..0000000 --- a/attached_assets/Pasted--hasFormat-true-Password-comparison-result-true-POST-api-login-200-in-86ms-GE-1755291651004_1755291651005.txt +++ /dev/null @@ -1,200 +0,0 @@ - - hasFormat: true - -} - -🔐 Password comparison result: true - -POST /api/login 200 in 86ms - -GET /api/user 200 in 12ms - -GET /api/user 304 in 20ms - -Customer Orders API called with: { groupIds: undefined, userRole: 'admin' } - -Customer Orders returned: 37 items - -GET /api/customer-orders 200 in 89ms - -🗓️ [DATE-CALC] Aujourd'hui: 2025-08-15 (Vendredi) - -🗓️ [DATE-CALC] Année précédente: 2024-08-16 (Vendredi) - -📊 Calcul statistiques mensuelles: { - - year: 2025, - - month: 8, - - startDate: '2025-08-01', - - endDate: '2025-09-01', - - groupIds: undefined - -} - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - userRole: 'admin' - -} - -Admin filtering with groupIds: undefined - -Fetching all orders - -🌤️ [RESPONSE] Weather data prepared: { - - hasCurrentYear: true, - - hasPreviousYear: true, - - location: 'Frouard, France' - -} - -GET /api/publicities 304 in 152ms - -GET /api/user 304 in 129ms - -GET /api/weather/current 304 in 177ms - -🔍 Tasks API called with: { - - groupIds: undefined, - - userRole: 'admin', - - userId: 'admin_local', - - requestedStoreId: undefined, - - userGroups: 'all' - -} - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: undefined - -Fetching all deliveries - -📋 Tasks returned: 55 items for user: admin_local - -GET /api/tasks 200 in 324ms - -GET /api/dlc-products/stats 200 in 332ms - -🔗 PRODUCTION: getDeliveries() récupéré 86 livraisons avec relations - -Deliveries returned: 86 items - -GET /api/deliveries 200 in 511ms - -🔗 PRODUCTION: getOrders() récupéré 51 commandes avec relations - -Orders returned: 51 items - -GET /api/orders 200 in 523ms - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -GET /api/user 304 in 156ms - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: [ 1 ] - -Fetching all deliveries - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - userRole: 'admin' - -} - -Admin filtering with groupIds: [ 1 ] - -Fetching all orders - -📊 Statistiques calculées: { - - ordersCount: 20, - - deliveriesCount: 42, - - pendingOrdersCount: 8, - - averageDeliveryTime: 0.3611111111111111, - - totalPalettes: 120, - - totalPackages: 36 - -} - -GET /api/stats/monthly 200 in 542ms - -GET /api/publicities 304 in 153ms - -Customer Orders returned: 9 items - -GET /api/customer-orders 304 in 136ms - -🔗 PRODUCTION: getDeliveries() récupéré 48 livraisons avec relations - -Deliveries returned: 48 items - -GET /api/deliveries 304 in 202ms - -🔗 PRODUCTION: getOrders() récupéré 33 commandes avec relations - -Orders returned: 33 items - -GET /api/orders 304 in 275ms - -GET /api/groups 200 in 74ms - -GET /api/user 304 in 10ms - -GET /api/suppliers 304 in 7ms - -GET /api/dlc-products 304 in 37ms \ No newline at end of file diff --git a/attached_assets/Pasted--id-8-title-Bon-de-Livraison-content-Lorsque-vous-rentrez--1756908220041_1756908220042.txt b/attached_assets/Pasted--id-8-title-Bon-de-Livraison-content-Lorsque-vous-rentrez--1756908220041_1756908220042.txt deleted file mode 100644 index f1d90b7..0000000 --- a/attached_assets/Pasted--id-8-title-Bon-de-Livraison-content-Lorsque-vous-rentrez--1756908220041_1756908220042.txt +++ /dev/null @@ -1,201 +0,0 @@ - - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Not found - -🎯 [PRODUCTION] Found announcements: 2 - -❌ [PRODUCTION] User not found with username: admin_local - -GET /api/announcements 304 in 103ms - -Customer Orders returned: 7 items - -GET /api/customer-orders 304 in 108ms - -🔗 PRODUCTION: getDeliveries() récupéré 72 livraisons avec relations - -Deliveries returned: 72 items - -GET /api/deliveries 304 in 171ms - -GET /api/groups 304 in 109ms - -GET /api/user 304 in 4ms - -GET /api/user 304 in 6ms - -GET /api/backups 304 in 8ms - -⚠️ Table webhook_bap_config n'existe pas, retour config par défaut - -GET /api/webhook-bap-config 304 in 7ms - -❌ Erreur récupération config webhook BAP: error: relation "webhook_bap_config" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getWebhookBapConfig (file:///app/dist/index.js:2815:26) - - at async file:///app/dist/index.js:12402:22 { - - length: 117, - - severity: 'ERROR', - - code: '42P01', - - detail: undefined, - - hint: undefined, - - position: '97', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '1392', - - routine: 'parserOpenTable' - -} - -HEAD /api/health 200 in 1ms - -🔍 Test webhook BAP: { - - url: 'https://workflow.ffnancy.fr/webhook-test/a3d03176-b72f-412d-8fb9-f920b9fbab4d' - -} - -🌐 Réponse test webhook: { status: 404, ok: false } - -POST /api/webhook-bap-config/test 500 in 86ms - -❌ Erreur test webhook BAP: Error: HTTP 404: Not Found - - at file:///app/dist/index.js:12481:15 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - -🔍 Test webhook BAP: { - - url: 'https://workflow.ffnancy.fr/webhook-test/a3d03176-b72f-412d-8fb9-f920b9fbab4d' - -} - -🌐 Réponse test webhook: { status: 500, ok: false } - -❌ Erreur test webhook BAP: Error: HTTP 500: Internal Server Error - - at file:///app/dist/index.js:12481:15 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - -POST /api/webhook-bap-config/test 500 in 72ms - -HEAD /api/health 200 in 0ms - -❌ Erreur sauvegarde config webhook BAP: error: relation "webhook_bap_config" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getWebhookBapConfig (file:///app/dist/index.js:2815:26) - - at async file:///app/dist/index.js:12431:30 { - - length: 117, - - severity: 'ERROR', - - code: '42P01', - - detail: undefined, - - hint: undefined, - - position: '97', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '1392', - - routine: 'parserOpenTable' - -} - -POST /api/webhook-bap-config 500 in 6ms - -HEAD /api/health 200 in 1ms - -HEAD /api/health 200 in 0ms - -HEAD /api/health 200 in 0ms - -HEAD /api/health 200 in 1ms \ No newline at end of file diff --git a/attached_assets/Pasted--isProduction-true-hasDbUrl-true-dbHost-logiflow-db-5432-Using-Dat-1755171652151_1755171652152.txt b/attached_assets/Pasted--isProduction-true-hasDbUrl-true-dbHost-logiflow-db-5432-Using-Dat-1755171652151_1755171652152.txt deleted file mode 100644 index d7e43b7..0000000 --- a/attached_assets/Pasted--isProduction-true-hasDbUrl-true-dbHost-logiflow-db-5432-Using-Dat-1755171652151_1755171652152.txt +++ /dev/null @@ -1,201 +0,0 @@ - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db:5432' - -} - -✅ Using DatabaseStorage (production PostgreSQL) - -⏰ Automatic backup scheduled for 2:00 AM daily (native timer) - -🔍 Using development storage and authentication - -🐳 PRODUCTION: Starting LogiFlow application - -🐳 Environment: { NODE_ENV: 'production', DATABASE_URL: 'Present', PORT: '3000' } - -🔧 Registering all production routes... - -🔄 Running automatic production migrations... - -🔄 MIGRATION: Starting SAV production migrations... - -🔄 MIGRATION: Database URL configured: postgresql://logiflow_admin:Lo... - -✅ MIGRATION: Connected to PostgreSQL database - -🔄 MIGRATION: Checking if priority column exists... - -🔄 MIGRATION: Priority column check result: 1 - -✅ MIGRATION: Priority column already exists, skipping migration - -🔌 MIGRATION: Database connection closed - -🔧 Using memory session store for development - -Warning: connect.session() MemoryStore is not - -designed for a production environment, as it will leak - -memory, and will not scale past a single process. - -✅ All routes registered successfully for production - -🐳 Serving static files from: /app/dist/public - -🐳 PRODUCTION: LogiFlow serving on port 3000 - -HEAD /api/health 200 in 5ms - -HEAD /api/health 200 in 0ms - -HEAD /api/health 200 in 1ms - -HEAD /api/health 200 in 1ms - -HEAD /api/health 200 in 1ms - -HEAD /api/health 200 in 0ms - -HEAD /api/health 200 in 1ms - -📄 SPA: Serving index.html for /sav - -GET /api/user 401 in 1ms - -📄 SPA: Serving index.html for /auth - -GET /api/user 401 in 1ms - -GET /api/user 401 in 1ms - -GET /api/default-credentials-check 304 in 22ms - -🔐 comparePasswords: { - - supplied: 'HIDDEN', - - stored: 'b23ec450a63faf3957a1...', - - hasFormat: true - -} - -🔐 Password comparison result: true - -POST /api/login 200 in 53ms - -GET /api/user 200 in 5ms - -GET /api/user 304 in 11ms - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - withBL: undefined, - - userRole: 'employee' - -} - -Non-admin filtering deliveries with groupIds: [ 2 ] - -📊 Calcul statistiques mensuelles: { - - year: 2025, - - month: 8, - - startDate: '2025-08-01', - - endDate: '2025-09-01', - - groupIds: [ 2 ] - -} - -GET /api/user 304 in 85ms - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - userRole: 'employee' - -} - -Non-admin filtering with groupIds: [ 2 ] - -Customer Orders API called with: { groupIds: [ 2 ], userRole: 'employee' } - -Tasks API called with: { groupIds: [ 2 ], userRole: 'employee' } - -GET /api/publicities 304 in 179ms - -🔗 PRODUCTION: getDeliveries() récupéré 38 livraisons avec relations - -Deliveries returned: 38 items - -GET /api/dlc-products/stats 200 in 186ms - -GET /api/deliveries 200 in 194ms - -Customer Orders returned: 25 items - -Tasks returned: 9 items - -GET /api/customer-orders 200 in 249ms - -GET /api/tasks 200 in 241ms - -📊 Statistiques calculées: { - - ordersCount: 8, - - deliveriesCount: 21, - - pendingOrdersCount: 4, - - averageDeliveryTime: 0.17647058823529413, - - totalPalettes: 57, - - totalPackages: 17 - -} - -GET /api/stats/monthly 200 in 279ms - -🔗 PRODUCTION: getOrders() récupéré 18 commandes avec relations - -Orders returned: 18 items - -GET /api/orders 200 in 285ms - -GET /api/user 304 in 8ms - -GET /api/publicities 304 in 18ms - -GET /api/groups 200 in 5ms - -GET /api/user 304 in 3ms - -GET /api/suppliers 304 in 6ms - -GET /api/user 304 in 4ms - -HEAD /api/health 200 in 1ms - diff --git a/attached_assets/Pasted--matchType-none-errorMessage-Aucune-correspondance-trouv-e-dans-NocoDB-Erreur-1755091313055_1755091313055.txt b/attached_assets/Pasted--matchType-none-errorMessage-Aucune-correspondance-trouv-e-dans-NocoDB-Erreur-1755091313055_1755091313055.txt deleted file mode 100644 index 2cab408..0000000 --- a/attached_assets/Pasted--matchType-none-errorMessage-Aucune-correspondance-trouv-e-dans-NocoDB-Erreur-1755091313055_1755091313055.txt +++ /dev/null @@ -1,132 +0,0 @@ - matchType: 'none', - - errorMessage: 'Aucune correspondance trouvée dans NocoDB' - -} - -❌ Erreur réponse NocoDB: 404 Not Found - -❌ Erreur réponse NocoDB: 404 Not Found - -❌ Erreur réponse NocoDB: 404 Not Found - -✅ Résultat vérification: { - - exists: false, - - matchType: 'none', - - errorMessage: 'Aucune correspondance trouvée dans NocoDB' - -} - -✅ Résultat vérification: { - - exists: false, - - matchType: 'none', - - errorMessage: 'Aucune correspondance trouvée dans NocoDB' - -} - -❌ Erreur réponse NocoDB: 404 Not Found - -🔍 Recherche NocoDB: { - - url: 'https://nocodb.ffnancy.fr/api/v1/db/data/v1/pcg4uw79ukvycxc/CommandeF', - - column: 'Numero_BL', - - value: 'F5164434' - -} - -POST /api/deliveries/38/verify-invoice 200 in 162ms - -POST /api/deliveries/43/verify-invoice 200 in 167ms - -POST /api/deliveries/11/verify-invoice 200 in 156ms - -✅ Résultat vérification: { - - exists: false, - - matchType: 'none', - - errorMessage: 'Aucune correspondance trouvée dans NocoDB' - -} - -❌ Erreur réponse NocoDB: 404 Not Found - -POST /api/deliveries/33/verify-invoice 200 in 149ms - -❌ Erreur réponse NocoDB: 404 Not Found - -🔍 Recherche NocoDB: { - - url: 'https://nocodb.ffnancy.fr/api/v1/db/data/v1/pcg4uw79ukvycxc/CommandeF', - - column: 'Numero_BL', - - value: '37424' - -} - -❌ Erreur réponse NocoDB: 404 Not Found - -🔍 Recherche NocoDB: { - - url: 'https://nocodb.ffnancy.fr/api/v1/db/data/v1/pcg4uw79ukvycxc/CommandeF', - - column: 'Numero_BL', - - value: '000752796' - -} - -❌ Erreur réponse NocoDB: 404 Not Found - -✅ Résultat vérification: { - - exists: false, - - matchType: 'none', - - errorMessage: 'Aucune correspondance trouvée dans NocoDB' - -} - -POST /api/deliveries/38/verify-invoice 200 in 166ms - -❌ Erreur réponse NocoDB: 404 Not Found - -✅ Résultat vérification: { - - exists: false, - - matchType: 'none', - - errorMessage: 'Aucune correspondance trouvée dans NocoDB' - -} - -POST /api/deliveries/28/verify-invoice 200 in 154ms - -❌ Erreur réponse NocoDB: 404 Not Found - -✅ Résultat vérification: { - - exists: false, - - matchType: 'none', - - errorMessage: 'Aucune correspondance trouvée dans NocoDB' - -} - -POST /api/deliveries/27/verify-invoice 200 in 166ms - -HEAD /api/health 200 in 1ms - diff --git a/attached_assets/Pasted--ordersCount-32-deliveriesCount-37-pendingOrdersCount-24-averageDelivery-1757343526354_1757343526354.txt b/attached_assets/Pasted--ordersCount-32-deliveriesCount-37-pendingOrdersCount-24-averageDelivery-1757343526354_1757343526354.txt deleted file mode 100644 index d1376e4..0000000 --- a/attached_assets/Pasted--ordersCount-32-deliveriesCount-37-pendingOrdersCount-24-averageDelivery-1757343526354_1757343526354.txt +++ /dev/null @@ -1,201 +0,0 @@ - - ordersCount: 32, - - deliveriesCount: 37, - - pendingOrdersCount: 24, - - averageDeliveryTime: '5.7272727272727275 jours (commande → livraison, livraisons avec commande liée uniquement)', - - totalPalettes: 3009, - - totalPackages: 11 - -} - -📋 PUBLICITIES RETURNED: { count: 29 } - -GET /api/stats/monthly 304 in 571ms - -GET /api/publicities 304 in 60ms - -🔍 [PRODUCTION] Raw messages from DB: 2 items: [ - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -🔍 [PRODUCTION] User search result: Not found - -❌ [PRODUCTION] User not found with username: admin_local - -🔍 [PRODUCTION] User search result: Found - -🎯 [PRODUCTION] Found announcements: 2 - -GET /api/announcements 304 in 97ms - -GET /api/user 304 in 11ms - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -🔍 Admin deliveries filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all deliveries - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - userRole: 'admin' - -} - -🔍 Admin orders filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all orders - -📢 [SERVER] Fetching announcements for user: admin_local environment: production - -📢 [SERVER] User found: { username: 'admin', role: 'admin' } - -🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table - -🔍 [PRODUCTION] Raw messages from DB: 2 items: [ - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Not found - -❌ [PRODUCTION] User not found with username: admin_local - -🎯 [PRODUCTION] Found announcements: 2 - -GET /api/announcements 304 in 18ms - -Customer Orders returned: 11 items - -GET /api/customer-orders 304 in 25ms - -🔗 PRODUCTION: getDeliveries() récupéré 82 livraisons avec relations - -Deliveries returned: 82 items - -GET /api/deliveries 304 in 161ms - -GET /api/groups 304 in 103ms - -🔗 PRODUCTION: getOrders() récupéré 64 commandes avec relations - -Orders returned: 64 items - -GET /api/orders 304 in 217ms - -GET /api/user 304 in 5ms - -🔍 Avoirs API called with: { groupIds: undefined, userRole: 'admin' } - -GET /api/suppliers 304 in 8ms - -📋 Avoirs returned: 1 items - -GET /api/avoirs 304 in 14ms - diff --git a/attached_assets/Pasted--stack-error-column-is-reconciled-of-relation-invoice-verification-cache-does-not-ex-1757344252093_1757344252093.txt b/attached_assets/Pasted--stack-error-column-is-reconciled-of-relation-invoice-verification-cache-does-not-ex-1757344252093_1757344252093.txt deleted file mode 100644 index 8641156..0000000 --- a/attached_assets/Pasted--stack-error-column-is-reconciled-of-relation-invoice-verification-cache-does-not-ex-1757344252093_1757344252093.txt +++ /dev/null @@ -1,199 +0,0 @@ - - stack: 'error: column "is_reconciled" of relation "invoice_verification_cache" does not exist\n' + - - ' at /app/node_modules/pg-pool/index.js:45:11\n' + - - ' at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n' + - - ' at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22\n' + - - ' at async DatabaseStorage.createInvoiceVerificationCache (file:///app/dist/index.js:2409:27)\n' + - - ' at async InvoiceVerificationService.saveToCache (file:///app/dist/index.js:4863:30)\n' + - - ' at async InvoiceVerificationService.verifyInvoice (file:///app/dist/index.js:5073:15)\n' + - - ' at async file:///app/dist/index.js:13791:18' - -} - -✅ Résultat vérification: { - - exists: true, - - matchType: 'invoice_reference', - - invoiceReference: 'F5192259', - - invoiceAmount: 2268.24, - - supplierName: 'JJA Noel / Plein Air' - -} - -POST /api/deliveries/88/verify-invoice 200 in 4512ms - -POST /api/deliveries/88/verify-invoice 200 in 3587ms - -POST /api/deliveries/163/verify-invoice 200 in 3805ms - -✅ Résultat vérification: { - - exists: true, - - matchType: 'invoice_reference', - - invoiceReference: 'FCLT036018', - - invoiceAmount: 1141.28, - - supplierName: 'Idvpc' - -} - -POST /api/deliveries/139/verify-invoice 200 in 3670ms - -❌ Erreur création cache: error: column "is_reconciled" of relation "invoice_verification_cache" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.createInvoiceVerificationCache (file:///app/dist/index.js:2409:27) - - at async InvoiceVerificationService.saveToCache (file:///app/dist/index.js:4863:30) - - at async InvoiceVerificationService.verifyInvoice (file:///app/dist/index.js:5073:15) - - at async file:///app/dist/index.js:13791:18 { - - length: 153, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '183', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_target.c', - - line: '1075', - - routine: 'checkInsertTargets' - -} - -❌ [CACHE] Erreur sauvegarde cache: error: column "is_reconciled" of relation "invoice_verification_cache" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.createInvoiceVerificationCache (file:///app/dist/index.js:2409:27) - - at async InvoiceVerificationService.saveToCache (file:///app/dist/index.js:4863:30) - - at async InvoiceVerificationService.verifyInvoice (file:///app/dist/index.js:5073:15) - - at async file:///app/dist/index.js:13791:18 { - - length: 153, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '183', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_target.c', - - line: '1075', - - routine: 'checkInsertTargets' - -} - -❌ [CACHE] Détails erreur: { - - name: 'error', - - message: 'column "is_reconciled" of relation "invoice_verification_cache" does not exist', - - stack: 'error: column "is_reconciled" of relation "invoice_verification_cache" does not exist\n' + - - ' at /app/node_modules/pg-pool/index.js:45:11\n' + - - ' at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n' + - - ' at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22\n' + - - ' at async DatabaseStorage.createInvoiceVerificationCache (file:///app/dist/index.js:2409:27)\n' + - - ' at async InvoiceVerificationService.saveToCache (file:///app/dist/index.js:4863:30)\n' + - - ' at async InvoiceVerificationService.verifyInvoice (file:///app/dist/index.js:5073:15)\n' + - - ' at async file:///app/dist/index.js:13791:18' - -} - -DELETE /api/groups/3 200 in 47ms - -GET /api/groups 200 in 4ms - -GET /api/user 304 in 4ms - -🔍 Avoirs API called with: { groupIds: undefined, userRole: 'admin' } - -📋 Avoirs returned: 0 items - -GET /api/avoirs 200 in 10ms - -HEAD /api/health 200 in 1ms - -POST /api/avoirs 400 in 51ms - diff --git a/attached_assets/Pasted--startDate-2025-08-20-dueDate-2025-08-21-DatabaseStorage-updateTas-1755602534376_1755602534377.txt b/attached_assets/Pasted--startDate-2025-08-20-dueDate-2025-08-21-DatabaseStorage-updateTas-1755602534376_1755602534377.txt deleted file mode 100644 index d0720e5..0000000 --- a/attached_assets/Pasted--startDate-2025-08-20-dueDate-2025-08-21-DatabaseStorage-updateTas-1755602534376_1755602534377.txt +++ /dev/null @@ -1,200 +0,0 @@ - - - startDate: '2025-08-20', - - dueDate: '2025-08-21' - -} - -💾 DatabaseStorage.updateTask - Input: { - - taskId: 99, - - taskData: { - - title: 'test', - - description: 'test', - - priority: 'medium', - - status: 'pending', - - assignedTo: 'test', - - startDate: '2025-08-20', - - dueDate: '2025-08-21' - - }, - - dueDate: '2025-08-21', - - dueDateType: 'string', - - dueDateISO: '2025-08-21' - -} - -🧹 Cleaned data for database update: { - - title: 'test', - - description: 'test', - - priority: 'medium', - - status: 'pending', - - assignedTo: 'test', - - startDate: '2025-08-20', - - dueDate: '2025-08-21', - - updatedAt: 2025-08-19T11:21:56.027Z - -} - -❌ DatabaseStorage.updateTask - Database Error: { - - taskId: 99, - - error: 'value.toISOString is not a function', - - cleanData: { - - title: 'test', - - description: 'test', - - priority: 'medium', - - status: 'pending', - - assignedTo: 'test', - - startDate: '2025-08-20', - - dueDate: '2025-08-21', - - updatedAt: 2025-08-19T11:21:56.027Z - - } - -} - -file:///app/dist/index.js:6700 - - taskId: id, - - ^ - -ReferenceError: id is not defined - - at file:///app/dist/index.js:6700:17 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - -Node.js v20.19.4 - -Applying DLC migration... - -NOTICE: column "stock_epuise" of relation "dlc_products" already exists, skipping - -NOTICE: column "stock_epuise_by" of relation "dlc_products" already exists, skipping - -NOTICE: column "stock_epuise_at" of relation "dlc_products" already exists, skipping - -NOTICE: relation "idx_dlc_products_stock_epuise" already exists, skipping - -ALTER TABLE - - CREATE INDEX - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db' - -} - -🐳 PRODUCTION: Using standard PostgreSQL - -✅ PostgreSQL connection test successful - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db:5432' - -} - -✅ Using DatabaseStorage (production PostgreSQL) - -⏰ Automatic backup scheduled for 2:00 AM daily (native timer) - -🔍 Using development storage and authentication - -🐳 PRODUCTION: Starting LogiFlow application - -🐳 Environment: { NODE_ENV: 'production', DATABASE_URL: 'Present', PORT: '3000' } - -💾 [PRODUCTION] Backup service initialized for automatic daily backups - -🔧 Registering all production routes... - -🔄 Running automatic production migrations... - -🔄 MIGRATION: Starting SAV production migrations... - -🔄 MIGRATION: Database URL configured: postgresql://logiflow_admin:Lo... - -✅ MIGRATION: Connected to PostgreSQL database - -🔄 MIGRATION: Checking if priority column exists... - -🔄 MIGRATION: Priority column check result: 1 - -✅ MIGRATION: Priority column already exists, skipping migration - -🔌 MIGRATION: Database connection closed - -🌤️ [PRODUCTION] Initializing weather system... - -🌤️ [AUTO-CONFIG] Initializing weather configuration... - -✅ [AUTO-CONFIG] Weather settings already configured and active - -✅ [PRODUCTION] Weather system initialized - -🌍 Environment detected: production - -🔧 Using memory session store for development - -Warning: connect.session() MemoryStore is not - -designed for a production environment, as it will leak - -memory, and will not scale past a single process. - -✅ All routes registered successfully for production - -🐳 Serving static files from: /app/dist/public - -🐳 PRODUCTION: LogiFlow serving on port 3000 - -HEAD /api/health 200 in 8ms - - - \ No newline at end of file diff --git a/attached_assets/Pasted--storeId-null-createdBy-admin-createdAt-2025-08-18T10-45-08-585Z--1756908108277_1756908108278.txt b/attached_assets/Pasted--storeId-null-createdBy-admin-createdAt-2025-08-18T10-45-08-585Z--1756908108277_1756908108278.txt deleted file mode 100644 index 186d9ed..0000000 --- a/attached_assets/Pasted--storeId-null-createdBy-admin-createdAt-2025-08-18T10-45-08-585Z--1756908108277_1756908108278.txt +++ /dev/null @@ -1,201 +0,0 @@ - - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Not found - -🎯 [PRODUCTION] Found announcements: 2 - -❌ [PRODUCTION] User not found with username: admin_local - -GET /api/announcements 304 in 103ms - -Customer Orders returned: 7 items - -GET /api/customer-orders 304 in 108ms - -🔗 PRODUCTION: getDeliveries() récupéré 72 livraisons avec relations - -Deliveries returned: 72 items - -GET /api/deliveries 304 in 171ms - -GET /api/groups 304 in 109ms - -GET /api/user 304 in 4ms - -GET /api/user 304 in 6ms - -GET /api/backups 304 in 8ms - -⚠️ Table webhook_bap_config n'existe pas, retour config par défaut - -GET /api/webhook-bap-config 304 in 7ms - -❌ Erreur récupération config webhook BAP: error: relation "webhook_bap_config" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getWebhookBapConfig (file:///app/dist/index.js:2815:26) - - at async file:///app/dist/index.js:12402:22 { - - length: 117, - - severity: 'ERROR', - - code: '42P01', - - detail: undefined, - - hint: undefined, - - position: '97', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '1392', - - routine: 'parserOpenTable' - -} - -HEAD /api/health 200 in 1ms - -🔍 Test webhook BAP: { - - url: 'https://workflow.ffnancy.fr/webhook-test/a3d03176-b72f-412d-8fb9-f920b9fbab4d' - -} - -🌐 Réponse test webhook: { status: 404, ok: false } - -POST /api/webhook-bap-config/test 500 in 86ms - -❌ Erreur test webhook BAP: Error: HTTP 404: Not Found - - at file:///app/dist/index.js:12481:15 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - -🔍 Test webhook BAP: { - - url: 'https://workflow.ffnancy.fr/webhook-test/a3d03176-b72f-412d-8fb9-f920b9fbab4d' - -} - -🌐 Réponse test webhook: { status: 500, ok: false } - -❌ Erreur test webhook BAP: Error: HTTP 500: Internal Server Error - - at file:///app/dist/index.js:12481:15 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - -POST /api/webhook-bap-config/test 500 in 72ms - -HEAD /api/health 200 in 0ms - -❌ Erreur sauvegarde config webhook BAP: error: relation "webhook_bap_config" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getWebhookBapConfig (file:///app/dist/index.js:2815:26) - - at async file:///app/dist/index.js:12431:30 { - - length: 117, - - severity: 'ERROR', - - code: '42P01', - - detail: undefined, - - hint: undefined, - - position: '97', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '1392', - - routine: 'parserOpenTable' - -} - -POST /api/webhook-bap-config 500 in 6ms \ No newline at end of file diff --git a/attached_assets/Pasted--throw-Error-Dynamic-require-of-x-is-not-supported-Error-Dynamic-1755118786192_1755118786193.txt b/attached_assets/Pasted--throw-Error-Dynamic-require-of-x-is-not-supported-Error-Dynamic-1755118786192_1755118786193.txt deleted file mode 100644 index 5e3d97d..0000000 --- a/attached_assets/Pasted--throw-Error-Dynamic-require-of-x-is-not-supported-Error-Dynamic-1755118786192_1755118786193.txt +++ /dev/null @@ -1,197 +0,0 @@ - - throw Error('Dynamic require of "' + x + '" is not supported'); - - - -^ - -Error: Dynamic require of "events" is not supported - - at file:///app/dist/index.js:11:9 - - at node_modules/node-cron/dist/esm/tasks/inline-scheduled-task.js (file:///app/dist/index.js:3561:36) - - at __require2 (file:///app/dist/index.js:17:50) - - at node_modules/node-cron/dist/esm/node-cron.js (file:///app/dist/index.js:4042:35) - - at __require2 (file:///app/dist/index.js:17:50) - - at file:///app/dist/index.js:4502:32 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - -Node.js v20.19.4 - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db' - -} - -🐳 PRODUCTION: Using standard PostgreSQL - -✅ PostgreSQL connection test successful - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db:5432' - -} - -✅ Using DatabaseStorage (production PostgreSQL) - -file:///app/dist/index.js:11 - - throw Error('Dynamic require of "' + x + '" is not supported'); - - - -^ - -Error: Dynamic require of "events" is not supported - - at file:///app/dist/index.js:11:9 - - at node_modules/node-cron/dist/esm/tasks/inline-scheduled-task.js (file:///app/dist/index.js:3561:36) - - at __require2 (file:///app/dist/index.js:17:50) - - at node_modules/node-cron/dist/esm/node-cron.js (file:///app/dist/index.js:4042:35) - - at __require2 (file:///app/dist/index.js:17:50) - - at file:///app/dist/index.js:4502:32 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - -Node.js v20.19.4 - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db' - -} - -🐳 PRODUCTION: Using standard PostgreSQL - -✅ PostgreSQL connection test successful - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db:5432' - -} - -✅ Using DatabaseStorage (production PostgreSQL) - -file:///app/dist/index.js:11 - - throw Error('Dynamic require of "' + x + '" is not supported'); - - - -^ - -Error: Dynamic require of "events" is not supported - - at file:///app/dist/index.js:11:9 - - at node_modules/node-cron/dist/esm/tasks/inline-scheduled-task.js (file:///app/dist/index.js:3561:36) - - at __require2 (file:///app/dist/index.js:17:50) - - at node_modules/node-cron/dist/esm/node-cron.js (file:///app/dist/index.js:4042:35) - - at __require2 (file:///app/dist/index.js:17:50) - - at file:///app/dist/index.js:4502:32 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - -Node.js v20.19.4 - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db' - -} - -🐳 PRODUCTION: Using standard PostgreSQL - -✅ PostgreSQL connection test successful - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db:5432' - -} - -✅ Using DatabaseStorage (production PostgreSQL) - -file:///app/dist/index.js:11 - - throw Error('Dynamic require of "' + x + '" is not supported'); - - - -^ - -Error: Dynamic require of "events" is not supported - - at file:///app/dist/index.js:11:9 - - at node_modules/node-cron/dist/esm/tasks/inline-scheduled-task.js (file:///app/dist/index.js:3561:36) - - at __require2 (file:///app/dist/index.js:17:50) - - at node_modules/node-cron/dist/esm/node-cron.js (file:///app/dist/index.js:4042:35) - - at __require2 (file:///app/dist/index.js:17:50) - - at file:///app/dist/index.js:4502:32 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - -Node.js v20.19.4 - - - - - \ No newline at end of file diff --git a/attached_assets/Pasted--title-test-description-test-priority-medium-status-pend-1756807415020_1756807415020.txt b/attached_assets/Pasted--title-test-description-test-priority-medium-status-pend-1756807415020_1756807415020.txt deleted file mode 100644 index 45984de..0000000 --- a/attached_assets/Pasted--title-test-description-test-priority-medium-status-pend-1756807415020_1756807415020.txt +++ /dev/null @@ -1,200 +0,0 @@ - - title: 'test', - - description: 'test', - - priority: 'medium', - - status: 'pending', - - assignedTo: 'Non assigné', - - startDate: '2025-09-02', - - dueDate: '2025-09-03', - - groupId: 2, - - createdBy: 'admin_local' - - }, - - dueDate: '2025-09-03', - - dueDateType: 'string', - - dueDateValue: '2025-09-03' - -} - -💾 DatabaseStorage.createTask - Input: { - - taskData: { - - title: 'test', - - description: 'test', - - priority: 'medium', - - status: 'pending', - - assignedTo: 'Non assigné', - - startDate: '2025-09-02', - - dueDate: '2025-09-03', - - groupId: 2, - - createdBy: 'admin_local' - - }, - - dueDate: '2025-09-03', - - dueDateType: 'string', - - dueDateISO: '2025-09-03' - -} - -Error creating task: TypeError: value.toISOString is not a function - - at PgTimestamp.mapToDriverValue (file:///app/node_modules/drizzle-orm/pg-core/columns/timestamp.js:34:18) - - at file:///app/node_modules/drizzle-orm/sql/sql.js:131:73 - - at Array.map () - - at SQL.buildQueryFromSourceParams (file:///app/node_modules/drizzle-orm/sql/sql.js:73:32) - - at file:///app/node_modules/drizzle-orm/sql/sql.js:92:21 - - at Array.map () - - at SQL.buildQueryFromSourceParams (file:///app/node_modules/drizzle-orm/sql/sql.js:73:32) - - at file:///app/node_modules/drizzle-orm/sql/sql.js:95:21 - - at Array.map () - - at SQL.buildQueryFromSourceParams (file:///app/node_modules/drizzle-orm/sql/sql.js:73:32) - -POST /api/tasks 500 in 7ms - -📝 POST /api/tasks - Received data: { - - originalBody: { - - title: 'test', - - description: 'test', - - priority: 'medium', - - status: 'pending', - - assignedTo: 'Non assigné', - - startDate: '2025-09-03', - - dueDate: '2025-09-03', - - groupId: 2, - - createdBy: 'admin' - - }, - - processedData: { - - title: 'test', - - description: 'test', - - priority: 'medium', - - status: 'pending', - - assignedTo: 'Non assigné', - - startDate: '2025-09-03', - - dueDate: '2025-09-03', - - groupId: 2, - - createdBy: 'admin_local' - - }, - - dueDate: '2025-09-03', - - dueDateType: 'string', - - dueDateValue: '2025-09-03' - -} - -💾 DatabaseStorage.createTask - Input: { - - taskData: { - - title: 'test', - - description: 'test', - - priority: 'medium', - - status: 'pending', - - assignedTo: 'Non assigné', - - startDate: '2025-09-03', - - dueDate: '2025-09-03', - - groupId: 2, - - createdBy: 'admin_local' - - }, - - dueDate: '2025-09-03', - - dueDateType: 'string', - - dueDateISO: '2025-09-03' - -} - -Error creating task: TypeError: value.toISOString is not a function - - at PgTimestamp.mapToDriverValue (file:///app/node_modules/drizzle-orm/pg-core/columns/timestamp.js:34:18) - - at file:///app/node_modules/drizzle-orm/sql/sql.js:131:73 - - at Array.map () - - at SQL.buildQueryFromSourceParams (file:///app/node_modules/drizzle-orm/sql/sql.js:73:32) - - at file:///app/node_modules/drizzle-orm/sql/sql.js:92:21 - - at Array.map () - - at SQL.buildQueryFromSourceParams (file:///app/node_modules/drizzle-orm/sql/sql.js:73:32) - - at file:///app/node_modules/drizzle-orm/sql/sql.js:95:21 - - at Array.map () - - at SQL.buildQueryFromSourceParams (file:///app/node_modules/drizzle-orm/sql/sql.js:73:32) - -POST /api/tasks 500 in 6ms - -HEAD /api/health 200 in 0ms - -PUT /api/customer-orders/101 401 in 1ms - -PUT /api/customer-orders/100 401 in 1ms \ No newline at end of file diff --git a/attached_assets/Pasted--userRole-admin-Admin-filtering-with-groupIds-1-Fetching-all-orders-C-1755509679309_1755509679309.txt b/attached_assets/Pasted--userRole-admin-Admin-filtering-with-groupIds-1-Fetching-all-orders-C-1755509679309_1755509679309.txt deleted file mode 100644 index b375805..0000000 --- a/attached_assets/Pasted--userRole-admin-Admin-filtering-with-groupIds-1-Fetching-all-orders-C-1755509679309_1755509679309.txt +++ /dev/null @@ -1,196 +0,0 @@ - - userRole: 'admin' - -} - -Admin filtering with groupIds: [ 1 ] - -Fetching all orders - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: [ 1 ] - -Fetching all deliveries - -Customer Orders returned: 10 items - -GET /api/customer-orders 200 in 16ms - -🔗 PRODUCTION: getOrders() récupéré 33 commandes avec relations - -Orders returned: 33 items - -GET /api/orders 200 in 124ms - -🔗 PRODUCTION: getDeliveries() récupéré 49 livraisons avec relations - -Deliveries returned: 49 items - -GET /api/deliveries 200 in 140ms - -GET /api/groups 304 in 48ms - -GET /api/user 304 in 4ms - -GET /api/suppliers 304 in 9ms - -Error fetching DLC products: error: column dlc_products.stock_epuise does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getDlcProducts (file:///app/dist/index.js:2187:25) - - at async file:///app/dist/index.js:6178:28 { - - length: 124, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '337', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '3665', - - routine: 'errorMissingColumn' - -} - -GET /api/dlc-products 500 in 15ms - -GET /api/dlc-products 500 in 7ms - -Error fetching DLC products: error: column dlc_products.stock_epuise does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getDlcProducts (file:///app/dist/index.js:2187:25) - - at async file:///app/dist/index.js:6178:28 { - - length: 124, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '337', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '3665', - - routine: 'errorMissingColumn' - -} - -Error fetching DLC products: error: column dlc_products.stock_epuise does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getDlcProducts (file:///app/dist/index.js:2187:25) - - at async file:///app/dist/index.js:6178:28 { - - length: 124, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '337', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '3665', - - routine: 'errorMissingColumn' \ No newline at end of file diff --git a/attached_assets/Pasted-Actions-Deliveries-API-called-with-startDate-2025-08-01-endDate--1755165919712_1755165919712.txt b/attached_assets/Pasted-Actions-Deliveries-API-called-with-startDate-2025-08-01-endDate--1755165919712_1755165919712.txt deleted file mode 100644 index 50031fd..0000000 --- a/attached_assets/Pasted-Actions-Deliveries-API-called-with-startDate-2025-08-01-endDate--1755165919712_1755165919712.txt +++ /dev/null @@ -1,204 +0,0 @@ -Actions - - - - -Deliveries API called with: { - - startDate: '2025-08-01', - - endDate: '2025-08-31', - - storeId: '2', - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: [ 2 ] - -Fetching deliveries by date range: 2025-08-01 to 2025-08-31 - -Orders returned: 8 items - -GET /api/orders 304 in 170ms - -📊 Statistiques calculées: { - - ordersCount: 8, - - deliveriesCount: 21, - - pendingOrdersCount: 4, - - averageDeliveryTime: 0.17647058823529413, - - totalPalettes: 57, - - totalPackages: 17 - -} - -GET /api/stats/monthly 304 in 183ms - -GET /api/publicities 200 in 171ms - -Deliveries returned: 21 items - -GET /api/deliveries 304 in 186ms - -Orders returned: 10 items - -GET /api/orders 304 in 201ms - -GET /api/user 304 in 4ms - -GET /api/groups 304 in 10ms - -GET /api/publicities 200 in 15ms - -HEAD /api/health 200 in 1ms - -HEAD /api/health 200 in 1ms - -GET /api/user 304 in 42ms - -GET /api/groups 304 in 49ms - -Customer Orders API called with: { groupIds: undefined, userRole: 'admin' } - -GET /api/suppliers 304 in 52ms - -Customer Orders returned: 34 items - -GET /api/customer-orders 200 in 56ms - -Customer Orders API called with: { groupIds: [ 2 ], userRole: 'admin' } - -Customer Orders returned: 25 items - -GET /api/customer-orders 200 in 12ms - -HEAD /api/health 200 in 0ms - -HEAD /api/health 200 in 1ms - -GET /api/user 304 in 25ms - -GET /api/groups 304 in 26ms - -DLC Products API called with: { groupIds: [ 2 ], filters: {}, userRole: 'admin' } - -GET /api/suppliers 200 in 61ms - -GET /api/dlc-products/stats 304 in 66ms - -DLC Products returned: 154 items - -GET /api/dlc-products 200 in 81ms - -HEAD /api/health 200 in 1ms - -HEAD /api/health 200 in 1ms - -GET /api/user 304 in 20ms - -Tasks API called with: { groupIds: [ 2 ], userRole: 'admin' } - -Tasks returned: 9 items - -GET /api/tasks 304 in 11ms - -GET /api/users 200 in 137ms - -GET /api/user 304 in 3ms - -GET /api/groups 304 in 8ms - -GET /api/user 304 in 6ms - -GET /api/sav/stats 304 in 25ms - -GET /api/sav/tickets 304 in 30ms - -HEAD /api/health 200 in 1ms - -Error creating SAV ticket: ZodError: [ - - { - - "code": "invalid_type", - - "expected": "string", - - "received": "undefined", - - "path": [ - - "ticketNumber" - - ], - - "message": "Required" - - } - -] - - at get error [as error] (file:///app/node_modules/zod/v3/types.js:39:31) - - at ZodObject.parse (file:///app/node_modules/zod/v3/types.js:114:22) - - at file:///app/dist/index.js:6137:48 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { - - issues: [ - - { - - code: 'invalid_type', - - expected: 'string', - - received: 'undefined', - - path: [Array], - - message: 'Required' - - } - - ], - - addIssue: [Function (anonymous)], - - addIssues: [Function (anonymous)], - - errors: [ - - { - - code: 'invalid_type', - - expected: 'string', - - received: 'undefined', - - path: [Array], - - message: 'Required' - - } - - ] - -} - -POST /api/sav/tickets 400 in 36ms - -HEAD /api/health 200 in 0ms - -HEAD /api/health 200 in 1ms \ No newline at end of file diff --git a/attached_assets/Pasted-Actions-GET-api-dlc-products-stats-200-in-302ms-PRODUCTION-getOrders-r-c-1755345846330_1755345846331.txt b/attached_assets/Pasted-Actions-GET-api-dlc-products-stats-200-in-302ms-PRODUCTION-getOrders-r-c-1755345846330_1755345846331.txt deleted file mode 100644 index 5e81ce9..0000000 --- a/attached_assets/Pasted-Actions-GET-api-dlc-products-stats-200-in-302ms-PRODUCTION-getOrders-r-c-1755345846330_1755345846331.txt +++ /dev/null @@ -1,205 +0,0 @@ -Actions - - - - -GET /api/dlc-products/stats 200 in 302ms - -🔗 PRODUCTION: getOrders() récupéré 51 commandes avec relations - -Orders returned: 51 items - -GET /api/orders 200 in 434ms - -GET /api/groups 200 in 346ms - -🌤️ [RESPONSE] Weather data prepared: { - - hasCurrentYear: true, - - hasPreviousYear: true, - - location: 'Frouard, France' - -} - -GET /api/weather/current 200 in 446ms - -📊 Statistiques calculées: { - - ordersCount: 20, - - deliveriesCount: 42, - - pendingOrdersCount: 8, - - averageDeliveryTime: 0.3611111111111111, - - totalPalettes: 120, - - totalPackages: 36 - -} - -GET /api/stats/monthly 200 in 444ms - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - userRole: 'admin' - -} - -Admin filtering with groupIds: [ 1 ] - -Fetching all orders - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: [ 1 ] - -Fetching all deliveries - -🔗 PRODUCTION: getDeliveries() récupéré 86 livraisons avec relations - -Deliveries returned: 86 items - -GET /api/deliveries 200 in 455ms - -Customer Orders returned: 10 items - -GET /api/customer-orders 200 in 132ms - -🔗 PRODUCTION: getOrders() récupéré 33 commandes avec relations - -Orders returned: 33 items - -GET /api/orders 200 in 295ms - -🔗 PRODUCTION: getDeliveries() récupéré 48 livraisons avec relations - -Deliveries returned: 48 items - -GET /api/deliveries 200 in 248ms - -Error fetching announcements: error: relation "announcements" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getAnnouncements (file:///app/dist/index.js:2074:25) - - at async file:///app/dist/index.js:7420:30 { - - length: 113, - - severity: 'ERROR', - - code: '42P01', - - detail: undefined, - - hint: undefined, - - position: '829', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '1392', - - routine: 'parserOpenTable' - -} - -GET /api/announcements 500 in 7ms - -Error fetching announcements: error: relation "announcements" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getAnnouncements (file:///app/dist/index.js:2074:25) - - at async file:///app/dist/index.js:7420:30 { - - length: 113, - - severity: 'ERROR', - - code: '42P01', - - detail: undefined, - - hint: undefined, - - position: '829', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '1392', - - routine: 'parserOpenTable' - -} - -GET /api/announcements 500 in 11ms - -HEAD /api/health 200 in 1ms - diff --git a/attached_assets/Pasted-Actions-PUBLICITES-FETCHED-29-r-sultats-pour-ann-e-2025-PREMIERS-RESULTA-1757344536840_1757344536841.txt b/attached_assets/Pasted-Actions-PUBLICITES-FETCHED-29-r-sultats-pour-ann-e-2025-PREMIERS-RESULTA-1757344536840_1757344536841.txt deleted file mode 100644 index 4f610c2..0000000 --- a/attached_assets/Pasted-Actions-PUBLICITES-FETCHED-29-r-sultats-pour-ann-e-2025-PREMIERS-RESULTA-1757344536840_1757344536841.txt +++ /dev/null @@ -1,202 +0,0 @@ -Actions - - - - -📋 PUBLICITES FETCHED: 29 résultats pour année 2025 - -🔍 PREMIERS RESULTATS: [ - - '1. N°2501 - Blanc', - - '2. N°2502 - Moins de 1€ 2€ 3€ 4€ 5€', - - '3. N°2503 - Imbattables' - -] - -📋 PUBLICITIES RETURNED: { count: 29 } - -GET /api/publicities 304 in 65ms - -🔍 [PRODUCTION] Raw messages from DB: 2 items: [ - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Not found - -❌ [PRODUCTION] User not found with username: admin_local - -🎯 [PRODUCTION] Found announcements: 2 - -GET /api/announcements 304 in 79ms - -GET /api/user 304 in 3ms - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - userRole: 'admin' - -} - -🔍 Admin orders filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all orders - -📢 [SERVER] Fetching announcements for user: admin_local environment: production - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -🔍 Admin deliveries filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all deliveries - -🔗 PRODUCTION: getOrders() récupéré 64 commandes avec relations - -Orders returned: 64 items - -GET /api/orders 304 in 184ms - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -📢 [SERVER] User found: { username: 'admin', role: 'admin' } - -🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table - -Customer Orders returned: 11 items - -GET /api/customer-orders 304 in 211ms - -🔍 [PRODUCTION] Raw messages from DB: 2 items: [ - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -GET /api/groups 304 in 96ms - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Not found - -🎯 [PRODUCTION] Found announcements: 2 - -❌ [PRODUCTION] User not found with username: admin_local - -GET /api/announcements 304 in 243ms - -🔗 PRODUCTION: getDeliveries() récupéré 82 livraisons avec relations - -Deliveries returned: 82 items - -GET /api/deliveries 304 in 251ms - -GET /api/user 304 in 4ms - -GET /api/suppliers 304 in 8ms - -🔍 Avoirs API called with: { groupIds: undefined, userRole: 'admin' } - -📋 Avoirs returned: 0 items - -GET /api/avoirs 304 in 13ms - -POST /api/avoirs 400 in 6ms \ No newline at end of file diff --git a/attached_assets/Pasted-Actions-Using-DatabaseStorage-production-PostgreSQL-Automatic-backup-1756892066702_1756892066703.txt b/attached_assets/Pasted-Actions-Using-DatabaseStorage-production-PostgreSQL-Automatic-backup-1756892066702_1756892066703.txt deleted file mode 100644 index 9ef3c0e..0000000 --- a/attached_assets/Pasted-Actions-Using-DatabaseStorage-production-PostgreSQL-Automatic-backup-1756892066702_1756892066703.txt +++ /dev/null @@ -1,199 +0,0 @@ -Actions - - - - -} - -✅ Using DatabaseStorage (production PostgreSQL) - -⏰ Automatic backup scheduled for daily 2:00 AM+ (native timer) - -file:///app/dist/index.js:11 - - throw Error('Dynamic require of "' + x2 + '" is not supported'); - - - -^ - -Error: Dynamic require of "path" is not supported - - at file:///app/dist/index.js:11:9 - - at node_modules/mime-types/index.js (file:///app/dist/index.js:13971:19) - - at __require2 (file:///app/dist/index.js:17:50) - - at node_modules/type-is/index.js (file:///app/dist/index.js:14061:16) - - at __require2 (file:///app/dist/index.js:17:50) - - at node_modules/multer/lib/make-middleware.js (file:///app/dist/index.js:18269:15) - - at __require2 (file:///app/dist/index.js:17:50) - - at node_modules/multer/index.js (file:///app/dist/index.js:22048:26) - - at __require2 (file:///app/dist/index.js:17:50) - - at file:///app/dist/index.js:29500:29 - -Node.js v20.19.4 - -Applying DLC migration... - -NOTICE: column "stock_epuise" of relation "dlc_products" already exists, skipping - -NOTICE: column "stock_epuise_by" of relation "dlc_products" already exists, skipping - -NOTICE: column "stock_epuise_at" of relation "dlc_products" already exists, skipping - -NOTICE: relation "idx_dlc_products_stock_epuise" already exists, skipping - -ALTER TABLE - - CREATE INDEX - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db' - -} - -🐳 PRODUCTION: Using standard PostgreSQL - -✅ PostgreSQL connection test successful - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db:5432' - -} - -✅ Using DatabaseStorage (production PostgreSQL) - -⏰ Automatic backup scheduled for daily 2:00 AM+ (native timer) - -file:///app/dist/index.js:11 - - throw Error('Dynamic require of "' + x2 + '" is not supported'); - - - -^ - -Error: Dynamic require of "path" is not supported - - at file:///app/dist/index.js:11:9 - - at node_modules/mime-types/index.js (file:///app/dist/index.js:13971:19) - - at __require2 (file:///app/dist/index.js:17:50) - - at node_modules/type-is/index.js (file:///app/dist/index.js:14061:16) - - at __require2 (file:///app/dist/index.js:17:50) - - at node_modules/multer/lib/make-middleware.js (file:///app/dist/index.js:18269:15) - - at __require2 (file:///app/dist/index.js:17:50) - - at node_modules/multer/index.js (file:///app/dist/index.js:22048:26) - - at __require2 (file:///app/dist/index.js:17:50) - - at file:///app/dist/index.js:29500:29 - -Node.js v20.19.4 - -Applying DLC migration... - -NOTICE: column "stock_epuise" of relation "dlc_products" already exists, skipping - -NOTICE: column "stock_epuise_by" of relation "dlc_products" already exists, skipping - -NOTICE: column "stock_epuise_at" of relation "dlc_products" already exists, skipping - -NOTICE: relation "idx_dlc_products_stock_epuise" already exists, skipping - -ALTER TABLE - - CREATE INDEX - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db' - -} - -🐳 PRODUCTION: Using standard PostgreSQL - -✅ PostgreSQL connection test successful - -🔗 Database initialization: { - - NODE_ENV: 'production', - - isProduction: true, - - hasDbUrl: true, - - dbHost: 'logiflow-db:5432' - -} - -✅ Using DatabaseStorage (production PostgreSQL) - -⏰ Automatic backup scheduled for daily 2:00 AM+ (native timer) - -file:///app/dist/index.js:11 - - throw Error('Dynamic require of "' + x2 + '" is not supported'); - - - -^ - -Error: Dynamic require of "path" is not supported - - at file:///app/dist/index.js:11:9 - - at node_modules/mime-types/index.js (file:///app/dist/index.js:13971:19) - - at __require2 (file:///app/dist/index.js:17:50) - - at node_modules/type-is/index.js (file:///app/dist/index.js:14061:16) - - at __require2 (file:///app/dist/index.js:17:50) - - at node_modules/multer/lib/make-middleware.js (file:///app/dist/index.js:18269:15) - - at __require2 (file:///app/dist/index.js:17:50) - - at node_modules/multer/index.js (file:///app/dist/index.js:22048:26) - - at __require2 (file:///app/dist/index.js:17:50) - - at file:///app/dist/index.js:29500:29 - -Node.js v20.19.4 - diff --git a/attached_assets/Pasted-Actions-hoursRemaining-438287-CACHE-R-sultat-cache-found--1762258677960_1762258677960.txt b/attached_assets/Pasted-Actions-hoursRemaining-438287-CACHE-R-sultat-cache-found--1762258677960_1762258677960.txt deleted file mode 100644 index 5fab322..0000000 --- a/attached_assets/Pasted-Actions-hoursRemaining-438287-CACHE-R-sultat-cache-found--1762258677960_1762258677960.txt +++ /dev/null @@ -1,205 +0,0 @@ -Actions - - - - - hoursRemaining: 438287 - -} - -🔍 [CACHE] Résultat cache: { - - found: true, - - isReconciled: true, - - expired: false, - - expiresAt: 2075-11-04T10:58:49.338Z, - - currentTime: '2025-11-04T12:17:35.661Z' - -} - -🛡️ [CACHE] PERMANENT - Facture validée avec coche verte, AUCUNE vérification: { - - invoiceReference: '22529151', - - groupId: 1, - - exists: true, - - invoiceAmount: '2653.75', - - dueDate: null - -} - -✅ [INVOICE] Résultat depuis cache: { - - exists: true, - - matchType: 'invoice_reference', - - errorMessage: null, - - invoiceReference: '22529151', - - supplierName: 'Sovacom', - - invoiceAmount: 2653.75, - - invoiceAmountTTC: 3184.5, - - dueDate: null, - - fromCache: true, - - permanent: true - -} - -🔍 [INVOICE] Début vérification facture: { invoiceReference: 'FCLT035833', groupId: 1, forceRefresh: false } - -🔍 [INVOICE] Vérification cache... - -🔍 [CACHE] Recherche cache pour: { - - invoiceReference: 'FCLT035833', - - groupId: 1, - - cacheKey: '1_fclt035833' - -} - -✅ [DATABASE-CACHE] Cache hit pour: { - - cacheKey: '1_fclt035833', - - expires: 2075-11-04T10:58:49.353Z, - - hoursRemaining: 438287 - -} - -🔍 [CACHE] Résultat cache: { - - found: true, - - isReconciled: true, - - expired: false, - - expiresAt: 2075-11-04T10:58:49.353Z, - - currentTime: '2025-11-04T12:17:35.662Z' - -} - -🛡️ [CACHE] PERMANENT - Facture validée avec coche verte, AUCUNE vérification: { - - invoiceReference: 'FCLT035833', - - groupId: 1, - - exists: true, - - invoiceAmount: '1307.26', - - dueDate: null - -} - -✅ [INVOICE] Résultat depuis cache: { - - exists: true, - - matchType: 'invoice_reference', - - errorMessage: null, - - invoiceReference: 'FCLT035833', - - supplierName: 'Idvpc', - - invoiceAmount: 1307.26, - - invoiceAmountTTC: 1568.71, - - dueDate: null, - - fromCache: true, - - permanent: true - -} - -💰 Livraisons nécessitant récupération TTC: 0 - -📅 Total échéances retournées: 34 - -GET /api/payment-schedule 304 in 892ms - -📊 [EXPORT] Début de l'export Excel - -🔍 [EXPORT] Utilisateur: admin (admin) - -📋 [EXPORT] Paramètres: { - - groupId: 1, - - month: '2025-11', - - paymentMethods: [ 'Non défini' ], - - includeHT: true, - - includeTTC: true - -} - -❌ PRODUCTION: Delivery #127 (store 2) linked to order #81 (store 1) - STORE MISMATCH DETECTED! - -🔗 PRODUCTION: getDeliveries() récupéré 357 livraisons avec relations - -📦 [EXPORT] Import du module xlsx... - -❌ [EXPORT] Erreur export Excel: Error: Dynamic require of "stream" is not supported - - at file:///app/dist/index.js:11:9 - - at make_xlsx_lib (file:///app/dist/index.js:44815:22) - - at node_modules/xlsx/xlsx.js (file:///app/dist/index.js:44819:41) - - at __require2 (file:///app/dist/index.js:17:50) - - at file:///app/dist/index.js:47198:63 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/dist/index.js:47198:20 - -❌ [EXPORT] Message: Dynamic require of "stream" is not supported - -❌ [EXPORT] Stack: Error: Dynamic require of "stream" is not supported - - at file:///app/dist/index.js:11:9 - - at make_xlsx_lib (file:///app/dist/index.js:44815:22) - - at node_modules/xlsx/xlsx.js (file:///app/dist/index.js:44819:41) - - at __require2 (file:///app/dist/index.js:17:50) - - at file:///app/dist/index.js:47198:63 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/dist/index.js:47198:20 - -POST /api/payment-schedule/export 500 in 936ms - -HEAD /api/health 200 in 1ms - diff --git a/attached_assets/Pasted-Actions-isReconciled-true-expired-false-expiresAt-2075-11-04T10-5-1762258554084_1762258554084.txt b/attached_assets/Pasted-Actions-isReconciled-true-expired-false-expiresAt-2075-11-04T10-5-1762258554084_1762258554084.txt deleted file mode 100644 index 052d21e..0000000 --- a/attached_assets/Pasted-Actions-isReconciled-true-expired-false-expiresAt-2075-11-04T10-5-1762258554084_1762258554084.txt +++ /dev/null @@ -1,205 +0,0 @@ -Actions - - - - - isReconciled: true, - - expired: false, - - expiresAt: 2075-11-04T10:58:49.326Z, - - currentTime: '2025-11-04T12:15:03.672Z' - -} - -🛡️ [CACHE] PERMANENT - Facture validée avec coche verte, AUCUNE vérification: { - - invoiceReference: '000752796', - - groupId: 1, - - exists: true, - - invoiceAmount: '1203.12', - - dueDate: null - -} - -✅ [INVOICE] Résultat depuis cache: { - - exists: true, - - matchType: 'invoice_reference', - - errorMessage: null, - - invoiceReference: '000752796', - - supplierName: 'CMP', - - invoiceAmount: 1203.12, - - invoiceAmountTTC: 1443.74, - - dueDate: null, - - fromCache: true, - - permanent: true - -} - -🔍 [INVOICE] Début vérification facture: { invoiceReference: '22529151', groupId: 1, forceRefresh: false } - -🔍 [INVOICE] Vérification cache... - -🔍 [CACHE] Recherche cache pour: { invoiceReference: '22529151', groupId: 1, cacheKey: '1_22529151' } - -✅ [DATABASE-CACHE] Cache hit pour: { - - cacheKey: '1_22529151', - - expires: 2075-11-04T10:58:49.338Z, - - hoursRemaining: 438287 - -} - -🔍 [CACHE] Résultat cache: { - - found: true, - - isReconciled: true, - - expired: false, - - expiresAt: 2075-11-04T10:58:49.338Z, - - currentTime: '2025-11-04T12:15:03.675Z' - -} - -🛡️ [CACHE] PERMANENT - Facture validée avec coche verte, AUCUNE vérification: { - - invoiceReference: '22529151', - - groupId: 1, - - exists: true, - - invoiceAmount: '2653.75', - - dueDate: null - -} - -✅ [INVOICE] Résultat depuis cache: { - - exists: true, - - matchType: 'invoice_reference', - - errorMessage: null, - - invoiceReference: '22529151', - - supplierName: 'Sovacom', - - invoiceAmount: 2653.75, - - invoiceAmountTTC: 3184.5, - - dueDate: null, - - fromCache: true, - - permanent: true - -} - -🔍 [INVOICE] Début vérification facture: { invoiceReference: 'FCLT035833', groupId: 1, forceRefresh: false } - -🔍 [INVOICE] Vérification cache... - -🔍 [CACHE] Recherche cache pour: { - - invoiceReference: 'FCLT035833', - - groupId: 1, - - cacheKey: '1_fclt035833' - -} - -✅ [DATABASE-CACHE] Cache hit pour: { - - cacheKey: '1_fclt035833', - - expires: 2075-11-04T10:58:49.353Z, - - hoursRemaining: 438287 - -} - -🔍 [CACHE] Résultat cache: { - - found: true, - - isReconciled: true, - - expired: false, - - expiresAt: 2075-11-04T10:58:49.353Z, - - currentTime: '2025-11-04T12:15:03.677Z' - -} - -🛡️ [CACHE] PERMANENT - Facture validée avec coche verte, AUCUNE vérification: { - - invoiceReference: 'FCLT035833', - - groupId: 1, - - exists: true, - - invoiceAmount: '1307.26', - - dueDate: null - -} - -✅ [INVOICE] Résultat depuis cache: { - - exists: true, - - matchType: 'invoice_reference', - - errorMessage: null, - - invoiceReference: 'FCLT035833', - - supplierName: 'Idvpc', - - invoiceAmount: 1307.26, - - invoiceAmountTTC: 1568.71, - - dueDate: null, - - fromCache: true, - - permanent: true - -} - -💰 Livraisons nécessitant récupération TTC: 0 - -📅 Total échéances retournées: 34 - -GET /api/payment-schedule 304 in 17159ms - -HEAD /api/health 200 in 1ms - diff --git a/attached_assets/Pasted-Administration-User-related-Environment-related-Registries-Logs-Notifications-Se-1755163840427_1755163840428.txt b/attached_assets/Pasted-Administration-User-related-Environment-related-Registries-Logs-Notifications-Se-1755163840427_1755163840428.txt deleted file mode 100644 index 15d4372..0000000 --- a/attached_assets/Pasted-Administration-User-related-Environment-related-Registries-Logs-Notifications-Se-1755163840427_1755163840428.txt +++ /dev/null @@ -1,238 +0,0 @@ -Administration - -User-related - - -Environment-related - -Registries - -Logs - -Notifications - -Settings - -New version available 2.27.9 -DismissSee what's new -Community Edition -2.27.6 LTS -Containers>logiflow-logiflow-1>Logs -Container logs - - -admin -Log viewer settings -Auto-refresh logs -Wrap lines -Display timestamps -Fetch -All logs -Search -Filter... -Lines -100 -Actions - - - - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '28', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '3665', - - routine: 'errorMissingColumn' - -} - -GET /api/sav/stats 500 in 9ms - -GET /api/sav/tickets 500 in 11ms - -Error fetching SAV tickets: error: column sav_tickets.priority does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getSavTickets (file:///app/dist/index.js:1974:25) - - at async file:///app/dist/index.js:6064:23 { - - length: 119, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '350', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '3665', - - routine: 'errorMissingColumn' - -} - -PUT /api/customer-orders/56 401 in 1ms - -📄 SPA: Serving index.html for /customer-orders - -Error fetching SAV stats: error: column "priority" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getSavTicketStats (file:///app/dist/index.js:2046:25) - - at async file:///app/dist/index.js:6251:21 { - - length: 108, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '28', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '3665', - - routine: 'errorMissingColumn' - -} - -Error fetching SAV tickets: error: column sav_tickets.priority does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getSavTickets (file:///app/dist/index.js:1974:25) - - at async file:///app/dist/index.js:6064:23 { - - length: 119, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '350', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '3665', - - routine: 'errorMissingColumn' - -} - -GET /api/sav/stats 500 in 11ms - -GET /api/sav/tickets 500 in 12ms - -GET /api/user 401 in 2ms - -📄 SPA: Serving index.html for /auth - -GET /api/user 401 in 1ms - -GET /api/user 401 in 1ms - -GET /api/default-credentials-check 304 in 3ms \ No newline at end of file diff --git a/attached_assets/Pasted-Administration-User-related-Environment-related-Registries-Logs-Notifications-Se-1755510210355_1755510210355.txt b/attached_assets/Pasted-Administration-User-related-Environment-related-Registries-Logs-Notifications-Se-1755510210355_1755510210355.txt deleted file mode 100644 index db0f599..0000000 --- a/attached_assets/Pasted-Administration-User-related-Environment-related-Registries-Logs-Notifications-Se-1755510210355_1755510210355.txt +++ /dev/null @@ -1,234 +0,0 @@ -Administration - -User-related - - -Environment-related - -Registries - -Logs - -Notifications - -Settings - -New version available 2.27.9 -DismissSee what's new -Community Edition -2.27.6 LTS -Containers>logiflow-logiflow-1>Logs -Container logs - - -admin -Log viewer settings -Auto-refresh logs -Wrap lines -Display timestamps -Fetch -All logs -Search -Filter... -Lines -100 -Actions - - - - - userRole: 'admin' - -} - -Admin filtering with groupIds: [ 1 ] - -Fetching all orders - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: [ 1 ] - -Fetching all deliveries - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -Customer Orders returned: 10 items - -GET /api/customer-orders 304 in 63ms - -🔗 PRODUCTION: getOrders() récupéré 33 commandes avec relations - -Orders returned: 33 items - -GET /api/orders 304 in 128ms - -🔗 PRODUCTION: getDeliveries() récupéré 49 livraisons avec relations - -Deliveries returned: 49 items - -GET /api/deliveries 304 in 154ms - -GET /api/groups 304 in 57ms - -GET /api/user 304 in 7ms - -GET /api/suppliers 304 in 9ms - -Error fetching DLC products: error: column dlc_products.stock_epuise does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getDlcProducts (file:///app/dist/index.js:2187:25) - - at async file:///app/dist/index.js:6178:28 { - - length: 124, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '337', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '3665', - - routine: 'errorMissingColumn' - -} - -GET /api/dlc-products 500 in 19ms - -Error fetching DLC products: error: column dlc_products.stock_epuise does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getDlcProducts (file:///app/dist/index.js:2187:25) - - at async file:///app/dist/index.js:6178:28 { - - length: 124, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '337', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '3665', - - routine: 'errorMissingColumn' - -} - -GET /api/dlc-products 500 in 27ms - -Error fetching DLC products: error: column dlc_products.stock_epuise does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getDlcProducts (file:///app/dist/index.js:2187:25) - - at async file:///app/dist/index.js:6178:28 { - - length: 124, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '337', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '3665', - - routine: 'errorMissingColumn' \ No newline at end of file diff --git a/attached_assets/Pasted-Administration-User-related-Environment-related-Registries-Logs-Notifications-Se-1755588965036_1755588965037.txt b/attached_assets/Pasted-Administration-User-related-Environment-related-Registries-Logs-Notifications-Se-1755588965036_1755588965037.txt deleted file mode 100644 index 568f758..0000000 --- a/attached_assets/Pasted-Administration-User-related-Environment-related-Registries-Logs-Notifications-Se-1755588965036_1755588965037.txt +++ /dev/null @@ -1,238 +0,0 @@ -Administration - -User-related - - -Environment-related - -Registries - -Logs - -Notifications - -Settings - -New version available 2.27.9 -DismissSee what's new -Community Edition -2.27.6 LTS -Containers>logiflow-logiflow-1>Logs -Container logs - - -admin -Log viewer settings -Auto-refresh logs -Wrap lines -Display timestamps -Fetch -All logs -Search -Filter... -Lines -100 -Actions - - - - - taskGroups: [ - - { id: 99, title: 'test', groupId: 1 }, - - { id: 98, title: 'test', groupId: 1 }, - - { id: 91, title: 'refaire podium lot assiettes', groupId: 2 } - - ] - -} - -GET /api/tasks 200 in 461ms - -GET /api/user 304 in 37ms - -📢 [SERVER] User found: { username: 'admin', role: 'admin' } - -🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table - -🔍 [PRODUCTION] Raw messages from DB: 2 items: [ - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Not found - -🎯 [PRODUCTION] Found announcements: 2 - -❌ [PRODUCTION] User not found with username: admin_local - -GET /api/announcements 200 in 36ms - -GET /api/publicities 304 in 28ms - -GET /api/user 304 in 6ms - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - userRole: 'admin' - -} - -Admin filtering with groupIds: [ 1 ] - -Fetching all orders - -📢 [SERVER] Fetching announcements for user: admin_local environment: production - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: [ 1 ] - -Fetching all deliveries - -🔗 PRODUCTION: getOrders() récupéré 33 commandes avec relations - -Orders returned: 33 items - -GET /api/orders 200 in 94ms - -📢 [SERVER] User found: { username: 'admin', role: 'admin' } - -🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -🔗 PRODUCTION: getDeliveries() récupéré 49 livraisons avec relations - -Deliveries returned: 49 items - -GET /api/deliveries 304 in 150ms - -GET /api/groups 304 in 94ms - -🔍 [PRODUCTION] Raw messages from DB: 2 items: [ - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -Customer Orders returned: 10 items - -GET /api/customer-orders 304 in 156ms - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Not found - -❌ [PRODUCTION] User not found with username: admin_local - -🎯 [PRODUCTION] Found announcements: 2 - -GET /api/announcements 200 in 157ms - -GET /api/user 304 in 7ms - -GET /api/publicities 304 in 12ms - -GET /api/publicities 200 in 10ms - -HEAD /api/health 200 in 0ms \ No newline at end of file diff --git a/attached_assets/Pasted-Administration-User-related-Environment-related-Registries-Logs-Notifications-Se-1756890409403_1756890409403.txt b/attached_assets/Pasted-Administration-User-related-Environment-related-Registries-Logs-Notifications-Se-1756890409403_1756890409403.txt deleted file mode 100644 index 52dcfa1..0000000 --- a/attached_assets/Pasted-Administration-User-related-Environment-related-Registries-Logs-Notifications-Se-1756890409403_1756890409403.txt +++ /dev/null @@ -1,235 +0,0 @@ -Administration - -User-related - - -Environment-related - -Registries - -Logs - -Notifications - -Settings - -New version available 2.33.1 -DismissSee what's new -Community Edition -2.27.6 LTS -Containers>logiflow-logiflow-1>Logs -Container logs - - -admin -Log viewer settings -Auto-refresh logs -Wrap lines -Display timestamps -Fetch -All logs -Search -Filter... -Lines -100 -Actions - - - - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '183', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_target.c', - - line: '1075', - - routine: 'checkInsertTargets' - -} - -❌ Erreur sauvegarde cache not found BL: error: column "is_reconciled" of relation "invoice_verification_cache" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.createInvoiceVerificationCache (file:///app/dist/index.js:2193:27) - - at async InvoiceVerificationService.verifyInvoiceByBL (file:///app/dist/index.js:4947:15) - - at async file:///app/dist/index.js:6758:18 { - - length: 153, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '183', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_target.c', - - line: '1075', - - routine: 'checkInsertTargets' - -} - -🔗 PRODUCTION: getOrder #58 found 1 associated deliveries - -✅ PRODUCTION: getDelivery #88 found associated order #58 with status: delivered - -POST /api/deliveries/88/verify-invoice 403 in 1919ms - -❌ Erreur création cache: error: column "is_reconciled" of relation "invoice_verification_cache" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.createInvoiceVerificationCache (file:///app/dist/index.js:2193:27) - - at async InvoiceVerificationService.verifyInvoiceByBL (file:///app/dist/index.js:4947:15) - - at async file:///app/dist/index.js:6758:18 { - - length: 153, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '183', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_target.c', - - line: '1075', - - routine: 'checkInsertTargets' - -} - -❌ Erreur sauvegarde cache not found BL: error: column "is_reconciled" of relation "invoice_verification_cache" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.createInvoiceVerificationCache (file:///app/dist/index.js:2193:27) - - at async InvoiceVerificationService.verifyInvoiceByBL (file:///app/dist/index.js:4947:15) - - at async file:///app/dist/index.js:6758:18 { - - length: 153, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '183', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_target.c', - - line: '1075', - - routine: 'checkInsertTargets' - -} - -✅ Résultat vérification: { - - exists: false, - - matchType: 'none', - - errorMessage: 'Aucun BL correspondant trouvé dans NocoDB' - diff --git a/attached_assets/Pasted-LOGIFLOW-RAPPORT-SCH-MA-BASE-DE-DONN-ES-PRODUCTION--1756906995381_1756906995382.txt b/attached_assets/Pasted-LOGIFLOW-RAPPORT-SCH-MA-BASE-DE-DONN-ES-PRODUCTION--1756906995381_1756906995382.txt deleted file mode 100644 index 6cd3282..0000000 --- a/attached_assets/Pasted-LOGIFLOW-RAPPORT-SCH-MA-BASE-DE-DONN-ES-PRODUCTION--1756906995381_1756906995382.txt +++ /dev/null @@ -1,589 +0,0 @@ -LOGIFLOW - RAPPORT SCHÉMA BASE DE DONNÉES PRODUCTION -=============================================== - -GÉNÉRÉ LE : 2025-09-03T13:42:55.993Z -SERVEUR : Production privé LogiFlow -ENVIRONNEMENT : PostgreSQL Docker -UTILISATEUR : admin - -=============================================== -RÉSUMÉ DU SCAN -=============================================== - -TOTAL DES TABLES TROUVÉES: 34 -========================================== - -TABLE: CALENDAR_EVENTS -===================== - - 01. id : integer NOT NULL DEFAULT nextval('calendar_events_id_seq'::regclass) - 02. title : character varying(255) NOT NULL - 03. description : text NULL - 04. start_date : timestamp without time zone NOT NULL - 05. end_date : timestamp without time zone NOT NULL - 06. event_type : character varying(50) NULL DEFAULT 'custom'::character varying - 07. group_id : integer NULL - 08. created_by : character varying(255) NULL - 09. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 10. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: CLIENT_ORDERS -=================== - - 01. id : integer NOT NULL DEFAULT nextval('client_orders_id_seq'::regclass) - 02. order_number : character varying(255) NOT NULL - 03. client_name : character varying(255) NOT NULL - 04. client_contact : character varying(255) NULL - 05. product_description : text NOT NULL - 06. quantity : integer NOT NULL DEFAULT 1 - 07. unit_price : numeric NULL - 08. total_amount : numeric NULL - 09. status : character varying(50) NULL DEFAULT 'pending'::character varying - 10. delivery_date : date NULL - 11. notes : text NULL - 12. group_id : integer NULL - 13. created_by : character varying(255) NULL - 14. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 15. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: COMMAND_ITEMS -=================== - - 01. id : integer NOT NULL DEFAULT nextval('command_items_id_seq'::regclass) - 02. command_id : integer NULL - 03. product_name : character varying(255) NOT NULL - 04. product_reference : character varying(255) NULL - 05. quantity : integer NOT NULL - 06. unit_price : numeric NULL - 07. total_price : numeric NULL - 08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: COMMANDS -============== - - 01. id : integer NOT NULL DEFAULT nextval('commands_id_seq'::regclass) - 02. command_number : character varying(255) NOT NULL - 03. supplier_id : integer NULL - 04. group_id : integer NULL - 05. command_date : date NOT NULL - 06. expected_delivery_date : date NULL - 07. status : character varying(50) NULL DEFAULT 'pending'::character varying - 08. total_amount : numeric NULL - 09. notes : text NULL - 10. created_by : character varying(255) NULL - 11. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 12. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: CUSTOMER_ORDERS -===================== - - 01. id : integer NOT NULL DEFAULT nextval('customer_orders_id_seq'::regclass) - 02. order_taker : character varying(255) NOT NULL - 03. customer_name : character varying(255) NOT NULL - 04. customer_phone : character varying(255) NULL - 05. customer_email : character varying(255) NULL - 06. product_designation : text NOT NULL - 07. product_reference : character varying(255) NULL - 08. gencode : character varying(255) NULL - 09. quantity : integer NULL DEFAULT 1 - 10. supplier_id : integer NULL - 11. status : character varying(100) NULL DEFAULT 'En attente de Commande'::character varying - 12. deposit : numeric NULL DEFAULT 0.00 - 13. is_promotional_price : boolean NULL DEFAULT false - 14. customer_notified : boolean NULL DEFAULT false - 15. notes : text NULL - 16. group_id : integer NULL - 17. created_by : character varying(255) NULL - 18. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 19. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 50 - -TABLE: CUSTOMERS -=============== - - 01. id : integer NOT NULL DEFAULT nextval('customers_id_seq'::regclass) - 02. name : character varying(255) NOT NULL - 03. contact_person : character varying(255) NULL - 04. phone : character varying(255) NULL - 05. email : character varying(255) NULL - 06. address : text NULL - 07. city : character varying(255) NULL - 08. postal_code : character varying(20) NULL - 09. notes : text NULL - 10. group_id : integer NULL - 11. created_by : character varying(255) NULL - 12. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 13. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: DASHBOARD_MESSAGES -======================== - - 01. id : integer NOT NULL DEFAULT nextval('dashboard_messages_id_seq'::regclass) - 02. title : character varying(255) NOT NULL - 03. content : text NOT NULL - 04. type : character varying(50) NOT NULL DEFAULT 'info'::character varying - 05. store_id : integer NULL - 06. created_by : character varying(255) NOT NULL - 07. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 2 - -TABLE: DATABASE_BACKUPS -====================== - - 01. id : character varying(255) NOT NULL - 02. filename : character varying(255) NOT NULL - 03. description : text NULL - 04. size : bigint NULL DEFAULT 0 - 05. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 06. created_by : character varying(255) NOT NULL - 07. tables_count : integer NULL DEFAULT 0 - 08. status : character varying(50) NULL DEFAULT 'creating'::character varying - 09. backup_type : character varying(10) NULL DEFAULT 'manual'::character varying - 📈 Nombre d'enregistrements: 7 - -TABLE: DELIVERIES -================ - - 01. id : integer NOT NULL DEFAULT nextval('deliveries_id_seq'::regclass) - 02. order_id : integer NULL - 03. supplier_id : integer NULL - 04. group_id : integer NULL - 05. scheduled_date : date NOT NULL - 06. delivered_date : timestamp without time zone NULL - 07. quantity : integer NOT NULL - 08. unit : character varying(50) NOT NULL - 09. status : character varying(50) NULL DEFAULT 'pending'::character varying - 10. notes : text NULL - 11. bl_number : character varying(255) NULL - 12. bl_amount : numeric NULL - 13. invoice_reference : character varying(255) NULL - 14. invoice_amount : numeric NULL - 15. reconciled : boolean NULL DEFAULT false - 16. validated_at : timestamp without time zone NULL - 17. created_by : character varying(255) NULL - 18. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 19. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 133 - -TABLE: DELIVERY_ITEMS -==================== - - 01. id : integer NOT NULL DEFAULT nextval('delivery_items_id_seq'::regclass) - 02. delivery_id : integer NULL - 03. product_name : character varying(255) NOT NULL - 04. product_reference : character varying(255) NULL - 05. quantity : integer NOT NULL - 06. unit : character varying(50) NULL - 07. notes : text NULL - 08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: DLC_PRODUCTS -================== - - 01. id : integer NOT NULL DEFAULT nextval('dlc_products_id_seq'::regclass) - 02. product_name : character varying(255) NOT NULL - 03. expiry_date : date NOT NULL - 04. date_type : character varying(50) NOT NULL DEFAULT 'DLC'::character varying - 05. quantity : integer NOT NULL DEFAULT 1 - 06. unit : character varying(50) NOT NULL DEFAULT 'unité'::character varying - 07. supplier_id : integer NOT NULL - 08. location : character varying(255) NOT NULL DEFAULT 'Magasin'::character varying - 09. status : character varying(50) NOT NULL DEFAULT 'active'::character varying - 10. notes : text NULL - 11. alert_threshold : integer NOT NULL DEFAULT 15 - 12. validated_at : timestamp without time zone NULL - 13. validated_by : character varying(255) NULL - 14. group_id : integer NOT NULL - 15. created_by : character varying(255) NOT NULL - 16. created_at : timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP - 17. updated_at : timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP - 18. gencode : character varying(255) NULL - 19. name : character varying(255) NULL - 20. dlc_date : date NULL - 21. product_code : character varying(255) NULL - 22. description : text NULL - 23. stock_epuise : boolean NOT NULL DEFAULT false - 24. stock_epuise_by : character varying(255) NULL - 25. stock_epuise_at : timestamp without time zone NULL - 📈 Nombre d'enregistrements: 501 - -TABLE: GROUPS -============ - - 01. id : integer NOT NULL DEFAULT nextval('groups_id_seq'::regclass) - 02. name : character varying(255) NOT NULL - 03. color : character varying(20) NULL DEFAULT '#1976D2'::character varying - 04. nocodb_config_id : integer NULL - 05. nocodb_table_id : character varying(255) NULL - 06. nocodb_table_name : character varying(255) NULL - 07. invoice_column_name : character varying(255) NULL - 08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 09. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 10. nocodb_bl_column_name : character varying(255) NULL - 11. nocodb_amount_column_name : character varying(255) NULL - 12. nocodb_supplier_column_name : character varying(255) NULL - 13. webhook_url : character varying(500) NULL - 📈 Nombre d'enregistrements: 2 - -TABLE: INVOICE_VERIFICATION_CACHE -================================ - - 01. id : integer NOT NULL DEFAULT nextval('invoice_verification_cache_id_seq'::regclass) - 02. cache_key : character varying(255) NOT NULL - 03. group_id : integer NOT NULL - 04. invoice_reference : character varying(255) NOT NULL - 05. supplier_name : character varying(255) NULL - 06. exists : boolean NOT NULL - 07. match_type : character varying(50) NOT NULL - 08. error_message : text NULL - 09. cache_hit : boolean NULL DEFAULT false - 10. api_call_time : integer NULL - 11. expires_at : timestamp without time zone NOT NULL - 12. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 13. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 122 - -TABLE: INVOICE_VERIFICATIONS -=========================== - - 01. id : integer NOT NULL DEFAULT nextval('invoice_verifications_id_seq'::regclass) - 02. delivery_id : integer NOT NULL - 03. group_id : integer NOT NULL - 04. invoice_reference : character varying(255) NOT NULL - 05. supplier_name : character varying(255) NULL - 06. exists : boolean NOT NULL - 07. match_type : character varying(50) NULL - 08. verified_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 09. is_valid : boolean NULL DEFAULT true - 10. last_checked_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 15 - -TABLE: INVOICES -============== - - 01. id : integer NOT NULL DEFAULT nextval('invoices_id_seq'::regclass) - 02. invoice_number : character varying(255) NOT NULL - 03. supplier_id : integer NULL - 04. group_id : integer NULL - 05. invoice_date : date NOT NULL - 06. due_date : date NULL - 07. amount : numeric NOT NULL - 08. status : character varying(50) NULL DEFAULT 'pending'::character varying - 09. payment_date : date NULL - 10. notes : text NULL - 11. created_by : character varying(255) NULL - 12. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 13. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: NOCODB_CONFIG -=================== - - 01. id : integer NOT NULL DEFAULT nextval('nocodb_config_id_seq'::regclass) - 02. name : character varying(255) NOT NULL - 03. base_url : character varying(255) NOT NULL - 04. project_id : character varying(255) NOT NULL - 05. api_token : character varying(255) NOT NULL - 06. description : text NULL - 07. is_active : boolean NULL DEFAULT true - 08. created_by : character varying(255) NULL - 09. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 10. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 1 - -TABLE: ORDERS -============ - - 01. id : integer NOT NULL DEFAULT nextval('orders_id_seq'::regclass) - 02. supplier_id : integer NULL - 03. group_id : integer NULL - 04. planned_date : date NOT NULL - 05. quantity : integer NULL - 06. unit : character varying(50) NULL - 07. status : character varying(50) NULL DEFAULT 'pending'::character varying - 08. notes : text NULL - 09. created_by : character varying(255) NULL - 10. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 11. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 85 - -TABLE: PERMISSIONS -================= - - 01. id : integer NOT NULL DEFAULT nextval('permissions_id_seq'::regclass) - 02. name : character varying(255) NOT NULL - 03. display_name : character varying(255) NOT NULL - 04. description : text NULL - 05. category : character varying(255) NOT NULL - 06. action : character varying(255) NOT NULL - 07. resource : character varying(255) NOT NULL - 08. is_system : boolean NULL DEFAULT true - 09. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 7 - -TABLE: PUBLICITIES -================= - - 01. id : integer NOT NULL DEFAULT nextval('publicities_id_seq'::regclass) - 02. pub_number : character varying(255) NOT NULL - 03. designation : text NOT NULL - 04. start_date : date NOT NULL - 05. end_date : date NOT NULL - 06. year : integer NOT NULL - 07. created_by : character varying(255) NULL - 08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 09. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 48 - -TABLE: PUBLICITY_PARTICIPATIONS -============================== - - 01. publicity_id : integer NOT NULL - 02. group_id : integer NOT NULL - 📈 Nombre d'enregistrements: 46 - -TABLE: ROLE_PERMISSIONS -====================== - - 01. role_id : integer NOT NULL - 02. permission_id : integer NOT NULL - 📈 Nombre d'enregistrements: 21 - -TABLE: ROLES -=========== - - 01. id : integer NOT NULL DEFAULT nextval('roles_id_seq'::regclass) - 02. name : character varying(255) NOT NULL - 03. display_name : character varying(255) NOT NULL - 04. description : text NULL - 05. color : character varying(7) NULL DEFAULT '#6b7280'::character varying - 06. is_system : boolean NULL DEFAULT false - 07. is_active : boolean NULL DEFAULT true - 08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 09. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 4 - -TABLE: SAV_TICKET_HISTORY -======================== - - 01. id : integer NOT NULL DEFAULT nextval('sav_ticket_history_id_seq'::regclass) - 02. ticket_id : integer NOT NULL - 03. action : character varying(100) NOT NULL - 04. description : text NULL - 05. created_by : character varying(255) NOT NULL - 06. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 3 - -TABLE: SAV_TICKETS -================= - - 01. id : integer NOT NULL DEFAULT nextval('sav_tickets_id_seq'::regclass) - 02. ticket_number : character varying(50) NOT NULL - 03. supplier_id : integer NOT NULL - 04. group_id : integer NOT NULL - 05. product_gencode : character varying(255) NOT NULL - 06. product_reference : character varying(255) NULL - 07. product_designation : character varying(500) NOT NULL - 08. problem_type : character varying(100) NOT NULL - 09. problem_description : text NOT NULL - 10. resolution_description : text NULL - 11. status : character varying(50) NOT NULL DEFAULT 'nouveau'::character varying - 12. created_by : character varying(255) NOT NULL - 13. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 14. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 15. resolved_at : timestamp without time zone NULL - 16. closed_at : timestamp without time zone NULL - 17. client_name : character varying(255) NULL - 18. client_phone : character varying(255) NULL - 19. priority : character varying(50) NOT NULL DEFAULT 'normale'::character varying - 📈 Nombre d'enregistrements: 1 - -TABLE: SESSION -============= - - 01. sid : character varying NOT NULL - 02. sess : json NOT NULL - 03. expire : timestamp without time zone NOT NULL - 📈 Nombre d'enregistrements: 13 - -TABLE: SESSIONS -============== - - 01. id : integer NOT NULL DEFAULT nextval('sessions_id_seq'::regclass) - 02. user_id : character varying(255) NULL - 03. session_token : character varying(255) NOT NULL - 04. expires_at : timestamp without time zone NOT NULL - 05. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: STORES -============ - - 01. id : integer NOT NULL DEFAULT nextval('stores_id_seq'::regclass) - 02. name : character varying(255) NOT NULL - 03. address : text NULL - 04. city : character varying(255) NULL - 05. postal_code : character varying(20) NULL - 06. phone : character varying(255) NULL - 07. manager_id : character varying(255) NULL - 08. is_active : boolean NULL DEFAULT true - 09. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 10. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: SUPPLIERS -=============== - - 01. id : integer NOT NULL DEFAULT nextval('suppliers_id_seq'::regclass) - 02. name : character varying(255) NOT NULL - 03. contact : character varying(255) NULL - 04. phone : character varying(255) NULL - 05. has_dlc : boolean NULL DEFAULT false - 06. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 07. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 08. automatic_reconciliation : boolean NULL DEFAULT false - 📈 Nombre d'enregistrements: 39 - -TABLE: TASKS -=========== - - 01. id : integer NOT NULL DEFAULT nextval('tasks_id_seq'::regclass) - 02. title : character varying(255) NOT NULL - 03. description : text NULL - 04. status : character varying(50) NOT NULL DEFAULT 'pending'::character varying - 05. priority : character varying(50) NOT NULL DEFAULT 'medium'::character varying - 06. assigned_to : character varying(255) NULL - 07. due_date : date NULL - 08. group_id : integer NOT NULL - 09. created_by : character varying(255) NOT NULL - 10. created_at : timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP - 11. updated_at : timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP - 12. start_date : timestamp without time zone NULL - 13. completed_at : timestamp without time zone NULL - 14. completed_by : character varying(255) NULL - 📈 Nombre d'enregistrements: 63 - -TABLE: USER_GROUPS -================= - - 01. user_id : character varying(255) NOT NULL - 02. group_id : integer NOT NULL - 📈 Nombre d'enregistrements: 7 - -TABLE: USER_ROLES -================ - - 01. user_id : character varying(255) NOT NULL - 02. role_id : integer NOT NULL - 03. assigned_by : character varying(255) NULL - 04. assigned_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 1 - -TABLE: USERS -=========== - - 01. id : character varying(255) NOT NULL - 02. username : character varying(255) NOT NULL - 03. email : character varying(255) NULL - 04. name : character varying(255) NULL - 05. first_name : character varying(255) NULL - 06. last_name : character varying(255) NULL - 07. profile_image_url : text NULL - 08. password : character varying(255) NULL - 09. role : character varying(50) NULL DEFAULT 'employee'::character varying - 10. password_changed : boolean NULL DEFAULT false - 11. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 12. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 8 - -TABLE: WEATHER_DATA -================== - - 01. id : integer NOT NULL DEFAULT nextval('weather_data_id_seq'::regclass) - 02. date : date NOT NULL - 03. location : text NOT NULL - 04. temp_max : text NOT NULL - 05. temp_min : text NOT NULL - 06. icon : text NOT NULL - 07. conditions : text NOT NULL - 08. is_current_year : boolean NOT NULL DEFAULT true - 09. created_at : timestamp with time zone NULL DEFAULT CURRENT_TIMESTAMP - 10. updated_at : timestamp with time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 39 - -TABLE: WEATHER_SETTINGS -====================== - - 01. id : integer NOT NULL DEFAULT nextval('weather_settings_id_seq'::regclass) - 02. api_key : text NOT NULL - 03. location : text NOT NULL DEFAULT 'Paris, France'::text - 04. is_active : boolean NOT NULL DEFAULT true - 05. created_at : timestamp with time zone NULL DEFAULT CURRENT_TIMESTAMP - 06. updated_at : timestamp with time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 1 - -CONTRAINTES DE CLÉS ÉTRANGÈRES: -=================================== - - calendar_events.created_by → users.id - calendar_events.group_id → groups.id - client_orders.created_by → users.id - client_orders.group_id → groups.id - command_items.command_id → commands.id - commands.created_by → users.id - commands.group_id → groups.id - commands.supplier_id → suppliers.id - customer_orders.created_by → users.id - customer_orders.group_id → groups.id - customer_orders.supplier_id → suppliers.id - customers.created_by → users.id - customers.group_id → groups.id - dashboard_messages.store_id → groups.id - database_backups.created_by → users.id - deliveries.created_by → users.id - deliveries.group_id → groups.id - deliveries.order_id → orders.id - deliveries.supplier_id → suppliers.id - delivery_items.delivery_id → deliveries.id - dlc_products.created_by → users.id - dlc_products.group_id → groups.id - dlc_products.supplier_id → suppliers.id - dlc_products.validated_by → users.id - invoice_verification_cache.group_id → groups.id - invoice_verifications.delivery_id → deliveries.id - invoice_verifications.group_id → groups.id - invoices.created_by → users.id - invoices.group_id → groups.id - invoices.supplier_id → suppliers.id - nocodb_config.created_by → users.id - orders.created_by → users.id - orders.group_id → groups.id - orders.supplier_id → suppliers.id - publicities.created_by → users.id - publicity_participations.group_id → groups.id - publicity_participations.publicity_id → publicities.id - role_permissions.permission_id → permissions.id - role_permissions.role_id → roles.id - sav_ticket_history.ticket_id → sav_tickets.id - sav_tickets.group_id → groups.id - sav_tickets.supplier_id → suppliers.id - sessions.user_id → users.id - stores.manager_id → users.id - tasks.completed_by → users.id - tasks.created_by → users.id - tasks.group_id → groups.id - user_groups.group_id → groups.id - user_groups.user_id → users.id - user_roles.assigned_by → users.id - user_roles.role_id → roles.id - user_roles.user_id → users.id - -=============================================== -FIN DU RAPPORT - 2025-09-03T13:42:55.993Z -=============================================== \ No newline at end of file diff --git a/attached_assets/Pasted-LOGIFLOW-RAPPORT-SCH-MA-BASE-DE-DONN-ES-PRODUCTION--1757923689285_1757923689285.txt b/attached_assets/Pasted-LOGIFLOW-RAPPORT-SCH-MA-BASE-DE-DONN-ES-PRODUCTION--1757923689285_1757923689285.txt deleted file mode 100644 index 0f7e1b5..0000000 --- a/attached_assets/Pasted-LOGIFLOW-RAPPORT-SCH-MA-BASE-DE-DONN-ES-PRODUCTION--1757923689285_1757923689285.txt +++ /dev/null @@ -1,641 +0,0 @@ -LOGIFLOW - RAPPORT SCHÉMA BASE DE DONNÉES PRODUCTION -=============================================== - -GÉNÉRÉ LE : 2025-09-15T08:08:00.355Z -SERVEUR : Production privé LogiFlow -ENVIRONNEMENT : PostgreSQL Docker -UTILISATEUR : admin - -=============================================== -RÉSUMÉ DU SCAN -=============================================== - -TOTAL DES TABLES TROUVÉES: 37 -========================================== - -TABLE: AVOIRS -============ - - 01. id : integer NOT NULL DEFAULT nextval('avoirs_id_seq'::regclass) - 02. supplier_id : integer NOT NULL - 03. group_id : integer NOT NULL - 04. invoice_reference : character varying(255) NULL - 05. amount : numeric NULL - 06. comment : text NULL - 07. commercial_processed : boolean NULL DEFAULT false - 08. status : character varying(50) NULL DEFAULT 'En attente de demande'::character varying - 09. webhook_sent : boolean NULL DEFAULT false - 10. nocodb_verified : boolean NULL DEFAULT false - 11. nocodb_verified_at : timestamp without time zone NULL - 12. processed_at : timestamp without time zone NULL - 13. created_by : character varying(255) NOT NULL - 14. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 15. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 5 - -TABLE: CALENDAR_EVENTS -===================== - - 01. id : integer NOT NULL DEFAULT nextval('calendar_events_id_seq'::regclass) - 02. title : character varying(255) NOT NULL - 03. description : text NULL - 04. start_date : timestamp without time zone NOT NULL - 05. end_date : timestamp without time zone NOT NULL - 06. event_type : character varying(50) NULL DEFAULT 'custom'::character varying - 07. group_id : integer NULL - 08. created_by : character varying(255) NULL - 09. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 10. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: CLIENT_ORDERS -=================== - - 01. id : integer NOT NULL DEFAULT nextval('client_orders_id_seq'::regclass) - 02. order_number : character varying(255) NOT NULL - 03. client_name : character varying(255) NOT NULL - 04. client_contact : character varying(255) NULL - 05. product_description : text NOT NULL - 06. quantity : integer NOT NULL DEFAULT 1 - 07. unit_price : numeric NULL - 08. total_amount : numeric NULL - 09. status : character varying(50) NULL DEFAULT 'pending'::character varying - 10. delivery_date : date NULL - 11. notes : text NULL - 12. group_id : integer NULL - 13. created_by : character varying(255) NULL - 14. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 15. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: COMMAND_ITEMS -=================== - - 01. id : integer NOT NULL DEFAULT nextval('command_items_id_seq'::regclass) - 02. command_id : integer NULL - 03. product_name : character varying(255) NOT NULL - 04. product_reference : character varying(255) NULL - 05. quantity : integer NOT NULL - 06. unit_price : numeric NULL - 07. total_price : numeric NULL - 08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: COMMANDS -============== - - 01. id : integer NOT NULL DEFAULT nextval('commands_id_seq'::regclass) - 02. command_number : character varying(255) NOT NULL - 03. supplier_id : integer NULL - 04. group_id : integer NULL - 05. command_date : date NOT NULL - 06. expected_delivery_date : date NULL - 07. status : character varying(50) NULL DEFAULT 'pending'::character varying - 08. total_amount : numeric NULL - 09. notes : text NULL - 10. created_by : character varying(255) NULL - 11. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 12. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: CUSTOMER_ORDERS -===================== - - 01. id : integer NOT NULL DEFAULT nextval('customer_orders_id_seq'::regclass) - 02. order_taker : character varying(255) NOT NULL - 03. customer_name : character varying(255) NOT NULL - 04. customer_phone : character varying(255) NULL - 05. customer_email : character varying(255) NULL - 06. product_designation : text NOT NULL - 07. product_reference : character varying(255) NULL - 08. gencode : character varying(255) NULL - 09. quantity : integer NULL DEFAULT 1 - 10. supplier_id : integer NULL - 11. status : character varying(100) NULL DEFAULT 'En attente de Commande'::character varying - 12. deposit : numeric NULL DEFAULT 0.00 - 13. is_promotional_price : boolean NULL DEFAULT false - 14. customer_notified : boolean NULL DEFAULT false - 15. notes : text NULL - 16. group_id : integer NULL - 17. created_by : character varying(255) NULL - 18. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 19. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 80 - -TABLE: CUSTOMERS -=============== - - 01. id : integer NOT NULL DEFAULT nextval('customers_id_seq'::regclass) - 02. name : character varying(255) NOT NULL - 03. contact_person : character varying(255) NULL - 04. phone : character varying(255) NULL - 05. email : character varying(255) NULL - 06. address : text NULL - 07. city : character varying(255) NULL - 08. postal_code : character varying(20) NULL - 09. notes : text NULL - 10. group_id : integer NULL - 11. created_by : character varying(255) NULL - 12. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 13. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: DASHBOARD_MESSAGES -======================== - - 01. id : integer NOT NULL DEFAULT nextval('dashboard_messages_id_seq'::regclass) - 02. title : character varying(255) NOT NULL - 03. content : text NOT NULL - 04. type : character varying(50) NOT NULL DEFAULT 'info'::character varying - 05. store_id : integer NULL - 06. created_by : character varying(255) NOT NULL - 07. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 3 - -TABLE: DATABASE_BACKUPS -====================== - - 01. id : character varying(255) NOT NULL - 02. filename : character varying(255) NOT NULL - 03. description : text NULL - 04. size : bigint NULL DEFAULT 0 - 05. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 06. created_by : character varying(255) NOT NULL - 07. tables_count : integer NULL DEFAULT 0 - 08. status : character varying(50) NULL DEFAULT 'creating'::character varying - 09. backup_type : character varying(10) NULL DEFAULT 'manual'::character varying - 📈 Nombre d'enregistrements: 10 - -TABLE: DELIVERIES -================ - - 01. id : integer NOT NULL DEFAULT nextval('deliveries_id_seq'::regclass) - 02. order_id : integer NULL - 03. supplier_id : integer NULL - 04. group_id : integer NULL - 05. scheduled_date : date NOT NULL - 06. delivered_date : timestamp without time zone NULL - 07. quantity : integer NOT NULL - 08. unit : character varying(50) NOT NULL - 09. status : character varying(50) NULL DEFAULT 'pending'::character varying - 10. notes : text NULL - 11. bl_number : character varying(255) NULL - 12. bl_amount : numeric NULL - 13. invoice_reference : character varying(255) NULL - 14. invoice_amount : numeric NULL - 15. reconciled : boolean NULL DEFAULT false - 16. validated_at : timestamp without time zone NULL - 17. created_by : character varying(255) NULL - 18. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 19. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 173 - -TABLE: DELIVERY_ITEMS -==================== - - 01. id : integer NOT NULL DEFAULT nextval('delivery_items_id_seq'::regclass) - 02. delivery_id : integer NULL - 03. product_name : character varying(255) NOT NULL - 04. product_reference : character varying(255) NULL - 05. quantity : integer NOT NULL - 06. unit : character varying(50) NULL - 07. notes : text NULL - 08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: DLC_PRODUCTS -================== - - 01. id : integer NOT NULL DEFAULT nextval('dlc_products_id_seq'::regclass) - 02. product_name : character varying(255) NOT NULL - 03. expiry_date : date NOT NULL - 04. date_type : character varying(50) NOT NULL DEFAULT 'DLC'::character varying - 05. quantity : integer NOT NULL DEFAULT 1 - 06. unit : character varying(50) NOT NULL DEFAULT 'unité'::character varying - 07. supplier_id : integer NOT NULL - 08. location : character varying(255) NOT NULL DEFAULT 'Magasin'::character varying - 09. status : character varying(50) NOT NULL DEFAULT 'active'::character varying - 10. notes : text NULL - 11. alert_threshold : integer NOT NULL DEFAULT 15 - 12. validated_at : timestamp without time zone NULL - 13. validated_by : character varying(255) NULL - 14. group_id : integer NOT NULL - 15. created_by : character varying(255) NOT NULL - 16. created_at : timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP - 17. updated_at : timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP - 18. gencode : character varying(255) NULL - 19. name : character varying(255) NULL - 20. dlc_date : date NULL - 21. product_code : character varying(255) NULL - 22. description : text NULL - 23. stock_epuise : boolean NOT NULL DEFAULT false - 24. stock_epuise_by : character varying(255) NULL - 25. stock_epuise_at : timestamp without time zone NULL - 📈 Nombre d'enregistrements: 592 - -TABLE: GROUPS -============ - - 01. id : integer NOT NULL DEFAULT nextval('groups_id_seq'::regclass) - 02. name : character varying(255) NOT NULL - 03. color : character varying(20) NULL DEFAULT '#1976D2'::character varying - 04. nocodb_config_id : integer NULL - 05. nocodb_table_id : character varying(255) NULL - 06. nocodb_table_name : character varying(255) NULL - 07. invoice_column_name : character varying(255) NULL - 08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 09. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 10. nocodb_bl_column_name : character varying(255) NULL - 11. nocodb_amount_column_name : character varying(255) NULL - 12. nocodb_supplier_column_name : character varying(255) NULL - 13. webhook_url : character varying(500) NULL - 📈 Nombre d'enregistrements: 2 - -TABLE: INVOICE_VERIFICATION_CACHE -================================ - - 01. id : integer NOT NULL DEFAULT nextval('invoice_verification_cache_id_seq'::regclass) - 02. cache_key : character varying(255) NOT NULL - 03. group_id : integer NOT NULL - 04. invoice_reference : character varying(255) NOT NULL - 05. supplier_name : character varying(255) NULL - 06. exists : boolean NOT NULL - 07. match_type : character varying(50) NOT NULL - 08. error_message : text NULL - 09. cache_hit : boolean NULL DEFAULT false - 10. api_call_time : integer NULL - 11. expires_at : timestamp without time zone NOT NULL - 12. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 13. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 14. is_reconciled : boolean NULL DEFAULT false - 📈 Nombre d'enregistrements: 220 - -TABLE: INVOICE_VERIFICATIONS -=========================== - - 01. id : integer NOT NULL DEFAULT nextval('invoice_verifications_id_seq'::regclass) - 02. delivery_id : integer NOT NULL - 03. group_id : integer NOT NULL - 04. invoice_reference : character varying(255) NOT NULL - 05. supplier_name : character varying(255) NULL - 06. exists : boolean NOT NULL - 07. match_type : character varying(50) NULL - 08. verified_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 09. is_valid : boolean NULL DEFAULT true - 10. last_checked_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 15 - -TABLE: INVOICES -============== - - 01. id : integer NOT NULL DEFAULT nextval('invoices_id_seq'::regclass) - 02. invoice_number : character varying(255) NOT NULL - 03. supplier_id : integer NULL - 04. group_id : integer NULL - 05. invoice_date : date NOT NULL - 06. due_date : date NULL - 07. amount : numeric NOT NULL - 08. status : character varying(50) NULL DEFAULT 'pending'::character varying - 09. payment_date : date NULL - 10. notes : text NULL - 11. created_by : character varying(255) NULL - 12. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 13. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: NOCODB_CONFIG -=================== - - 01. id : integer NOT NULL DEFAULT nextval('nocodb_config_id_seq'::regclass) - 02. name : character varying(255) NOT NULL - 03. base_url : character varying(255) NOT NULL - 04. project_id : character varying(255) NOT NULL - 05. api_token : character varying(255) NOT NULL - 06. description : text NULL - 07. is_active : boolean NULL DEFAULT true - 08. created_by : character varying(255) NULL - 09. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 10. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 1 - -TABLE: ORDERS -============ - - 01. id : integer NOT NULL DEFAULT nextval('orders_id_seq'::regclass) - 02. supplier_id : integer NULL - 03. group_id : integer NULL - 04. planned_date : date NOT NULL - 05. quantity : integer NULL - 06. unit : character varying(50) NULL - 07. status : character varying(50) NULL DEFAULT 'pending'::character varying - 08. notes : text NULL - 09. created_by : character varying(255) NULL - 10. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 11. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 114 - -TABLE: PERMISSIONS -================= - - 01. id : integer NOT NULL DEFAULT nextval('permissions_id_seq'::regclass) - 02. name : character varying(255) NOT NULL - 03. display_name : character varying(255) NOT NULL - 04. description : text NULL - 05. category : character varying(255) NOT NULL - 06. action : character varying(255) NOT NULL - 07. resource : character varying(255) NOT NULL - 08. is_system : boolean NULL DEFAULT true - 09. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 7 - -TABLE: PUBLICITIES -================= - - 01. id : integer NOT NULL DEFAULT nextval('publicities_id_seq'::regclass) - 02. pub_number : character varying(255) NOT NULL - 03. designation : text NOT NULL - 04. start_date : date NOT NULL - 05. end_date : date NOT NULL - 06. year : integer NOT NULL - 07. created_by : character varying(255) NULL - 08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 09. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 50 - -TABLE: PUBLICITY_PARTICIPATIONS -============================== - - 01. publicity_id : integer NOT NULL - 02. group_id : integer NOT NULL - 📈 Nombre d'enregistrements: 46 - -TABLE: RECONCILIATION_COMMENTS -============================= - - 01. id : integer NOT NULL DEFAULT nextval('reconciliation_comments_id_seq'::regclass) - 02. content : text NOT NULL - 03. type : character varying(255) NOT NULL - 04. delivery_id : integer NOT NULL - 05. author_id : character varying(255) NOT NULL - 06. group_id : integer NOT NULL - 07. created_at : timestamp without time zone NULL DEFAULT now() - 08. updated_at : timestamp without time zone NULL DEFAULT now() - 📈 Nombre d'enregistrements: 0 - -TABLE: ROLE_PERMISSIONS -====================== - - 01. role_id : integer NOT NULL - 02. permission_id : integer NOT NULL - 📈 Nombre d'enregistrements: 21 - -TABLE: ROLES -=========== - - 01. id : integer NOT NULL DEFAULT nextval('roles_id_seq'::regclass) - 02. name : character varying(255) NOT NULL - 03. display_name : character varying(255) NOT NULL - 04. description : text NULL - 05. color : character varying(7) NULL DEFAULT '#6b7280'::character varying - 06. is_system : boolean NULL DEFAULT false - 07. is_active : boolean NULL DEFAULT true - 08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 09. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 4 - -TABLE: SAV_TICKET_HISTORY -======================== - - 01. id : integer NOT NULL DEFAULT nextval('sav_ticket_history_id_seq'::regclass) - 02. ticket_id : integer NOT NULL - 03. action : character varying(100) NOT NULL - 04. description : text NULL - 05. created_by : character varying(255) NOT NULL - 06. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 2 - -TABLE: SAV_TICKETS -================= - - 01. id : integer NOT NULL DEFAULT nextval('sav_tickets_id_seq'::regclass) - 02. ticket_number : character varying(50) NOT NULL - 03. supplier_id : integer NOT NULL - 04. group_id : integer NOT NULL - 05. product_gencode : character varying(255) NOT NULL - 06. product_reference : character varying(255) NULL - 07. product_designation : character varying(500) NOT NULL - 08. problem_type : character varying(100) NOT NULL - 09. problem_description : text NOT NULL - 10. resolution_description : text NULL - 11. status : character varying(50) NOT NULL DEFAULT 'nouveau'::character varying - 12. created_by : character varying(255) NOT NULL - 13. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 14. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 15. resolved_at : timestamp without time zone NULL - 16. closed_at : timestamp without time zone NULL - 17. client_name : character varying(255) NULL - 18. client_phone : character varying(255) NULL - 19. priority : character varying(50) NOT NULL DEFAULT 'normale'::character varying - 📈 Nombre d'enregistrements: 1 - -TABLE: SESSION -============= - - 01. sid : character varying NOT NULL - 02. sess : json NOT NULL - 03. expire : timestamp without time zone NOT NULL - 📈 Nombre d'enregistrements: 13 - -TABLE: SESSIONS -============== - - 01. id : integer NOT NULL DEFAULT nextval('sessions_id_seq'::regclass) - 02. user_id : character varying(255) NULL - 03. session_token : character varying(255) NOT NULL - 04. expires_at : timestamp without time zone NOT NULL - 05. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: STORES -============ - - 01. id : integer NOT NULL DEFAULT nextval('stores_id_seq'::regclass) - 02. name : character varying(255) NOT NULL - 03. address : text NULL - 04. city : character varying(255) NULL - 05. postal_code : character varying(20) NULL - 06. phone : character varying(255) NULL - 07. manager_id : character varying(255) NULL - 08. is_active : boolean NULL DEFAULT true - 09. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 10. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: SUPPLIERS -=============== - - 01. id : integer NOT NULL DEFAULT nextval('suppliers_id_seq'::regclass) - 02. name : character varying(255) NOT NULL - 03. contact : character varying(255) NULL - 04. phone : character varying(255) NULL - 05. has_dlc : boolean NULL DEFAULT false - 06. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 07. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 08. automatic_reconciliation : boolean NULL DEFAULT false - 📈 Nombre d'enregistrements: 45 - -TABLE: TASKS -=========== - - 01. id : integer NOT NULL DEFAULT nextval('tasks_id_seq'::regclass) - 02. title : character varying(255) NOT NULL - 03. description : text NULL - 04. status : character varying(50) NOT NULL DEFAULT 'pending'::character varying - 05. priority : character varying(50) NOT NULL DEFAULT 'medium'::character varying - 06. assigned_to : character varying(255) NULL - 07. due_date : date NULL - 08. group_id : integer NOT NULL - 09. created_by : character varying(255) NOT NULL - 10. created_at : timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP - 11. updated_at : timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP - 12. start_date : timestamp without time zone NULL - 13. completed_at : timestamp without time zone NULL - 14. completed_by : character varying(255) NULL - 📈 Nombre d'enregistrements: 76 - -TABLE: USER_GROUPS -================= - - 01. user_id : character varying(255) NOT NULL - 02. group_id : integer NOT NULL - 📈 Nombre d'enregistrements: 7 - -TABLE: USER_ROLES -================ - - 01. user_id : character varying(255) NOT NULL - 02. role_id : integer NOT NULL - 03. assigned_by : character varying(255) NULL - 04. assigned_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 1 - -TABLE: USERS -=========== - - 01. id : character varying(255) NOT NULL - 02. username : character varying(255) NOT NULL - 03. email : character varying(255) NULL - 04. name : character varying(255) NULL - 05. first_name : character varying(255) NULL - 06. last_name : character varying(255) NULL - 07. profile_image_url : text NULL - 08. password : character varying(255) NULL - 09. role : character varying(50) NULL DEFAULT 'employee'::character varying - 10. password_changed : boolean NULL DEFAULT false - 11. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 12. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 8 - -TABLE: WEATHER_DATA -================== - - 01. id : integer NOT NULL DEFAULT nextval('weather_data_id_seq'::regclass) - 02. date : date NOT NULL - 03. location : text NOT NULL - 04. temp_max : text NOT NULL - 05. temp_min : text NOT NULL - 06. icon : text NOT NULL - 07. conditions : text NOT NULL - 08. is_current_year : boolean NOT NULL DEFAULT true - 09. created_at : timestamp with time zone NULL DEFAULT CURRENT_TIMESTAMP - 10. updated_at : timestamp with time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 63 - -TABLE: WEATHER_SETTINGS -====================== - - 01. id : integer NOT NULL DEFAULT nextval('weather_settings_id_seq'::regclass) - 02. api_key : text NOT NULL - 03. location : text NOT NULL DEFAULT 'Paris, France'::text - 04. is_active : boolean NOT NULL DEFAULT true - 05. created_at : timestamp with time zone NULL DEFAULT CURRENT_TIMESTAMP - 06. updated_at : timestamp with time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 1 - -TABLE: WEBHOOK_BAP_CONFIG -======================== - - 01. id : integer NOT NULL DEFAULT nextval('webhook_bap_config_id_seq'::regclass) - 02. name : character varying(100) NOT NULL DEFAULT 'Configuration BAP'::character varying - 03. webhook_url : text NOT NULL - 04. description : text NULL - 05. is_active : boolean NOT NULL DEFAULT true - 06. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 07. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 1 - -CONTRAINTES DE CLÉS ÉTRANGÈRES: -=================================== - - avoirs.created_by → users.id - avoirs.group_id → groups.id - avoirs.supplier_id → suppliers.id - calendar_events.created_by → users.id - calendar_events.group_id → groups.id - client_orders.created_by → users.id - client_orders.group_id → groups.id - command_items.command_id → commands.id - commands.created_by → users.id - commands.group_id → groups.id - commands.supplier_id → suppliers.id - customer_orders.created_by → users.id - customer_orders.group_id → groups.id - customer_orders.supplier_id → suppliers.id - customers.created_by → users.id - customers.group_id → groups.id - dashboard_messages.store_id → groups.id - database_backups.created_by → users.id - deliveries.created_by → users.id - deliveries.group_id → groups.id - deliveries.order_id → orders.id - deliveries.supplier_id → suppliers.id - delivery_items.delivery_id → deliveries.id - dlc_products.created_by → users.id - dlc_products.group_id → groups.id - dlc_products.supplier_id → suppliers.id - dlc_products.validated_by → users.id - invoice_verification_cache.group_id → groups.id - invoice_verifications.delivery_id → deliveries.id - invoice_verifications.group_id → groups.id - invoices.created_by → users.id - invoices.group_id → groups.id - invoices.supplier_id → suppliers.id - nocodb_config.created_by → users.id - orders.created_by → users.id - orders.group_id → groups.id - orders.supplier_id → suppliers.id - publicities.created_by → users.id - publicity_participations.group_id → groups.id - publicity_participations.publicity_id → publicities.id - reconciliation_comments.author_id → users.id - reconciliation_comments.delivery_id → deliveries.id - reconciliation_comments.group_id → groups.id - role_permissions.permission_id → permissions.id - role_permissions.role_id → roles.id - sav_ticket_history.ticket_id → sav_tickets.id - sav_tickets.group_id → groups.id - sav_tickets.supplier_id → suppliers.id - sessions.user_id → users.id - stores.manager_id → users.id - tasks.completed_by → users.id - tasks.created_by → users.id - tasks.group_id → groups.id - user_groups.group_id → groups.id - user_groups.user_id → users.id - user_roles.assigned_by → users.id - user_roles.role_id → roles.id - user_roles.user_id → users.id - -=============================================== -FIN DU RAPPORT - 2025-09-15T08:08:00.355Z -=============================================== \ No newline at end of file diff --git a/attached_assets/Pasted-LOGIFLOW-RAPPORT-SCH-MA-BASE-DE-DONN-ES-PRODUCTION--1757923704366_1757923704367.txt b/attached_assets/Pasted-LOGIFLOW-RAPPORT-SCH-MA-BASE-DE-DONN-ES-PRODUCTION--1757923704366_1757923704367.txt deleted file mode 100644 index 0f7e1b5..0000000 --- a/attached_assets/Pasted-LOGIFLOW-RAPPORT-SCH-MA-BASE-DE-DONN-ES-PRODUCTION--1757923704366_1757923704367.txt +++ /dev/null @@ -1,641 +0,0 @@ -LOGIFLOW - RAPPORT SCHÉMA BASE DE DONNÉES PRODUCTION -=============================================== - -GÉNÉRÉ LE : 2025-09-15T08:08:00.355Z -SERVEUR : Production privé LogiFlow -ENVIRONNEMENT : PostgreSQL Docker -UTILISATEUR : admin - -=============================================== -RÉSUMÉ DU SCAN -=============================================== - -TOTAL DES TABLES TROUVÉES: 37 -========================================== - -TABLE: AVOIRS -============ - - 01. id : integer NOT NULL DEFAULT nextval('avoirs_id_seq'::regclass) - 02. supplier_id : integer NOT NULL - 03. group_id : integer NOT NULL - 04. invoice_reference : character varying(255) NULL - 05. amount : numeric NULL - 06. comment : text NULL - 07. commercial_processed : boolean NULL DEFAULT false - 08. status : character varying(50) NULL DEFAULT 'En attente de demande'::character varying - 09. webhook_sent : boolean NULL DEFAULT false - 10. nocodb_verified : boolean NULL DEFAULT false - 11. nocodb_verified_at : timestamp without time zone NULL - 12. processed_at : timestamp without time zone NULL - 13. created_by : character varying(255) NOT NULL - 14. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 15. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 5 - -TABLE: CALENDAR_EVENTS -===================== - - 01. id : integer NOT NULL DEFAULT nextval('calendar_events_id_seq'::regclass) - 02. title : character varying(255) NOT NULL - 03. description : text NULL - 04. start_date : timestamp without time zone NOT NULL - 05. end_date : timestamp without time zone NOT NULL - 06. event_type : character varying(50) NULL DEFAULT 'custom'::character varying - 07. group_id : integer NULL - 08. created_by : character varying(255) NULL - 09. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 10. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: CLIENT_ORDERS -=================== - - 01. id : integer NOT NULL DEFAULT nextval('client_orders_id_seq'::regclass) - 02. order_number : character varying(255) NOT NULL - 03. client_name : character varying(255) NOT NULL - 04. client_contact : character varying(255) NULL - 05. product_description : text NOT NULL - 06. quantity : integer NOT NULL DEFAULT 1 - 07. unit_price : numeric NULL - 08. total_amount : numeric NULL - 09. status : character varying(50) NULL DEFAULT 'pending'::character varying - 10. delivery_date : date NULL - 11. notes : text NULL - 12. group_id : integer NULL - 13. created_by : character varying(255) NULL - 14. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 15. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: COMMAND_ITEMS -=================== - - 01. id : integer NOT NULL DEFAULT nextval('command_items_id_seq'::regclass) - 02. command_id : integer NULL - 03. product_name : character varying(255) NOT NULL - 04. product_reference : character varying(255) NULL - 05. quantity : integer NOT NULL - 06. unit_price : numeric NULL - 07. total_price : numeric NULL - 08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: COMMANDS -============== - - 01. id : integer NOT NULL DEFAULT nextval('commands_id_seq'::regclass) - 02. command_number : character varying(255) NOT NULL - 03. supplier_id : integer NULL - 04. group_id : integer NULL - 05. command_date : date NOT NULL - 06. expected_delivery_date : date NULL - 07. status : character varying(50) NULL DEFAULT 'pending'::character varying - 08. total_amount : numeric NULL - 09. notes : text NULL - 10. created_by : character varying(255) NULL - 11. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 12. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: CUSTOMER_ORDERS -===================== - - 01. id : integer NOT NULL DEFAULT nextval('customer_orders_id_seq'::regclass) - 02. order_taker : character varying(255) NOT NULL - 03. customer_name : character varying(255) NOT NULL - 04. customer_phone : character varying(255) NULL - 05. customer_email : character varying(255) NULL - 06. product_designation : text NOT NULL - 07. product_reference : character varying(255) NULL - 08. gencode : character varying(255) NULL - 09. quantity : integer NULL DEFAULT 1 - 10. supplier_id : integer NULL - 11. status : character varying(100) NULL DEFAULT 'En attente de Commande'::character varying - 12. deposit : numeric NULL DEFAULT 0.00 - 13. is_promotional_price : boolean NULL DEFAULT false - 14. customer_notified : boolean NULL DEFAULT false - 15. notes : text NULL - 16. group_id : integer NULL - 17. created_by : character varying(255) NULL - 18. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 19. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 80 - -TABLE: CUSTOMERS -=============== - - 01. id : integer NOT NULL DEFAULT nextval('customers_id_seq'::regclass) - 02. name : character varying(255) NOT NULL - 03. contact_person : character varying(255) NULL - 04. phone : character varying(255) NULL - 05. email : character varying(255) NULL - 06. address : text NULL - 07. city : character varying(255) NULL - 08. postal_code : character varying(20) NULL - 09. notes : text NULL - 10. group_id : integer NULL - 11. created_by : character varying(255) NULL - 12. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 13. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: DASHBOARD_MESSAGES -======================== - - 01. id : integer NOT NULL DEFAULT nextval('dashboard_messages_id_seq'::regclass) - 02. title : character varying(255) NOT NULL - 03. content : text NOT NULL - 04. type : character varying(50) NOT NULL DEFAULT 'info'::character varying - 05. store_id : integer NULL - 06. created_by : character varying(255) NOT NULL - 07. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 3 - -TABLE: DATABASE_BACKUPS -====================== - - 01. id : character varying(255) NOT NULL - 02. filename : character varying(255) NOT NULL - 03. description : text NULL - 04. size : bigint NULL DEFAULT 0 - 05. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 06. created_by : character varying(255) NOT NULL - 07. tables_count : integer NULL DEFAULT 0 - 08. status : character varying(50) NULL DEFAULT 'creating'::character varying - 09. backup_type : character varying(10) NULL DEFAULT 'manual'::character varying - 📈 Nombre d'enregistrements: 10 - -TABLE: DELIVERIES -================ - - 01. id : integer NOT NULL DEFAULT nextval('deliveries_id_seq'::regclass) - 02. order_id : integer NULL - 03. supplier_id : integer NULL - 04. group_id : integer NULL - 05. scheduled_date : date NOT NULL - 06. delivered_date : timestamp without time zone NULL - 07. quantity : integer NOT NULL - 08. unit : character varying(50) NOT NULL - 09. status : character varying(50) NULL DEFAULT 'pending'::character varying - 10. notes : text NULL - 11. bl_number : character varying(255) NULL - 12. bl_amount : numeric NULL - 13. invoice_reference : character varying(255) NULL - 14. invoice_amount : numeric NULL - 15. reconciled : boolean NULL DEFAULT false - 16. validated_at : timestamp without time zone NULL - 17. created_by : character varying(255) NULL - 18. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 19. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 173 - -TABLE: DELIVERY_ITEMS -==================== - - 01. id : integer NOT NULL DEFAULT nextval('delivery_items_id_seq'::regclass) - 02. delivery_id : integer NULL - 03. product_name : character varying(255) NOT NULL - 04. product_reference : character varying(255) NULL - 05. quantity : integer NOT NULL - 06. unit : character varying(50) NULL - 07. notes : text NULL - 08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: DLC_PRODUCTS -================== - - 01. id : integer NOT NULL DEFAULT nextval('dlc_products_id_seq'::regclass) - 02. product_name : character varying(255) NOT NULL - 03. expiry_date : date NOT NULL - 04. date_type : character varying(50) NOT NULL DEFAULT 'DLC'::character varying - 05. quantity : integer NOT NULL DEFAULT 1 - 06. unit : character varying(50) NOT NULL DEFAULT 'unité'::character varying - 07. supplier_id : integer NOT NULL - 08. location : character varying(255) NOT NULL DEFAULT 'Magasin'::character varying - 09. status : character varying(50) NOT NULL DEFAULT 'active'::character varying - 10. notes : text NULL - 11. alert_threshold : integer NOT NULL DEFAULT 15 - 12. validated_at : timestamp without time zone NULL - 13. validated_by : character varying(255) NULL - 14. group_id : integer NOT NULL - 15. created_by : character varying(255) NOT NULL - 16. created_at : timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP - 17. updated_at : timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP - 18. gencode : character varying(255) NULL - 19. name : character varying(255) NULL - 20. dlc_date : date NULL - 21. product_code : character varying(255) NULL - 22. description : text NULL - 23. stock_epuise : boolean NOT NULL DEFAULT false - 24. stock_epuise_by : character varying(255) NULL - 25. stock_epuise_at : timestamp without time zone NULL - 📈 Nombre d'enregistrements: 592 - -TABLE: GROUPS -============ - - 01. id : integer NOT NULL DEFAULT nextval('groups_id_seq'::regclass) - 02. name : character varying(255) NOT NULL - 03. color : character varying(20) NULL DEFAULT '#1976D2'::character varying - 04. nocodb_config_id : integer NULL - 05. nocodb_table_id : character varying(255) NULL - 06. nocodb_table_name : character varying(255) NULL - 07. invoice_column_name : character varying(255) NULL - 08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 09. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 10. nocodb_bl_column_name : character varying(255) NULL - 11. nocodb_amount_column_name : character varying(255) NULL - 12. nocodb_supplier_column_name : character varying(255) NULL - 13. webhook_url : character varying(500) NULL - 📈 Nombre d'enregistrements: 2 - -TABLE: INVOICE_VERIFICATION_CACHE -================================ - - 01. id : integer NOT NULL DEFAULT nextval('invoice_verification_cache_id_seq'::regclass) - 02. cache_key : character varying(255) NOT NULL - 03. group_id : integer NOT NULL - 04. invoice_reference : character varying(255) NOT NULL - 05. supplier_name : character varying(255) NULL - 06. exists : boolean NOT NULL - 07. match_type : character varying(50) NOT NULL - 08. error_message : text NULL - 09. cache_hit : boolean NULL DEFAULT false - 10. api_call_time : integer NULL - 11. expires_at : timestamp without time zone NOT NULL - 12. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 13. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 14. is_reconciled : boolean NULL DEFAULT false - 📈 Nombre d'enregistrements: 220 - -TABLE: INVOICE_VERIFICATIONS -=========================== - - 01. id : integer NOT NULL DEFAULT nextval('invoice_verifications_id_seq'::regclass) - 02. delivery_id : integer NOT NULL - 03. group_id : integer NOT NULL - 04. invoice_reference : character varying(255) NOT NULL - 05. supplier_name : character varying(255) NULL - 06. exists : boolean NOT NULL - 07. match_type : character varying(50) NULL - 08. verified_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 09. is_valid : boolean NULL DEFAULT true - 10. last_checked_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 15 - -TABLE: INVOICES -============== - - 01. id : integer NOT NULL DEFAULT nextval('invoices_id_seq'::regclass) - 02. invoice_number : character varying(255) NOT NULL - 03. supplier_id : integer NULL - 04. group_id : integer NULL - 05. invoice_date : date NOT NULL - 06. due_date : date NULL - 07. amount : numeric NOT NULL - 08. status : character varying(50) NULL DEFAULT 'pending'::character varying - 09. payment_date : date NULL - 10. notes : text NULL - 11. created_by : character varying(255) NULL - 12. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 13. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: NOCODB_CONFIG -=================== - - 01. id : integer NOT NULL DEFAULT nextval('nocodb_config_id_seq'::regclass) - 02. name : character varying(255) NOT NULL - 03. base_url : character varying(255) NOT NULL - 04. project_id : character varying(255) NOT NULL - 05. api_token : character varying(255) NOT NULL - 06. description : text NULL - 07. is_active : boolean NULL DEFAULT true - 08. created_by : character varying(255) NULL - 09. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 10. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 1 - -TABLE: ORDERS -============ - - 01. id : integer NOT NULL DEFAULT nextval('orders_id_seq'::regclass) - 02. supplier_id : integer NULL - 03. group_id : integer NULL - 04. planned_date : date NOT NULL - 05. quantity : integer NULL - 06. unit : character varying(50) NULL - 07. status : character varying(50) NULL DEFAULT 'pending'::character varying - 08. notes : text NULL - 09. created_by : character varying(255) NULL - 10. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 11. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 114 - -TABLE: PERMISSIONS -================= - - 01. id : integer NOT NULL DEFAULT nextval('permissions_id_seq'::regclass) - 02. name : character varying(255) NOT NULL - 03. display_name : character varying(255) NOT NULL - 04. description : text NULL - 05. category : character varying(255) NOT NULL - 06. action : character varying(255) NOT NULL - 07. resource : character varying(255) NOT NULL - 08. is_system : boolean NULL DEFAULT true - 09. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 7 - -TABLE: PUBLICITIES -================= - - 01. id : integer NOT NULL DEFAULT nextval('publicities_id_seq'::regclass) - 02. pub_number : character varying(255) NOT NULL - 03. designation : text NOT NULL - 04. start_date : date NOT NULL - 05. end_date : date NOT NULL - 06. year : integer NOT NULL - 07. created_by : character varying(255) NULL - 08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 09. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 50 - -TABLE: PUBLICITY_PARTICIPATIONS -============================== - - 01. publicity_id : integer NOT NULL - 02. group_id : integer NOT NULL - 📈 Nombre d'enregistrements: 46 - -TABLE: RECONCILIATION_COMMENTS -============================= - - 01. id : integer NOT NULL DEFAULT nextval('reconciliation_comments_id_seq'::regclass) - 02. content : text NOT NULL - 03. type : character varying(255) NOT NULL - 04. delivery_id : integer NOT NULL - 05. author_id : character varying(255) NOT NULL - 06. group_id : integer NOT NULL - 07. created_at : timestamp without time zone NULL DEFAULT now() - 08. updated_at : timestamp without time zone NULL DEFAULT now() - 📈 Nombre d'enregistrements: 0 - -TABLE: ROLE_PERMISSIONS -====================== - - 01. role_id : integer NOT NULL - 02. permission_id : integer NOT NULL - 📈 Nombre d'enregistrements: 21 - -TABLE: ROLES -=========== - - 01. id : integer NOT NULL DEFAULT nextval('roles_id_seq'::regclass) - 02. name : character varying(255) NOT NULL - 03. display_name : character varying(255) NOT NULL - 04. description : text NULL - 05. color : character varying(7) NULL DEFAULT '#6b7280'::character varying - 06. is_system : boolean NULL DEFAULT false - 07. is_active : boolean NULL DEFAULT true - 08. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 09. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 4 - -TABLE: SAV_TICKET_HISTORY -======================== - - 01. id : integer NOT NULL DEFAULT nextval('sav_ticket_history_id_seq'::regclass) - 02. ticket_id : integer NOT NULL - 03. action : character varying(100) NOT NULL - 04. description : text NULL - 05. created_by : character varying(255) NOT NULL - 06. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 2 - -TABLE: SAV_TICKETS -================= - - 01. id : integer NOT NULL DEFAULT nextval('sav_tickets_id_seq'::regclass) - 02. ticket_number : character varying(50) NOT NULL - 03. supplier_id : integer NOT NULL - 04. group_id : integer NOT NULL - 05. product_gencode : character varying(255) NOT NULL - 06. product_reference : character varying(255) NULL - 07. product_designation : character varying(500) NOT NULL - 08. problem_type : character varying(100) NOT NULL - 09. problem_description : text NOT NULL - 10. resolution_description : text NULL - 11. status : character varying(50) NOT NULL DEFAULT 'nouveau'::character varying - 12. created_by : character varying(255) NOT NULL - 13. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 14. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 15. resolved_at : timestamp without time zone NULL - 16. closed_at : timestamp without time zone NULL - 17. client_name : character varying(255) NULL - 18. client_phone : character varying(255) NULL - 19. priority : character varying(50) NOT NULL DEFAULT 'normale'::character varying - 📈 Nombre d'enregistrements: 1 - -TABLE: SESSION -============= - - 01. sid : character varying NOT NULL - 02. sess : json NOT NULL - 03. expire : timestamp without time zone NOT NULL - 📈 Nombre d'enregistrements: 13 - -TABLE: SESSIONS -============== - - 01. id : integer NOT NULL DEFAULT nextval('sessions_id_seq'::regclass) - 02. user_id : character varying(255) NULL - 03. session_token : character varying(255) NOT NULL - 04. expires_at : timestamp without time zone NOT NULL - 05. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: STORES -============ - - 01. id : integer NOT NULL DEFAULT nextval('stores_id_seq'::regclass) - 02. name : character varying(255) NOT NULL - 03. address : text NULL - 04. city : character varying(255) NULL - 05. postal_code : character varying(20) NULL - 06. phone : character varying(255) NULL - 07. manager_id : character varying(255) NULL - 08. is_active : boolean NULL DEFAULT true - 09. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 10. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 0 - -TABLE: SUPPLIERS -=============== - - 01. id : integer NOT NULL DEFAULT nextval('suppliers_id_seq'::regclass) - 02. name : character varying(255) NOT NULL - 03. contact : character varying(255) NULL - 04. phone : character varying(255) NULL - 05. has_dlc : boolean NULL DEFAULT false - 06. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 07. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 08. automatic_reconciliation : boolean NULL DEFAULT false - 📈 Nombre d'enregistrements: 45 - -TABLE: TASKS -=========== - - 01. id : integer NOT NULL DEFAULT nextval('tasks_id_seq'::regclass) - 02. title : character varying(255) NOT NULL - 03. description : text NULL - 04. status : character varying(50) NOT NULL DEFAULT 'pending'::character varying - 05. priority : character varying(50) NOT NULL DEFAULT 'medium'::character varying - 06. assigned_to : character varying(255) NULL - 07. due_date : date NULL - 08. group_id : integer NOT NULL - 09. created_by : character varying(255) NOT NULL - 10. created_at : timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP - 11. updated_at : timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP - 12. start_date : timestamp without time zone NULL - 13. completed_at : timestamp without time zone NULL - 14. completed_by : character varying(255) NULL - 📈 Nombre d'enregistrements: 76 - -TABLE: USER_GROUPS -================= - - 01. user_id : character varying(255) NOT NULL - 02. group_id : integer NOT NULL - 📈 Nombre d'enregistrements: 7 - -TABLE: USER_ROLES -================ - - 01. user_id : character varying(255) NOT NULL - 02. role_id : integer NOT NULL - 03. assigned_by : character varying(255) NULL - 04. assigned_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 1 - -TABLE: USERS -=========== - - 01. id : character varying(255) NOT NULL - 02. username : character varying(255) NOT NULL - 03. email : character varying(255) NULL - 04. name : character varying(255) NULL - 05. first_name : character varying(255) NULL - 06. last_name : character varying(255) NULL - 07. profile_image_url : text NULL - 08. password : character varying(255) NULL - 09. role : character varying(50) NULL DEFAULT 'employee'::character varying - 10. password_changed : boolean NULL DEFAULT false - 11. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 12. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 8 - -TABLE: WEATHER_DATA -================== - - 01. id : integer NOT NULL DEFAULT nextval('weather_data_id_seq'::regclass) - 02. date : date NOT NULL - 03. location : text NOT NULL - 04. temp_max : text NOT NULL - 05. temp_min : text NOT NULL - 06. icon : text NOT NULL - 07. conditions : text NOT NULL - 08. is_current_year : boolean NOT NULL DEFAULT true - 09. created_at : timestamp with time zone NULL DEFAULT CURRENT_TIMESTAMP - 10. updated_at : timestamp with time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 63 - -TABLE: WEATHER_SETTINGS -====================== - - 01. id : integer NOT NULL DEFAULT nextval('weather_settings_id_seq'::regclass) - 02. api_key : text NOT NULL - 03. location : text NOT NULL DEFAULT 'Paris, France'::text - 04. is_active : boolean NOT NULL DEFAULT true - 05. created_at : timestamp with time zone NULL DEFAULT CURRENT_TIMESTAMP - 06. updated_at : timestamp with time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 1 - -TABLE: WEBHOOK_BAP_CONFIG -======================== - - 01. id : integer NOT NULL DEFAULT nextval('webhook_bap_config_id_seq'::regclass) - 02. name : character varying(100) NOT NULL DEFAULT 'Configuration BAP'::character varying - 03. webhook_url : text NOT NULL - 04. description : text NULL - 05. is_active : boolean NOT NULL DEFAULT true - 06. created_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 07. updated_at : timestamp without time zone NULL DEFAULT CURRENT_TIMESTAMP - 📈 Nombre d'enregistrements: 1 - -CONTRAINTES DE CLÉS ÉTRANGÈRES: -=================================== - - avoirs.created_by → users.id - avoirs.group_id → groups.id - avoirs.supplier_id → suppliers.id - calendar_events.created_by → users.id - calendar_events.group_id → groups.id - client_orders.created_by → users.id - client_orders.group_id → groups.id - command_items.command_id → commands.id - commands.created_by → users.id - commands.group_id → groups.id - commands.supplier_id → suppliers.id - customer_orders.created_by → users.id - customer_orders.group_id → groups.id - customer_orders.supplier_id → suppliers.id - customers.created_by → users.id - customers.group_id → groups.id - dashboard_messages.store_id → groups.id - database_backups.created_by → users.id - deliveries.created_by → users.id - deliveries.group_id → groups.id - deliveries.order_id → orders.id - deliveries.supplier_id → suppliers.id - delivery_items.delivery_id → deliveries.id - dlc_products.created_by → users.id - dlc_products.group_id → groups.id - dlc_products.supplier_id → suppliers.id - dlc_products.validated_by → users.id - invoice_verification_cache.group_id → groups.id - invoice_verifications.delivery_id → deliveries.id - invoice_verifications.group_id → groups.id - invoices.created_by → users.id - invoices.group_id → groups.id - invoices.supplier_id → suppliers.id - nocodb_config.created_by → users.id - orders.created_by → users.id - orders.group_id → groups.id - orders.supplier_id → suppliers.id - publicities.created_by → users.id - publicity_participations.group_id → groups.id - publicity_participations.publicity_id → publicities.id - reconciliation_comments.author_id → users.id - reconciliation_comments.delivery_id → deliveries.id - reconciliation_comments.group_id → groups.id - role_permissions.permission_id → permissions.id - role_permissions.role_id → roles.id - sav_ticket_history.ticket_id → sav_tickets.id - sav_tickets.group_id → groups.id - sav_tickets.supplier_id → suppliers.id - sessions.user_id → users.id - stores.manager_id → users.id - tasks.completed_by → users.id - tasks.created_by → users.id - tasks.group_id → groups.id - user_groups.group_id → groups.id - user_groups.user_id → users.id - user_roles.assigned_by → users.id - user_roles.role_id → roles.id - user_roles.user_id → users.id - -=============================================== -FIN DU RAPPORT - 2025-09-15T08:08:00.355Z -=============================================== \ No newline at end of file diff --git a/attached_assets/Pasted-Lines-100-Actions-id-20-title-DLC-content-Atten-1762257823796_1762257823796.txt b/attached_assets/Pasted-Lines-100-Actions-id-20-title-DLC-content-Atten-1762257823796_1762257823796.txt deleted file mode 100644 index b72e794..0000000 --- a/attached_assets/Pasted-Lines-100-Actions-id-20-title-DLC-content-Atten-1762257823796_1762257823796.txt +++ /dev/null @@ -1,207 +0,0 @@ -Lines -100 -Actions - - - - - { - - id: 20, - - title: 'DLC', - - content: 'Attention des DLC sont en expiré bientôt ou expiré, il faut s en occuper', - - type: 'success', - - storeId: 2, - - createdBy: 'admin', - - createdAt: 2025-09-24T11:26:13.521Z - - }, - - { - - id: 17, - - title: 'Module Avoir', - - content: "Le module d'avoir est en place", - - type: 'error', - - storeId: 1, - - createdBy: 'admin', - - createdAt: 2025-09-09T07:47:47.650Z - - }, - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -🔍 [PRODUCTION] Raw messages from DB: 4 items: [ - - { - - id: 20, - - title: 'DLC', - - content: 'Attention des DLC sont en expiré bientôt ou expiré, il faut s en occuper', - - type: 'success', - - storeId: 2, - - createdBy: 'admin', - - createdAt: 2025-09-24T11:26:13.521Z - - }, - - { - - id: 17, - - title: 'Module Avoir', - - content: "Le module d'avoir est en place", - - type: 'error', - - storeId: 1, - - createdBy: 'admin', - - createdAt: 2025-09-09T07:47:47.650Z - - }, - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Not found - -🔍 [PRODUCTION] User search result: Not found - -❌ [PRODUCTION] User not found with username: admin_local - -❌ [PRODUCTION] User not found with username: admin_local - -🎯 [PRODUCTION] Found announcements: 4 - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Found - -GET /api/announcements 304 in 29ms - -🎯 [PRODUCTION] Found announcements: 4 - -GET /api/announcements 304 in 31ms - -GET /api/dlc-products 200 in 31ms - -GET /api/groups 200 in 5ms - -HEAD /api/health 200 in 1ms - diff --git a/attached_assets/Pasted-Registries-Logs-Notifications-Settings-New-version-available-2-27-9-DismissSee-what-s-n-1755170827298_1755170827298.txt b/attached_assets/Pasted-Registries-Logs-Notifications-Settings-New-version-available-2-27-9-DismissSee-what-s-n-1755170827298_1755170827298.txt deleted file mode 100644 index 65f83e7..0000000 --- a/attached_assets/Pasted-Registries-Logs-Notifications-Settings-New-version-available-2-27-9-DismissSee-what-s-n-1755170827298_1755170827298.txt +++ /dev/null @@ -1,231 +0,0 @@ -Registries - -Logs - -Notifications - -Settings - -New version available 2.27.9 -DismissSee what's new -Community Edition -2.27.6 LTS -Containers>logiflow-logiflow-1>Logs -Container logs - - -admin -Log viewer settings -Auto-refresh logs -Wrap lines -Display timestamps -Fetch -All logs -Search -Filter... -Lines -100 -Actions - - - - -Customer Orders API called with: { groupIds: [ 2 ], userRole: 'admin' } - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '2', - - userRole: 'admin' - -} - -Admin filtering with groupIds: [ 2 ] - -Fetching all orders - -GET /api/publicities 304 in 33ms - -Customer Orders returned: 25 items - -GET /api/customer-orders 304 in 43ms - -🔗 PRODUCTION: getOrders() récupéré 18 commandes avec relations - -Orders returned: 18 items - -GET /api/orders 304 in 59ms - -🔗 PRODUCTION: getDeliveries() récupéré 38 livraisons avec relations - -Deliveries returned: 38 items - -GET /api/deliveries 304 in 65ms - -GET /api/groups 200 in 5ms - -POST /api/logout 302 in 4ms - -📄 SPA: Serving index.html for /auth - -📄 SPA: Serving index.html for /auth - -GET /api/user 401 in 1ms - -GET /api/user 401 in 0ms - -GET /api/default-credentials-check 304 in 1ms - -🔐 comparePasswords: { - - supplied: 'HIDDEN', - - stored: 'b23ec450a63faf3957a1...', - - hasFormat: true - -} - -🔐 Password comparison result: true - -POST /api/login 200 in 51ms - -GET /api/user 200 in 3ms - -GET /api/user 304 in 4ms - -📊 Calcul statistiques mensuelles: { - - year: 2025, - - month: 8, - - startDate: '2025-08-01', - - endDate: '2025-09-01', - - groupIds: [ 2 ] - -} - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - userRole: 'employee' - -} - -Non-admin filtering with groupIds: [ 2 ] - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - withBL: undefined, - - userRole: 'employee' - -} - -Non-admin filtering deliveries with groupIds: [ 2 ] - -🔗 PRODUCTION: getOrders() récupéré 18 commandes avec relations - -Orders returned: 18 items - -GET /api/orders 200 in 54ms - -Customer Orders API called with: { groupIds: [ 2 ], userRole: 'employee' } - -📊 Statistiques calculées: { - - ordersCount: 8, - - deliveriesCount: 21, - - pendingOrdersCount: 4, - - averageDeliveryTime: 0.17647058823529413, - - totalPalettes: 57, - - totalPackages: 17 - -} - -GET /api/stats/monthly 200 in 62ms - -Tasks API called with: { groupIds: [ 2 ], userRole: 'employee' } - -Customer Orders returned: 25 items - -GET /api/customer-orders 200 in 76ms - -Tasks returned: 9 items - -GET /api/dlc-products/stats 200 in 80ms - -GET /api/tasks 200 in 78ms - -GET /api/publicities 304 in 84ms - -GET /api/user 304 in 40ms - -🔗 PRODUCTION: getDeliveries() récupéré 38 livraisons avec relations - -Deliveries returned: 38 items - -GET /api/deliveries 200 in 93ms - -GET /api/user 304 in 5ms - -GET /api/publicities 304 in 8ms - -GET /api/groups 200 in 6ms - -GET /api/user 304 in 7ms - -GET /api/suppliers 304 in 6ms - -GET /api/user 304 in 4ms - -🔍 CUSTOMER ORDER PERMISSION DEBUG: { - - userRole: 'employee', - - userId: '_1753266816257', - - userGroups: [ { userId: '_1753266816257', groupId: 2, group: [Object] } ], - - requestedGroupId: 1, - - requestedGroupIdType: 'number' - -} - -🔍 CUSTOMER ORDER - User group IDs: [ 2 ] - -🔍 CUSTOMER ORDER - Requested group ID: 1 - -❌ CUSTOMER ORDER - Access denied: User not in requested group - -🔍 Available groups: [ 2 ] Requested: 1 - -POST /api/customer-orders 403 in 7ms - -HEAD /api/health 200 in 0ms - -HEAD /api/health 200 in 1ms \ No newline at end of file diff --git a/attached_assets/Pasted-Search-Filter-Lines-100-Actions-Fetching-all-deliveries-SERVER-Fetc-1756808253935_1756808253935.txt b/attached_assets/Pasted-Search-Filter-Lines-100-Actions-Fetching-all-deliveries-SERVER-Fetc-1756808253935_1756808253935.txt deleted file mode 100644 index 73ad04c..0000000 --- a/attached_assets/Pasted-Search-Filter-Lines-100-Actions-Fetching-all-deliveries-SERVER-Fetc-1756808253935_1756808253935.txt +++ /dev/null @@ -1,209 +0,0 @@ -Search -Filter... -Lines -100 -Actions - - - - -Fetching all deliveries - -📢 [SERVER] Fetching announcements for user: admin_local environment: production - -Customer Orders API called with: { groupIds: [ 2 ], userRole: 'admin' } - -🔗 PRODUCTION: getOrders() récupéré 29 commandes avec relations - -Orders returned: 29 items - -GET /api/orders 200 in 95ms - -❌ PRODUCTION: Delivery #127 (store 2) linked to order #81 (store 1) - STORE MISMATCH DETECTED! - -Customer Orders returned: 42 items - -🔗 PRODUCTION: getDeliveries() récupéré 59 livraisons avec relations - -Deliveries returned: 59 items - -📢 [SERVER] User found: { username: 'admin', role: 'admin' } - -🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table - -GET /api/customer-orders 304 in 109ms - -GET /api/deliveries 304 in 111ms - -🔍 [PRODUCTION] Raw messages from DB: 2 items: [ - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -GET /api/groups 304 in 58ms - -🔍 [PRODUCTION] User search result: Found - -❌ [PRODUCTION] User not found with username: admin_local - -🔍 [PRODUCTION] User search result: Not found - -🎯 [PRODUCTION] Found announcements: 2 - -GET /api/announcements 304 in 117ms - -GET /api/user 304 in 4ms - -GET /api/users 304 in 15ms - -HEAD /api/health 200 in 0ms - -📝 POST /api/tasks - Received data: { - - originalBody: { - - title: 'test', - - description: 'test', - - priority: 'medium', - - status: 'pending', - - assignedTo: 'Non assigné', - - startDate: '2025-09-02', - - dueDate: '2025-09-07', - - groupId: 2, - - createdBy: 'admin' - - }, - - processedData: { - - title: 'test', - - description: 'test', - - priority: 'medium', - - status: 'pending', - - assignedTo: 'Non assigné', - - startDate: '2025-09-02', - - dueDate: '2025-09-07', - - groupId: 2, - - createdBy: 'admin_local' - - }, - - dueDate: '2025-09-07', - - dueDateType: 'string', - - dueDateValue: '2025-09-07' - -} - -💾 DatabaseStorage.createTask - Input: { - - taskData: { - - title: 'test', - - description: 'test', - - priority: 'medium', - - status: 'pending', - - assignedTo: 'Non assigné', - - startDate: '2025-09-02', - - dueDate: '2025-09-07', - - groupId: 2, - - createdBy: 'admin_local' - - }, - - dueDate: '2025-09-07', - - dueDateType: 'string', - - dueDateISO: '2025-09-07' - -} - -Error creating task: TypeError: value.toISOString is not a function - - at PgTimestamp.mapToDriverValue (file:///app/node_modules/drizzle-orm/pg-core/columns/timestamp.js:34:18) - - at file:///app/node_modules/drizzle-orm/sql/sql.js:131:73 - - at Array.map () - - at SQL.buildQueryFromSourceParams (file:///app/node_modules/drizzle-orm/sql/sql.js:73:32) - - at file:///app/node_modules/drizzle-orm/sql/sql.js:92:21 - - at Array.map () - - at SQL.buildQueryFromSourceParams (file:///app/node_modules/drizzle-orm/sql/sql.js:73:32) - - at file:///app/node_modules/drizzle-orm/sql/sql.js:95:21 - - at Array.map () - - at SQL.buildQueryFromSourceParams (file:///app/node_modules/drizzle-orm/sql/sql.js:73:32) - -POST /api/tasks 500 in 7ms - diff --git a/attached_assets/Pasted-api-deliveries-48-verify-invoice-1-Failed-to-load-resource-net-ERR-INSUFFICIENT-RESOURCES-api-de-1756624625816_1756624625818.txt b/attached_assets/Pasted-api-deliveries-48-verify-invoice-1-Failed-to-load-resource-net-ERR-INSUFFICIENT-RESOURCES-api-de-1756624625816_1756624625818.txt deleted file mode 100644 index d20e56d..0000000 --- a/attached_assets/Pasted-api-deliveries-48-verify-invoice-1-Failed-to-load-resource-net-ERR-INSUFFICIENT-RESOURCES-api-de-1756624625816_1756624625818.txt +++ /dev/null @@ -1,1299 +0,0 @@ -api/deliveries/48/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/56/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/79/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/41/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/83/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/26/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/78/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/32/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/52/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/121/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/87/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/89/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/141/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/31/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/101/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/100/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/46/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/84/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/90/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/71/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/152/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/71/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/76/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/36/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/138/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/53/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/133/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/45/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/158/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/77/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/31/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/129/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/66/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/94/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/152/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/144/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/60/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/36/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/84/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/90/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/62/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/129/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/53/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/50/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/132/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/134/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/38/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/84/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/75/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/130/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/139/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/124/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/144/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/142/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/96/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/141/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/79/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/127/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/88/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/141/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/101/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/158/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/60/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/66/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/33/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/124/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/45/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/86/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/131/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/39/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/31/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/52/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/145/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/157/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/68/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/158/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/158/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/84/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/62/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/123/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/11/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/37/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/101/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/144/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/157/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/39/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/71/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/87/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/139/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/52/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/127/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/149/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/46/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/131/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/75/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/89/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/38/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/111/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/100/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/129/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/93/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/90/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/42/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/84/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/36/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/67/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/77/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/30/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/139/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/75/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/80/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/88/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/39/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/74/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/129/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/123/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/132/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/16/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/15/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/147/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/157/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/69/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/75/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/157/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/121/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/91/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/90/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/104/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/88/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/137/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/137/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/131/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/144/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/28/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/138/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/82/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/37/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/30/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/101/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/50/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/147/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/27/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/46/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/69/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/141/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/69/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/91/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/48/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/46/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/38/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/145/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/111/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/35/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/37/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/135/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/138/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/77/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/156/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/101/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/11/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/138/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/81/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/144/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/53/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/28/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/74/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/56/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/93/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/15/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/71/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/36/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/26/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/31/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/78/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/104/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/101/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/48/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/42/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/62/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/55/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/80/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/82/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/52/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/127/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/89/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/30/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/122/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/144/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/38/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/138/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/83/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/145/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/122/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/88/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/43/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/138/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/39/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/48/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/156/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/78/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/78/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/132/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/90/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/43/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/137/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/75/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/60/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/90/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/137/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/134/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/97/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/90/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/68/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/69/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/79/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/133/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/141/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/52/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/158/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/53/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/37/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/53/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/56/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/29/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/42/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/124/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/124/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/46/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/111/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/37/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/86/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/137/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/90/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/61/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/75/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/43/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/138/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/123/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/88/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/89/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/97/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/15/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/46/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/149/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/142/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/129/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/78/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/75/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/158/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/141/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/71/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/43/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/15/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/84/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/139/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/104/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/36/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/133/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/41/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/45/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/80/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/36/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/152/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/137/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/129/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/139/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/31/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/138/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/111/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/96/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/97/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/138/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/76/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/158/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/133/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/100/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/39/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/31/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/38/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/45/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/122/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/137/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/49/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/127/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/101/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/75/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/88/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/132/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/53/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/152/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/42/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/91/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/42/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/69/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/68/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/68/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/36/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/46/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -api/deliveries/36/verify-invoice:1 Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object -index-tQUr3tSu.js:458 🔍 Auth Environment Debug: Object diff --git a/attached_assets/Pasted-ctions-Admin-filtering-deliveries-with-groupIds-1-Fetching-all-deliveries--1755422394817_1755422394817.txt b/attached_assets/Pasted-ctions-Admin-filtering-deliveries-with-groupIds-1-Fetching-all-deliveries--1755422394817_1755422394817.txt deleted file mode 100644 index 3c08bc1..0000000 --- a/attached_assets/Pasted-ctions-Admin-filtering-deliveries-with-groupIds-1-Fetching-all-deliveries--1755422394817_1755422394817.txt +++ /dev/null @@ -1,209 +0,0 @@ -ctions - - - - -Admin filtering deliveries with groupIds: [ 1 ] - -Fetching all deliveries - -📢 [SERVER] Fetching announcements for user: admin_local environment: production - -📢 [SERVER] User found: { username: 'admin', role: 'admin' } - -🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - userRole: 'admin' - -} - -Admin filtering with groupIds: [ 1 ] - -Fetching all orders - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -GET /api/publicities 200 in 191ms - -🎯 [PRODUCTION] Found announcements: 0 - -Customer Orders returned: 10 items - -🔗 PRODUCTION: getDeliveries() récupéré 48 livraisons avec relations - -Deliveries returned: 48 items - -GET /api/announcements 200 in 265ms - -GET /api/customer-orders 200 in 180ms - -GET /api/deliveries 200 in 187ms - -🔗 PRODUCTION: getOrders() récupéré 33 commandes avec relations - -Orders returned: 33 items - -GET /api/orders 200 in 241ms - -🎯 [SERVER] POST /api/announcements endpoint hit - -🎯 [SERVER] Request body: { - - "title": "test", - - "content": "test", - - "type": "info", - - "storeId": 1, - - "createdBy": "admin" - -} - -🎯 [SERVER] User object: { hasClaims: false, hasId: true, userId: 'admin_local' } - -🎯 [SERVER] Extracted userId: admin_local - -🎯 [SERVER] User found: { username: 'admin', role: 'admin', id: 'admin_local' } - -🎯 [SERVER] User is admin, proceeding with validation - -🎯 [SERVER] Announcement data validated: { - - title: 'test', - - content: 'test', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local' - -} - -🎯 [PRODUCTION] Creating in PostgreSQL DASHBOARD_MESSAGES table - -🎯 [PRODUCTION] Announcement created successfully in DB: { - - - -, - - title: 'test', - - content: 'test', - - type: 'info', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-17T09:19:30.102Z, - - author: { id: 'admin_local', firstName: 'Administrateur', lastName: '' }, - - group: null - -} - -POST /api/announcements 201 in 19ms - -📢 [SERVER] Fetching announcements for user: admin_local environment: production - -📢 [SERVER] User found: { username: 'admin', role: 'admin' } - -🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table - -🎯 [PRODUCTION] Found announcements: 0 - -GET /api/announcements 200 in 8ms - -HEAD /api/health 200 in 0ms - -🎯 [SERVER] POST /api/announcements endpoint hit - -🎯 [SERVER] Request body: { - - "title": "rzqr", - - "content": "etset", - - "type": "info", - - "storeId": 1, - - "createdBy": "admin" - -} - -🎯 [SERVER] User object: { hasClaims: false, hasId: true, userId: 'admin_local' } - -🎯 [SERVER] Extracted userId: admin_local - -🎯 [SERVER] User found: { username: 'admin', role: 'admin', id: 'admin_local' } - -🎯 [SERVER] User is admin, proceeding with validation - -🎯 [SERVER] Announcement data validated: { - - title: 'rzqr', - - content: 'etset', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local' - -} - -🎯 [PRODUCTION] Creating in PostgreSQL DASHBOARD_MESSAGES table - -🎯 [PRODUCTION] Announcement created successfully in DB: { - - - -, - - title: 'rzqr', - - content: 'etset', - - type: 'info', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-17T09:19:37.509Z, - - author: { id: 'admin_local', firstName: 'Administrateur', lastName: '' }, - - group: null - -} - -POST /api/announcements 201 in 10ms - -📢 [SERVER] Fetching announcements for user: admin_local environment: production - -📢 [SERVER] User found: { username: 'admin', role: 'admin' } - -🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table - -🎯 [PRODUCTION] Found announcements: 0 - -GET /api/announcements 200 in 11ms - diff --git a/attached_assets/Pasted-ctions-DATE-CALC-Ann-e-pr-c-dente-2024-08-17-Samedi-GET-api-user-200--1755355425294_1755355425294.txt b/attached_assets/Pasted-ctions-DATE-CALC-Ann-e-pr-c-dente-2024-08-17-Samedi-GET-api-user-200--1755355425294_1755355425294.txt deleted file mode 100644 index 0c3a1fe..0000000 --- a/attached_assets/Pasted-ctions-DATE-CALC-Ann-e-pr-c-dente-2024-08-17-Samedi-GET-api-user-200--1755355425294_1755355425294.txt +++ /dev/null @@ -1,205 +0,0 @@ -ctions - - - - -🗓️ [DATE-CALC] Année précédente: 2024-08-17 (Samedi) - -GET /api/user 200 in 295ms - -GET /api/user 200 in 347ms - -GET /api/user 200 in 348ms - -GET /api/dlc-products/stats 200 in 328ms - -Customer Orders returned: 38 items - -📋 Tasks returned: { - - count: 55, - - userId: 'admin_local', - - userRole: 'admin', - - requestedStoreId: undefined, - - groupIds: undefined, - - taskGroups: [ - - { id: 91, title: 'refaire podium lot assiettes', groupId: 2 }, - - { id: 90, title: 'caisse 1', groupId: 1 }, - - { id: 89, title: 'caisse 3', groupId: 1 } - - ] - -} - -🌤️ [RESPONSE] Weather data prepared: { - - hasCurrentYear: true, - - hasPreviousYear: true, - - location: 'Frouard, France' - -} - -GET /api/customer-orders 200 in 367ms - -GET /api/tasks 200 in 341ms - -GET /api/publicities 200 in 357ms - -GET /api/weather/current 200 in 384ms - -🔗 PRODUCTION: getDeliveries() récupéré 86 livraisons avec relations - -Deliveries returned: 86 items - -GET /api/deliveries 200 in 462ms - -📊 Statistiques calculées: { - - ordersCount: 20, - - deliveriesCount: 42, - - pendingOrdersCount: 8, - - averageDeliveryTime: 0.3611111111111111, - - totalPalettes: 120, - - totalPackages: 36 - -} - -GET /api/stats/monthly 200 in 477ms - -GET /api/groups 200 in 57ms - -📢 Stockage mémoire des annonces initialisé - -GET /api/announcements 200 in 53ms - -GET /api/publicities 200 in 44ms - -🎯 [SERVER] POST /api/announcements endpoint hit - -🎯 [SERVER] Request body: { - - "title": "TEST", - - "content": "TEST", - - "type": "info" - -} - -🎯 [SERVER] User object: { hasClaims: false, hasId: true, userId: 'admin_local' } - -🎯 [SERVER] Extracted userId: admin_local - -🎯 [SERVER] User found: { username: 'admin', role: 'admin', id: 'admin_local' } - -🎯 [SERVER] User is admin, proceeding with validation - -🎯 [SERVER] Error creating announcement: ZodError: [ - - { - - "code": "invalid_type", - - "expected": "string", - - "received": "undefined", - - "path": [ - - "createdBy" - - ], - - "message": "Required" - - } - -] - - at get error [as error] (file:///app/node_modules/zod/v3/types.js:39:31) - - at ZodObject.parse (file:///app/node_modules/zod/v3/types.js:114:22) - - at file:///app/dist/index.js:7601:57 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { - - issues: [ - - { - - code: 'invalid_type', - - expected: 'string', - - received: 'undefined', - - path: [Array], - - message: 'Required' - - } - - ], - - addIssue: [Function (anonymous)], - - addIssues: [Function (anonymous)], - - errors: [ - - { - - code: 'invalid_type', - - expected: 'string', - - received: 'undefined', - - path: [Array], - - message: 'Required' - - } - - ] - -} - -🎯 [SERVER] Validation errors: [ - - { - - code: 'invalid_type', - - expected: 'string', - - received: 'undefined', - - path: [ 'createdBy' ], - - message: 'Required' - - } - -] - -POST /api/announcements 400 in 11ms - -HEAD /api/health 200 in 1ms - diff --git a/attached_assets/Pasted-ctions-GET-api-user-401-in-2ms-GET-api-default-credentials-check-304-in-2ms--1755172560852_1755172560852.txt b/attached_assets/Pasted-ctions-GET-api-user-401-in-2ms-GET-api-default-credentials-check-304-in-2ms--1755172560852_1755172560852.txt deleted file mode 100644 index 64611cb..0000000 --- a/attached_assets/Pasted-ctions-GET-api-user-401-in-2ms-GET-api-default-credentials-check-304-in-2ms--1755172560852_1755172560852.txt +++ /dev/null @@ -1,204 +0,0 @@ -ctions - - - - -GET /api/user 401 in 2ms - -GET /api/default-credentials-check 304 in 2ms - -🔐 comparePasswords: { - - supplied: 'HIDDEN', - - stored: 'b23ec450a63faf3957a1...', - - hasFormat: true - -} - -🔐 Password comparison result: true - -POST /api/login 200 in 51ms - -GET /api/user 200 in 5ms - -GET /api/user 304 in 10ms - -📊 Calcul statistiques mensuelles: { - - year: 2025, - - month: 8, - - startDate: '2025-08-01', - - endDate: '2025-09-01', - - groupIds: [ 2 ] - -} - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - userRole: 'employee' - -} - -Non-admin filtering with groupIds: [ 2 ] - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - withBL: undefined, - - userRole: 'employee' - -} - -Non-admin filtering deliveries with groupIds: [ 2 ] - -📊 Statistiques calculées: { - - ordersCount: 8, - - deliveriesCount: 21, - - pendingOrdersCount: 4, - - averageDeliveryTime: 0.17647058823529413, - - totalPalettes: 57, - - totalPackages: 17 - -} - -🔗 PRODUCTION: getOrders() récupéré 18 commandes avec relations - -Orders returned: 18 items - -Customer Orders API called with: { groupIds: [ 2 ], userRole: 'employee' } - -GET /api/stats/monthly 200 in 76ms - -GET /api/orders 200 in 76ms - -Customer Orders returned: 25 items - -GET /api/customer-orders 200 in 82ms - -🔗 PRODUCTION: getDeliveries() récupéré 38 livraisons avec relations - -Deliveries returned: 38 items - -GET /api/deliveries 200 in 91ms - -Tasks API called with: { groupIds: [ 2 ], userRole: 'employee' } - -GET /api/publicities 304 in 92ms - -GET /api/dlc-products/stats 200 in 93ms - -Tasks returned: 9 items - -GET /api/tasks 200 in 92ms - -GET /api/user 304 in 23ms - -GET /api/publicities 304 in 9ms - -GET /api/user 304 in 4ms - -GET /api/groups 200 in 5ms - -GET /api/user 304 in 7ms - -GET /api/suppliers 304 in 10ms - -GET /api/user 304 in 7ms - -🔍 CUSTOMER ORDER PERMISSION DEBUG: { - - userRole: 'employee', - - userId: '_1753266816257', - - userGroups: [ { userId: '_1753266816257', groupId: 2, group: [Object] } ], - - requestedGroupId: 2, - - requestedGroupIdType: 'number' - -} - -🔍 CUSTOMER ORDER - User group IDs: [ 2 ] - -🔍 CUSTOMER ORDER - Requested group ID: 2 - -🔍 CUSTOMER ORDER - Converted group ID: 2 - -✅ CUSTOMER ORDER - Permission granted for user role: employee - -Error creating customer order: error: null value in column "order_taker" of relation "customer_orders" violates not-null constraint - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.createCustomerOrder (file:///app/dist/index.js:1823:33) - - at async file:///app/dist/index.js:5278:29 { - - length: 395, - - severity: 'ERROR', - - code: '23502', - - detail: 'Failing row contains (73, null, test, null, null, null, null, 366092323745, 1, 2, En attente de Commande, 0.00, f, f, null, 2, _1753266816257, 2025-08-14 11:55:42.977226, 2025-08-14 11:55:42.977226).', - - hint: undefined, - - position: undefined, - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: 'public', - - table: 'customer_orders', - - column: 'order_taker', - - dataType: undefined, - - constraint: undefined, - - file: 'execMain.c', - - line: '1972', - - routine: 'ExecConstraints' - -} - -POST /api/customer-orders 500 in 13ms - -HEAD /api/health 200 in 0ms \ No newline at end of file diff --git a/attached_assets/Pasted-ctions-id-16-title-Mise-jour-Prix-content-Merci-1757344715388_1757344715388.txt b/attached_assets/Pasted-ctions-id-16-title-Mise-jour-Prix-content-Merci-1757344715388_1757344715388.txt deleted file mode 100644 index ca56937..0000000 --- a/attached_assets/Pasted-ctions-id-16-title-Mise-jour-Prix-content-Merci-1757344715388_1757344715388.txt +++ /dev/null @@ -1,204 +0,0 @@ -ctions - - - - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -📋 PUBLICITIES RETURNED: { count: 29 } - -GET /api/publicities 304 in 74ms - -🔍 [PRODUCTION] User search result: Not found - -❌ [PRODUCTION] User not found with username: admin_local - -🔍 [PRODUCTION] User search result: Found - -🎯 [PRODUCTION] Found announcements: 2 - -GET /api/announcements 304 in 86ms - -GET /api/user 304 in 4ms - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - userRole: 'admin' - -} - -🔍 Admin orders filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all orders - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -🔍 Admin deliveries filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all deliveries - -📢 [SERVER] Fetching announcements for user: admin_local environment: production - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -📢 [SERVER] User found: { username: 'admin', role: 'admin' } - -🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table - -🔗 PRODUCTION: getOrders() récupéré 64 commandes avec relations - -Orders returned: 64 items - -GET /api/orders 304 in 115ms - -🔍 [PRODUCTION] Raw messages from DB: 2 items: [ - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -Customer Orders returned: 11 items - -GET /api/customer-orders 304 in 147ms - -🔗 PRODUCTION: getDeliveries() récupéré 82 livraisons avec relations - -Deliveries returned: 82 items - -🔍 [PRODUCTION] User search result: Not found - -❌ [PRODUCTION] User not found with username: admin_local - -GET /api/deliveries 304 in 187ms - -🔍 [PRODUCTION] User search result: Found - -🎯 [PRODUCTION] Found announcements: 2 - -GET /api/announcements 304 in 185ms - -GET /api/groups 304 in 140ms - -GET /api/user 304 in 4ms - -GET /api/suppliers 304 in 7ms - -🔍 Avoirs API called with: { groupIds: undefined, userRole: 'admin' } - -📋 Avoirs returned: 0 items - -GET /api/avoirs 304 in 14ms - -🔍 [POST AVOIR] Données reçues: { - - "supplierId": 34, - - "groupId": 1, - - "invoiceReference": "", - - "comment": "", - - "commercialProcessed": false - -} - -🔍 [POST AVOIR] User: { id: 'admin_local', role: 'admin' } - -POST /api/avoirs 400 in 9ms \ No newline at end of file diff --git a/attached_assets/Pasted-ctions-userRole-admin-Admin-filtering-with-groupIds-1-Fetchin-1755240014092_1755240014102.txt b/attached_assets/Pasted-ctions-userRole-admin-Admin-filtering-with-groupIds-1-Fetchin-1755240014092_1755240014102.txt deleted file mode 100644 index dba208b..0000000 --- a/attached_assets/Pasted-ctions-userRole-admin-Admin-filtering-with-groupIds-1-Fetchin-1755240014092_1755240014102.txt +++ /dev/null @@ -1,204 +0,0 @@ -ctions - - - - - userRole: 'admin' - -} - -Admin filtering with groupIds: [ 1 ] - -Fetching all orders - -🔗 PRODUCTION: getDeliveries() récupéré 44 livraisons avec relations - -Deliveries returned: 44 items - -Customer Orders returned: 9 items - -GET /api/deliveries 304 in 124ms - -GET /api/customer-orders 304 in 116ms - -🔗 PRODUCTION: getOrders() récupéré 31 commandes avec relations - -Orders returned: 31 items - -GET /api/orders 304 in 148ms - -GET /api/groups 304 in 95ms - -GET /api/publicities 304 in 140ms - -🌤️ Fetching previous year weather data from API - -Weather API error for previous year: 401 - -GET /api/weather/current 200 in 886ms - -GET /api/user 304 in 5ms - -GET /api/user 304 in 4ms - -GET /api/backups 304 in 8ms - -GET /api/weather/settings 200 in 4ms - -HEAD /api/health 200 in 1ms - -PUT /api/weather/settings/1 200 in 11ms - -GET /api/weather/settings 200 in 4ms - -GET /api/user 304 in 12ms - -GET /api/publicities 304 in 32ms - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: [ 1 ] - -Fetching all deliveries - -📊 Calcul statistiques mensuelles: { - - year: 2025, - - month: 8, - - startDate: '2025-08-01', - - endDate: '2025-09-01', - - groupIds: undefined - -} - -🔗 PRODUCTION: getDeliveries() récupéré 44 livraisons avec relations - -Deliveries returned: 44 items - -GET /api/deliveries 304 in 168ms - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - userRole: 'admin' - -} - -Admin filtering with groupIds: undefined - -Fetching all orders - -Customer Orders API called with: { groupIds: undefined, userRole: 'admin' } - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - userRole: 'admin' - -} - -Admin filtering with groupIds: [ 1 ] - -Fetching all orders - -Tasks API called with: { groupIds: undefined, userRole: 'admin' } - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -🔗 PRODUCTION: getOrders() récupéré 49 commandes avec relations - -Orders returned: 49 items - -GET /api/orders 304 in 336ms - -📊 Statistiques calculées: { - - ordersCount: 18, - - deliveriesCount: 42, - - pendingOrdersCount: 6, - - averageDeliveryTime: 0.3611111111111111, - - totalPalettes: 120, - - totalPackages: 36 - -} - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: undefined, - - withBL: undefined, - - userRole: 'admin' - -} - -Admin filtering deliveries with groupIds: undefined - -Fetching all deliveries - -GET /api/stats/monthly 304 in 364ms - -GET /api/dlc-products/stats 304 in 351ms - -Tasks returned: 61 items - -Customer Orders returned: 36 items - -Customer Orders returned: 9 items - -GET /api/tasks 304 in 361ms - -GET /api/customer-orders 304 in 373ms - -GET /api/customer-orders 304 in 331ms - -🔗 PRODUCTION: getOrders() récupéré 31 commandes avec relations - -Orders returned: 31 items - -GET /api/orders 304 in 370ms - -🔗 PRODUCTION: getDeliveries() récupéré 82 livraisons avec relations - -Deliveries returned: 82 items - -GET /api/deliveries 304 in 456ms - -GET /api/publicities 304 in 400ms - -HEAD /api/health 200 in 2ms \ No newline at end of file diff --git a/attached_assets/Pasted-dueDate-null-fromCache-true-permanent-false-R-sultat-v-rification-e-1762234474743_1762234474743.txt b/attached_assets/Pasted-dueDate-null-fromCache-true-permanent-false-R-sultat-v-rification-e-1762234474743_1762234474743.txt deleted file mode 100644 index 0eea4e0..0000000 --- a/attached_assets/Pasted-dueDate-null-fromCache-true-permanent-false-R-sultat-v-rification-e-1762234474743_1762234474743.txt +++ /dev/null @@ -1,204 +0,0 @@ -dueDate: null, - - fromCache: true, - - permanent: false - -} - -✅ Résultat vérification: { - - exists: true, - - matchType: 'invoice_reference', - - errorMessage: null, - - invoiceReference: 'FC25638222', - - supplierName: 'Tendance', - - invoiceAmount: undefined, - - dueDate: null, - - fromCache: true, - - permanent: false - -} - -✅ [DATABASE-CACHE] Cache hit pour: { - - cacheKey: '1_fc25638222', - - expires: 2025-11-04T11:22:05.884Z, - - hoursRemaining: 6 - -} - -🔍 [CACHE] Résultat cache: { - - found: true, - - isReconciled: false, - - expired: false, - - expiresAt: 2025-11-04T11:22:05.884Z, - - currentTime: '2025-11-04T05:33:50.014Z' - -} - -✅ [CACHE] Cache temporaire hit pour: { invoiceReference: 'FC25638222', groupId: 1, exists: true } - -✅ [INVOICE] Résultat depuis cache: { - - exists: true, - - matchType: 'invoice_reference', - - errorMessage: null, - - invoiceReference: 'FC25638222', - - supplierName: 'Tendance', - - invoiceAmount: undefined, - - dueDate: null, - - fromCache: true, - - permanent: false - -} - -✅ Résultat vérification: { - - exists: true, - - matchType: 'invoice_reference', - - errorMessage: null, - - invoiceReference: 'FC25638222', - - supplierName: 'Tendance', - - invoiceAmount: undefined, - - dueDate: null, - - fromCache: true, - - permanent: false - -} - -POST /api/deliveries/335/verify-invoice 200 in 432ms - -POST /api/deliveries/420/verify-invoice 200 in 462ms - -POST /api/deliveries/385/verify-invoice 200 in 424ms - -POST /api/deliveries/385/verify-invoice 200 in 407ms - -✅ [DATABASE-CACHE] Cache hit pour: { - - cacheKey: 'bl_1_bl00060473_ access deco', - - expires: 2025-11-04T10:19:30.357Z, - - hoursRemaining: 5 - -} - -💾 Cache hit pour BL: { blNumber: 'BL00060473', groupId: 1 } - -✅ Résultat vérification: { - - exists: false, - - matchType: 'none', - - errorMessage: 'Aucun BL correspondant trouvé dans NocoDB', - - invoiceReference: 'BL00060473', - - supplierName: ' Access Deco', - - fromCache: true - -} - -✅ [DATABASE-CACHE] Cache hit pour: { - - cacheKey: 'bl_1_198355_depot', - - expires: 2025-11-04T10:19:30.101Z, - - hoursRemaining: 5 - -} - -💾 Cache hit pour BL: { blNumber: '198355', groupId: 1 } - -✅ Résultat vérification: { - - exists: false, - - matchType: 'none', - - errorMessage: 'Aucun BL correspondant trouvé dans NocoDB', - - invoiceReference: '198355', - - supplierName: 'Depot', - - fromCache: true - -} - -✅ [DATABASE-CACHE] Cache hit pour: { - - cacheKey: 'bl_1_bl00060473_ access deco', - - expires: 2025-11-04T10:19:30.357Z, - - hoursRemaining: 5 - -} - -💾 Cache hit pour BL: { blNumber: 'BL00060473', groupId: 1 } - -✅ Résultat vérification: { - - exists: false, - - matchType: 'none', - - errorMessage: 'Aucun BL correspondant trouvé dans NocoDB', - - invoiceReference: 'BL00060473', - - supplierName: ' Access Deco', - - fromCache: true - -} - -POST /api/deliveries/333/verify-invoice 200 in 449ms - -POST /api/deliveries/335/verify-invoice 200 in 414ms - -POST /api/deliveries/333/verify-invoice 200 in 439ms - -HEAD /api/health 200 in 1ms - - - - - \ No newline at end of file diff --git a/attached_assets/Pasted-index-D62VSbre-js-513-Auth-Environment-Debug-hostname-logiflow-ffnancy-fr-isDev-false-env-1757359927679_1757359927680.txt b/attached_assets/Pasted-index-D62VSbre-js-513-Auth-Environment-Debug-hostname-logiflow-ffnancy-fr-isDev-false-env-1757359927679_1757359927680.txt deleted file mode 100644 index 2ce7de1..0000000 --- a/attached_assets/Pasted-index-D62VSbre-js-513-Auth-Environment-Debug-hostname-logiflow-ffnancy-fr-isDev-false-env-1757359927679_1757359927680.txt +++ /dev/null @@ -1,611 +0,0 @@ -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:977 🔍 RouterProduction Debug: {environment: 'production', isAuthenticated: false, isLoading: true, hasUser: false, userId: undefined, …} -index-D62VSbre.js:513 🔄 Production auth check starting, refreshTrigger: 0 -index-D62VSbre.js:513 🔄 Production auth response: 200 -index-D62VSbre.js:513 ✅ Production auth success: {username: 'admin', id: 'admin_local'} -index-D62VSbre.js:513 🔄 Production auth check complete, loading set to false -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:977 🔍 RouterProduction Debug: {environment: 'production', isAuthenticated: true, isLoading: false, hasUser: true, userId: 'admin_local', …} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:557 🏪 Layout - Restoring selectedStoreId from localStorage: {saved: '1', restoredId: 1} -index-D62VSbre.js:557 🔧 Layout - Restoring sidebar state: {saved: 'false', isMobile: false} -index-D62VSbre.js:557 Sidebar - User: null -index-D62VSbre.js:557 Sidebar - isLoading: true -index-D62VSbre.js:557 Sidebar - error: null -index-D62VSbre.js:557 🔧 Sidebar Debug: {isMobile: false, sidebarCollapsed: false, mobileMenuOpen: false, width: 'expanded (256px)', classes: 'sidebar-expanded bg-white border-r border-gray-200…shadow-lg transition-all duration-300 ease-in-out'} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:557 🚚 Dashboard - Upcoming deliveries result: 0 [] -index-D62VSbre.js:557 📊 Dashboard Debug - Raw Data: {allOrders: 0, allDeliveries: 0, customerOrders: 0, upcomingPublicities: 0, stats: undefined, …} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:513 🔄 Production auth check starting, refreshTrigger: 0 -index-D62VSbre.js:513 🔄 Production auth check starting, refreshTrigger: 0 -index-D62VSbre.js:513 🔄 Production auth check starting, refreshTrigger: 0 -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:557 Sidebar - User: null -index-D62VSbre.js:557 Sidebar - isLoading: true -index-D62VSbre.js:557 Sidebar - error: null -index-D62VSbre.js:557 🔧 Sidebar Debug: {isMobile: false, sidebarCollapsed: false, mobileMenuOpen: false, width: 'expanded (256px)', classes: 'sidebar-expanded bg-white border-r border-gray-200…shadow-lg transition-all duration-300 ease-in-out'} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:557 🚚 Dashboard - Upcoming deliveries result: 0 [] -index-D62VSbre.js:557 📊 Dashboard Debug - Raw Data: {allOrders: 0, allDeliveries: 0, customerOrders: 0, upcomingPublicities: 0, stats: undefined, …} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:553 ✅ Auth check successful: {username: 'admin', id: 'admin_local'} -index-D62VSbre.js:557 Sidebar - User: {id: 'admin_local', username: 'admin', email: 'admin@logiflow.com', firstName: 'Administrateur', lastName: '', …} -index-D62VSbre.js:557 Sidebar - isLoading: false -index-D62VSbre.js:557 Sidebar - error: null -index-D62VSbre.js:557 🔧 Sidebar Debug: {isMobile: false, sidebarCollapsed: false, mobileMenuOpen: false, width: 'expanded (256px)', classes: 'sidebar-expanded bg-white border-r border-gray-200…shadow-lg transition-all duration-300 ease-in-out'} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:557 🚚 Dashboard - Upcoming deliveries result: 0 [] -index-D62VSbre.js:557 📊 Dashboard Debug - Raw Data: {allOrders: 0, allDeliveries: 0, customerOrders: 0, upcomingPublicities: 10, stats: undefined, …} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:513 🔄 Production auth response: 200 -index-D62VSbre.js:513 ✅ Production auth success: {username: 'admin', id: 'admin_local'} -index-D62VSbre.js:513 🔄 Production auth check complete, loading set to false -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:557 🔍 [ANNOUNCEMENTS] Fetching from: /api/announcements?storeId=1 -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:557 🚚 Dashboard - Upcoming deliveries result: 0 [] -index-D62VSbre.js:557 📊 Dashboard Debug - Raw Data: {allOrders: 0, allDeliveries: 0, customerOrders: 0, upcomingPublicities: 10, stats: undefined, …} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:557 🚚 Dashboard - Upcoming deliveries result: 0 [] -index-D62VSbre.js:557 📊 Dashboard Debug - Raw Data: {allOrders: 0, allDeliveries: 0, customerOrders: 70, upcomingPublicities: 10, stats: undefined, …} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:557 🚚 Dashboard - Upcoming deliveries result: 0 [] -index-D62VSbre.js:557 📊 Dashboard Debug - Raw Data: {allOrders: 0, allDeliveries: 0, customerOrders: 70, upcomingPublicities: 10, stats: {…}, …} - 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} - 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} - 🚚 Dashboard - Upcoming deliveries result: 0 [] - 📊 Dashboard Debug - Raw Data: {allOrders: 0, allDeliveries: 0, customerOrders: 70, upcomingPublicities: 10, stats: {…}, …} - 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} - 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} - 🚚 Dashboard - Upcoming deliveries result: 0 [] - 📊 Dashboard Debug - Raw Data: {allOrders: 0, allDeliveries: 0, customerOrders: 70, upcomingPublicities: 10, stats: {…}, …} - 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} - 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} - 🚚 Dashboard - Upcoming deliveries result: 0 [] - 📊 Dashboard Debug - Raw Data: {allOrders: 100, allDeliveries: 0, customerOrders: 70, upcomingPublicities: 10, stats: {…}, …} - 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} - 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} - 🚚 Dashboard - Delivery filter: {id: 192, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} - 🚚 Dashboard - Delivery filter: {id: 191, status: 'planned', isPlanned: true, scheduledDate: '2025-09-09'} - 🚚 Dashboard - Delivery filter: {id: 190, status: 'planned', isPlanned: true, scheduledDate: '2025-09-09'} - 🚚 Dashboard - Delivery filter: {id: 189, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-05'} - 🚚 Dashboard - Delivery filter: {id: 188, status: 'planned', isPlanned: true, scheduledDate: '2025-09-09'} - 🚚 Dashboard - Delivery filter: {id: 187, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-05'} - 🚚 Dashboard - Delivery filter: {id: 186, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} - 🚚 Dashboard - Delivery filter: {id: 185, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} - 🚚 Dashboard - Delivery filter: {id: 184, status: 'planned', isPlanned: true, scheduledDate: '2025-09-11'} - 🚚 Dashboard - Delivery filter: {id: 183, status: 'planned', isPlanned: true, scheduledDate: '2025-09-10'} - 🚚 Dashboard - Delivery filter: {id: 182, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-04'} - 🚚 Dashboard - Delivery filter: {id: 181, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} - 🚚 Dashboard - Delivery filter: {id: 180, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} - 🚚 Dashboard - Delivery filter: {id: 179, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-28'} - 🚚 Dashboard - Delivery filter: {id: 178, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-03'} - 🚚 Dashboard - Delivery filter: {id: 177, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-03'} - 🚚 Dashboard - Delivery filter: {id: 176, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-04'} - 🚚 Dashboard - Delivery filter: {id: 175, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-03'} - 🚚 Dashboard - Delivery filter: {id: 174, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-02'} - 🚚 Dashboard - Delivery filter: {id: 171, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-02'} - 🚚 Dashboard - Delivery filter: {id: 170, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-02'} - 🚚 Dashboard - Delivery filter: {id: 169, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-02'} - 🚚 Dashboard - Delivery filter: {id: 168, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-02'} - 🚚 Dashboard - Delivery filter: {id: 166, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-04'} - 🚚 Dashboard - Delivery filter: {id: 165, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-05'} - 🚚 Dashboard - Delivery filter: {id: 164, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-05'} - 🚚 Dashboard - Delivery filter: {id: 163, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-05'} - 🚚 Dashboard - Delivery filter: {id: 162, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-05'} - 🚚 Dashboard - Delivery filter: {id: 161, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-05'} - 🚚 Dashboard - Delivery filter: {id: 160, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-01'} - 🚚 Dashboard - Delivery filter: {id: 159, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-01'} - 🚚 Dashboard - Delivery filter: {id: 158, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-29'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 157, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-28'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 156, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-28'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 154, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-27'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 152, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-28'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 151, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-26'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 150, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-26'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 149, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-26'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 148, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 147, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 145, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-26'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 144, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-26'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 143, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-27'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 142, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-22'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 141, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-22'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 140, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 139, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 138, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 137, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-21'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 135, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-20'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 134, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-20'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 133, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-21'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 132, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-22'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 131, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-20'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 130, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-20'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 129, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-22'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 128, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-20'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 127, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-19'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 125, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-19'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 124, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-20'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 123, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-19'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 122, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-22'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 121, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-22'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 118, status: 'planned', isPlanned: true, scheduledDate: '2025-10-06'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 117, status: 'planned', isPlanned: true, scheduledDate: '2025-09-29'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 116, status: 'planned', isPlanned: true, scheduledDate: '2025-09-22'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 115, status: 'planned', isPlanned: true, scheduledDate: '2025-09-15'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 111, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-14'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 104, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-20'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 101, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-13'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 100, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-11'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 98, status: 'planned', isPlanned: true, scheduledDate: '2025-08-12'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 97, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-12'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 96, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-11'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 94, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-14'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 93, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-14'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 91, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-11'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 90, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-11'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 89, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-13'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 88, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-13'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 87, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-07'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 86, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-07'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 84, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-08'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 83, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-08'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 82, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-07'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 81, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-07'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 80, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-08'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 79, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-08'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 78, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-07'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 77, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-06'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 76, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-06'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 75, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-06'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 74, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-07'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 72, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-21'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 71, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-07'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 69, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-05'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 68, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-06'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 67, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-06'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 66, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-05'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 65, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-04'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 63, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-04'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 62, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-29'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 61, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-01'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 60, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-01'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 58, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 56, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-30'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 55, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-31'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 54, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-31'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 53, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-01'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 52, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-31'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 51, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-31'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 50, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-30'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 49, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-30'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 48, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-30'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 46, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-28'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 45, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-28'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 43, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-29'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 42, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 41, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 40, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-28'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 39, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-24'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 38, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-30'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 37, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-30'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 36, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-21'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 35, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-15'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 34, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-16'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 33, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-18'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 32, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-23'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 31, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-23'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 30, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-23'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 29, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-23'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 28, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-23'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 27, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-24'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 26, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 25, status: 'planned', isPlanned: true, scheduledDate: '2025-10-13'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 24, status: 'planned', isPlanned: true, scheduledDate: '2025-10-06'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 23, status: 'planned', isPlanned: true, scheduledDate: '2025-09-29'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 22, status: 'planned', isPlanned: true, scheduledDate: '2025-09-15'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 21, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 18, status: 'planned', isPlanned: true, scheduledDate: '2025-08-11'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 17, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-06'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 16, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-24'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 15, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 13, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 11, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 10, status: 'planned', isPlanned: true, scheduledDate: '2025-08-14'} -index-D62VSbre.js:557 🚚 Dashboard - Upcoming deliveries result: 4 (4) [{…}, {…}, {…}, {…}] -index-D62VSbre.js:557 📊 Dashboard Debug - Raw Data: {allOrders: 100, allDeliveries: 147, customerOrders: 70, upcomingPublicities: 10, stats: {…}, …} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:513 🔄 Production auth response: 200 -index-D62VSbre.js:513 ✅ Production auth success: {username: 'admin', id: 'admin_local'} -index-D62VSbre.js:513 🔄 Production auth check complete, loading set to false -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:557 🚚 Dashboard - Upcoming deliveries result: 0 [] -index-D62VSbre.js:557 📊 Dashboard Debug - Raw Data: {allOrders: 0, allDeliveries: 0, customerOrders: 0, upcomingPublicities: 10, stats: {…}, …} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:557 ✅ [ANNOUNCEMENTS] Data received: (2) [{…}, {…}] -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:513 🔄 Production auth response: 200 -index-D62VSbre.js:513 ✅ Production auth success: {username: 'admin', id: 'admin_local'} -index-D62VSbre.js:513 🔄 Production auth check complete, loading set to false -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:557 Sidebar - User: {id: 'admin_local', username: 'admin', email: 'admin@logiflow.com', firstName: 'Administrateur', lastName: '', …} -index-D62VSbre.js:557 Sidebar - isLoading: false -index-D62VSbre.js:557 Sidebar - error: null -index-D62VSbre.js:557 🔧 Sidebar Debug: {isMobile: false, sidebarCollapsed: false, mobileMenuOpen: false, width: 'expanded (256px)', classes: 'sidebar-expanded bg-white border-r border-gray-200…shadow-lg transition-all duration-300 ease-in-out'} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:557 🚚 Dashboard - Upcoming deliveries result: 0 [] -index-D62VSbre.js:557 📊 Dashboard Debug - Raw Data: {allOrders: 0, allDeliveries: 0, customerOrders: 0, upcomingPublicities: 10, stats: {…}, …} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:557 🚚 Dashboard - Upcoming deliveries result: 0 [] -index-D62VSbre.js:557 📊 Dashboard Debug - Raw Data: {allOrders: 64, allDeliveries: 0, customerOrders: 0, upcomingPublicities: 10, stats: {…}, …} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:557 Sidebar - User: {id: 'admin_local', username: 'admin', email: 'admin@logiflow.com', firstName: 'Administrateur', lastName: '', …} -index-D62VSbre.js:557 Sidebar - isLoading: false -index-D62VSbre.js:557 Sidebar - error: null -index-D62VSbre.js:557 🔧 Sidebar Debug: {isMobile: false, sidebarCollapsed: false, mobileMenuOpen: false, width: 'expanded (256px)', classes: 'sidebar-expanded bg-white border-r border-gray-200…shadow-lg transition-all duration-300 ease-in-out'} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 192, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 191, status: 'planned', isPlanned: true, scheduledDate: '2025-09-09'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 187, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-05'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 186, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 185, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 184, status: 'planned', isPlanned: true, scheduledDate: '2025-09-11'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 183, status: 'planned', isPlanned: true, scheduledDate: '2025-09-10'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 182, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-04'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 181, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 180, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 177, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-03'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 176, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-04'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 171, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-02'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 163, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-05'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 162, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-05'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 161, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-05'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 159, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-01'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 158, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-29'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 157, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-28'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 154, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-27'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 148, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 147, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 145, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-26'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 144, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-26'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 142, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-22'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 141, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-22'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 139, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 138, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 137, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-21'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 135, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-20'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 134, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-20'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 129, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-22'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 128, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-20'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 123, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-19'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 118, status: 'planned', isPlanned: true, scheduledDate: '2025-10-06'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 117, status: 'planned', isPlanned: true, scheduledDate: '2025-09-29'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 116, status: 'planned', isPlanned: true, scheduledDate: '2025-09-22'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 115, status: 'planned', isPlanned: true, scheduledDate: '2025-09-15'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 104, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-20'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 101, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-13'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 97, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-12'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 90, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-11'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 89, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-13'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 88, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-13'} - 🚚 Dashboard - Delivery filter: {id: 87, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-07'} - 🚚 Dashboard - Delivery filter: {id: 84, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-08'} - 🚚 Dashboard - Delivery filter: {id: 83, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-08'} - 🚚 Dashboard - Delivery filter: {id: 82, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-07'} - 🚚 Dashboard - Delivery filter: {id: 81, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-07'} - 🚚 Dashboard - Delivery filter: {id: 77, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-06'} - 🚚 Dashboard - Delivery filter: {id: 76, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-06'} - 🚚 Dashboard - Delivery filter: {id: 75, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-06'} - 🚚 Dashboard - Delivery filter: {id: 74, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-07'} - 🚚 Dashboard - Delivery filter: {id: 72, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-21'} - 🚚 Dashboard - Delivery filter: {id: 69, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-05'} - 🚚 Dashboard - Delivery filter: {id: 66, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-05'} - 🚚 Dashboard - Delivery filter: {id: 62, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-29'} - 🚚 Dashboard - Delivery filter: {id: 61, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-01'} - 🚚 Dashboard - Delivery filter: {id: 60, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-01'} - 🚚 Dashboard - Delivery filter: {id: 58, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} - 🚚 Dashboard - Delivery filter: {id: 56, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-30'} - 🚚 Dashboard - Delivery filter: {id: 55, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-31'} - 🚚 Dashboard - Delivery filter: {id: 52, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-31'} - 🚚 Dashboard - Delivery filter: {id: 51, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-31'} - 🚚 Dashboard - Delivery filter: {id: 43, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-29'} - 🚚 Dashboard - Delivery filter: {id: 41, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-25'} - 🚚 Dashboard - Delivery filter: {id: 40, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-28'} - 🚚 Dashboard - Delivery filter: {id: 38, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-30'} - 🚚 Dashboard - Delivery filter: {id: 37, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-30'} - 🚚 Dashboard - Delivery filter: {id: 36, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-21'} - 🚚 Dashboard - Delivery filter: {id: 35, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-15'} - 🚚 Dashboard - Delivery filter: {id: 34, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-16'} - 🚚 Dashboard - Delivery filter: {id: 33, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-18'} - 🚚 Dashboard - Delivery filter: {id: 32, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-23'} - 🚚 Dashboard - Delivery filter: {id: 31, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-23'} - 🚚 Dashboard - Delivery filter: {id: 30, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-23'} - 🚚 Dashboard - Delivery filter: {id: 29, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-23'} - 🚚 Dashboard - Delivery filter: {id: 28, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-23'} - 🚚 Dashboard - Delivery filter: {id: 27, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-24'} - 🚚 Dashboard - Delivery filter: {id: 13, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-25'} - 🚚 Dashboard - Delivery filter: {id: 11, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-25'} - 🚚 Dashboard - Delivery filter: {id: 10, status: 'planned', isPlanned: true, scheduledDate: '2025-08-14'} - 🚚 Dashboard - Upcoming deliveries result: 4 (4) [{…}, {…}, {…}, {…}] - 📊 Dashboard Debug - Raw Data: {allOrders: 64, allDeliveries: 82, customerOrders: 0, upcomingPublicities: 10, stats: {…}, …} - 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} - 🏪 Selected store validated successfully: {selectedStoreId: 1, userRole: 'admin', storeName: 'Frouard'} - 🏪 Store initialization complete: {user: 'admin', selectedStoreId: 1, storesCount: 2, validatedStore: 'Frouard', autoSelected: false} - 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} - Sidebar - User: {id: 'admin_local', username: 'admin', email: 'admin@logiflow.com', firstName: 'Administrateur', lastName: '', …} - Sidebar - isLoading: false - Sidebar - error: null - 🔧 Sidebar Debug: {isMobile: false, sidebarCollapsed: false, mobileMenuOpen: false, width: 'expanded (256px)', classes: 'sidebar-expanded bg-white border-r border-gray-200…shadow-lg transition-all duration-300 ease-in-out'} - 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} - 🚚 Dashboard - Delivery filter: {id: 192, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} - 🚚 Dashboard - Delivery filter: {id: 191, status: 'planned', isPlanned: true, scheduledDate: '2025-09-09'} - 🚚 Dashboard - Delivery filter: {id: 187, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-05'} - 🚚 Dashboard - Delivery filter: {id: 186, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} - 🚚 Dashboard - Delivery filter: {id: 185, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} - 🚚 Dashboard - Delivery filter: {id: 184, status: 'planned', isPlanned: true, scheduledDate: '2025-09-11'} - 🚚 Dashboard - Delivery filter: {id: 183, status: 'planned', isPlanned: true, scheduledDate: '2025-09-10'} - 🚚 Dashboard - Delivery filter: {id: 182, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-04'} - 🚚 Dashboard - Delivery filter: {id: 181, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} - 🚚 Dashboard - Delivery filter: {id: 180, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} - 🚚 Dashboard - Delivery filter: {id: 177, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-03'} - 🚚 Dashboard - Delivery filter: {id: 176, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-04'} - 🚚 Dashboard - Delivery filter: {id: 171, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-02'} - 🚚 Dashboard - Delivery filter: {id: 163, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-05'} - 🚚 Dashboard - Delivery filter: {id: 162, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-05'} - 🚚 Dashboard - Delivery filter: {id: 161, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-05'} - 🚚 Dashboard - Delivery filter: {id: 159, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-01'} - 🚚 Dashboard - Delivery filter: {id: 158, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-29'} - 🚚 Dashboard - Delivery filter: {id: 157, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-28'} - 🚚 Dashboard - Delivery filter: {id: 154, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-27'} - 🚚 Dashboard - Delivery filter: {id: 148, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-25'} - 🚚 Dashboard - Delivery filter: {id: 147, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-25'} - 🚚 Dashboard - Delivery filter: {id: 145, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-26'} - 🚚 Dashboard - Delivery filter: {id: 144, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-26'} - 🚚 Dashboard - Delivery filter: {id: 142, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-22'} - 🚚 Dashboard - Delivery filter: {id: 141, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-22'} - 🚚 Dashboard - Delivery filter: {id: 139, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-25'} - 🚚 Dashboard - Delivery filter: {id: 138, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-25'} - 🚚 Dashboard - Delivery filter: {id: 137, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-21'} - 🚚 Dashboard - Delivery filter: {id: 135, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-20'} - 🚚 Dashboard - Delivery filter: {id: 134, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-20'} - 🚚 Dashboard - Delivery filter: {id: 129, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-22'} - 🚚 Dashboard - Delivery filter: {id: 128, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-20'} - 🚚 Dashboard - Delivery filter: {id: 123, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-19'} - 🚚 Dashboard - Delivery filter: {id: 118, status: 'planned', isPlanned: true, scheduledDate: '2025-10-06'} - 🚚 Dashboard - Delivery filter: {id: 117, status: 'planned', isPlanned: true, scheduledDate: '2025-09-29'} - 🚚 Dashboard - Delivery filter: {id: 116, status: 'planned', isPlanned: true, scheduledDate: '2025-09-22'} - 🚚 Dashboard - Delivery filter: {id: 115, status: 'planned', isPlanned: true, scheduledDate: '2025-09-15'} - 🚚 Dashboard - Delivery filter: {id: 104, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-20'} - 🚚 Dashboard - Delivery filter: {id: 101, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-13'} - 🚚 Dashboard - Delivery filter: {id: 97, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-12'} - 🚚 Dashboard - Delivery filter: {id: 90, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-11'} - 🚚 Dashboard - Delivery filter: {id: 89, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-13'} - 🚚 Dashboard - Delivery filter: {id: 88, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-13'} - 🚚 Dashboard - Delivery filter: {id: 87, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-07'} - 🚚 Dashboard - Delivery filter: {id: 84, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-08'} - 🚚 Dashboard - Delivery filter: {id: 83, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-08'} - 🚚 Dashboard - Delivery filter: {id: 82, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-07'} - 🚚 Dashboard - Delivery filter: {id: 81, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-07'} - 🚚 Dashboard - Delivery filter: {id: 77, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-06'} - 🚚 Dashboard - Delivery filter: {id: 76, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-06'} - 🚚 Dashboard - Delivery filter: {id: 75, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-06'} - 🚚 Dashboard - Delivery filter: {id: 74, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-07'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 72, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-21'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 69, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-05'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 66, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-05'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 62, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-29'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 61, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-01'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 60, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-01'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 58, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 56, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-30'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 55, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-31'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 52, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-31'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 51, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-31'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 43, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-29'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 41, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 40, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-28'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 38, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-30'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 37, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-30'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 36, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-21'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 35, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-15'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 34, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-16'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 33, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-18'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 32, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-23'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 31, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-23'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 30, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-23'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 29, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-23'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 28, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-23'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 27, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-24'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 13, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 11, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 10, status: 'planned', isPlanned: true, scheduledDate: '2025-08-14'} -index-D62VSbre.js:557 🚚 Dashboard - Upcoming deliveries result: 4 (4) [{…}, {…}, {…}, {…}] -index-D62VSbre.js:557 📊 Dashboard Debug - Raw Data: {allOrders: 64, allDeliveries: 82, customerOrders: 11, upcomingPublicities: 10, stats: {…}, …} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 192, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 191, status: 'planned', isPlanned: true, scheduledDate: '2025-09-09'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 187, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-05'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 186, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 185, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 184, status: 'planned', isPlanned: true, scheduledDate: '2025-09-11'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 183, status: 'planned', isPlanned: true, scheduledDate: '2025-09-10'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 182, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-04'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 181, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 180, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 177, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-03'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 176, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-04'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 171, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-02'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 163, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-05'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 162, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-05'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 161, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-05'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 159, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-01'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 158, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-29'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 157, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-28'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 154, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-27'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 148, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 147, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 145, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-26'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 144, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-26'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 142, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-22'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 141, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-22'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 139, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 138, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 137, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-21'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 135, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-20'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 134, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-20'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 129, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-22'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 128, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-20'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 123, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-19'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 118, status: 'planned', isPlanned: true, scheduledDate: '2025-10-06'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 117, status: 'planned', isPlanned: true, scheduledDate: '2025-09-29'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 116, status: 'planned', isPlanned: true, scheduledDate: '2025-09-22'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 115, status: 'planned', isPlanned: true, scheduledDate: '2025-09-15'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 104, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-20'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 101, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-13'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 97, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-12'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 90, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-11'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 89, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-13'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 88, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-13'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 87, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-07'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 84, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-08'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 83, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-08'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 82, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-07'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 81, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-07'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 77, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-06'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 76, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-06'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 75, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-06'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 74, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-07'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 72, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-21'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 69, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-05'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 66, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-05'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 62, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-29'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 61, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-01'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 60, status: 'delivered', isPlanned: false, scheduledDate: '2025-08-01'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 58, status: 'delivered', isPlanned: false, scheduledDate: '2025-09-08'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 56, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-30'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 55, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-31'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 52, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-31'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 51, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-31'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 43, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-29'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 41, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 40, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-28'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 38, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-30'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 37, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-30'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 36, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-21'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 35, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-15'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 34, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-16'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 33, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-18'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 32, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-23'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 31, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-23'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 30, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-23'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 29, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-23'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 28, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-23'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 27, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-24'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 13, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 11, status: 'delivered', isPlanned: false, scheduledDate: '2025-07-25'} -index-D62VSbre.js:557 🚚 Dashboard - Delivery filter: {id: 10, status: 'planned', isPlanned: true, scheduledDate: '2025-08-14'} -index-D62VSbre.js:557 🚚 Dashboard - Upcoming deliveries result: 4 (4) [{…}, {…}, {…}, {…}] -index-D62VSbre.js:557 📊 Dashboard Debug - Raw Data: {allOrders: 64, allDeliveries: 82, customerOrders: 11, upcomingPublicities: 10, stats: {…}, …} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:557 Sidebar - User: {id: 'admin_local', username: 'admin', email: 'admin@logiflow.com', firstName: 'Administrateur', lastName: '', …} -index-D62VSbre.js:557 Sidebar - isLoading: false -index-D62VSbre.js:557 Sidebar - error: null -index-D62VSbre.js:557 🔧 Sidebar Debug: {isMobile: false, sidebarCollapsed: false, mobileMenuOpen: false, width: 'expanded (256px)', classes: 'sidebar-expanded bg-white border-r border-gray-200…shadow-lg transition-all duration-300 ease-in-out'} -index-D62VSbre.js:977 💰 Debug avoirs reçus: {count: 0, first: null} -index-D62VSbre.js:977 💰 Debug avoirs reçus: {count: 0, first: null} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:977 🔍 RouterProduction Debug: {environment: 'production', isAuthenticated: true, isLoading: false, hasUser: true, userId: 'admin_local', …} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:557 Sidebar - User: {id: 'admin_local', username: 'admin', email: 'admin@logiflow.com', firstName: 'Administrateur', lastName: '', …} -index-D62VSbre.js:557 Sidebar - isLoading: false -index-D62VSbre.js:557 Sidebar - error: null -index-D62VSbre.js:557 🔧 Sidebar Debug: {isMobile: false, sidebarCollapsed: false, mobileMenuOpen: false, width: 'expanded (256px)', classes: 'sidebar-expanded bg-white border-r border-gray-200…shadow-lg transition-all duration-300 ease-in-out'} -index-D62VSbre.js:977 💰 Debug avoirs reçus: {count: 0, first: null} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:977 🔍 RouterProduction Debug: {environment: 'production', isAuthenticated: true, isLoading: false, hasUser: true, userId: 'admin_local', …} -index-D62VSbre.js:513 🔍 Auth Environment Debug: {hostname: 'logiflow.ffnancy.fr', isDev: false, environment: 'production'} -index-D62VSbre.js:557 Sidebar - User: {id: 'admin_local', username: 'admin', email: 'admin@logiflow.com', firstName: 'Administrateur', lastName: '', …} -index-D62VSbre.js:557 Sidebar - isLoading: false -index-D62VSbre.js:557 Sidebar - error: null -index-D62VSbre.js:557 🔧 Sidebar Debug: {isMobile: false, sidebarCollapsed: false, mobileMenuOpen: false, width: 'expanded (256px)', classes: 'sidebar-expanded bg-white border-r border-gray-200…shadow-lg transition-all duration-300 ease-in-out'} -index-D62VSbre.js:977 💰 Fetching avoirs from: /api/avoirs?storeId=1 -index-D62VSbre.js:977 💰 Debug avoirs reçus: {count: 0, first: null} -index-D62VSbre.js:977 💰 Debug avoirs reçus: {count: 0, first: null} -index-D62VSbre.js:977 💰 Avoirs received: 1 items -index-D62VSbre.js:977 🔍 Render avoir: {id: 7, hasSupplier: true, hasGroup: true, hasCreator: true, createdAt: '2025-09-08T18:09:02.103Z', …} -index-D62VSbre.js:977 ❌ Erreur rendu avoir: TypeError: E.amount.toFixed is not a function - at index-D62VSbre.js:977:82600 - at Array.map () - at QY (index-D62VSbre.js:977:80948) - at ev (index-D62VSbre.js:38:17018) - at dx (index-D62VSbre.js:40:3139) - at z_ (index-D62VSbre.js:40:44833) - at L_ (index-D62VSbre.js:40:39790) - at HI (index-D62VSbre.js:40:39718) - at $f (index-D62VSbre.js:40:39570) - at C1 (index-D62VSbre.js:40:36683) {id: 7, supplierId: 3, groupId: 1, invoiceReference: 'FC-25-00005972', amount: '-47.98', …} -(anonymous) @ index-D62VSbre.js:977 -QY @ index-D62VSbre.js:977 -ev @ index-D62VSbre.js:38 -dx @ index-D62VSbre.js:40 -z_ @ index-D62VSbre.js:40 -L_ @ index-D62VSbre.js:40 -HI @ index-D62VSbre.js:40 -$f @ index-D62VSbre.js:40 -C1 @ index-D62VSbre.js:40 -Ni @ index-D62VSbre.js:38 -(anonymous) @ index-D62VSbre.js:40 -setTimeout -hR @ index-D62VSbre.js:40 -o @ index-D62VSbre.js:40 -batch @ index-D62VSbre.js:40 -ea @ index-D62VSbre.js:40 -setData @ index-D62VSbre.js:40 -onSuccess @ index-D62VSbre.js:40 -f @ index-D62VSbre.js:40 -Promise.then -b @ index-D62VSbre.js:40 -start @ index-D62VSbre.js:40 -fetch @ index-D62VSbre.js:40 -Ec @ index-D62VSbre.js:40 -setOptions @ index-D62VSbre.js:40 -(anonymous) @ index-D62VSbre.js:40 -Em @ index-D62VSbre.js:40 -Jo @ index-D62VSbre.js:40 -QI @ index-D62VSbre.js:40 -Ti @ index-D62VSbre.js:40 -C1 @ index-D62VSbre.js:40 -Ni @ index-D62VSbre.js:38 -(anonymous) @ index-D62VSbre.js:40 -setTimeout -hR @ index-D62VSbre.js:40 -o @ index-D62VSbre.js:40 -batch @ index-D62VSbre.js:40 -ea @ index-D62VSbre.js:40 -setData @ index-D62VSbre.js:40 -onSuccess @ index-D62VSbre.js:40 -f @ index-D62VSbre.js:40 -Promise.then -b @ index-D62VSbre.js:40 -start @ index-D62VSbre.js:40 -fetch @ index-D62VSbre.js:40 -Ec @ index-D62VSbre.js:40 -onSubscribe @ index-D62VSbre.js:40 -subscribe @ index-D62VSbre.js:40 -(anonymous) @ index-D62VSbre.js:40 -n_ @ index-D62VSbre.js:38 -Em @ index-D62VSbre.js:40 -Jo @ index-D62VSbre.js:40 -QI @ index-D62VSbre.js:40 -Ti @ index-D62VSbre.js:40 -C1 @ index-D62VSbre.js:40 -Ni @ index-D62VSbre.js:38 -(anonymous) @ index-D62VSbre.js:40 -index-D62VSbre.js:977 💰 Debug avoirs reçus: {count: 1, first: {…}} diff --git a/attached_assets/Pasted-ions-1-N-2501-Blanc-2-N-2502-Moins-de-1-2-3-4-5-3-N-1757358681155_1757358681156.txt b/attached_assets/Pasted-ions-1-N-2501-Blanc-2-N-2502-Moins-de-1-2-3-4-5-3-N-1757358681155_1757358681156.txt deleted file mode 100644 index bded03b..0000000 --- a/attached_assets/Pasted-ions-1-N-2501-Blanc-2-N-2502-Moins-de-1-2-3-4-5-3-N-1757358681155_1757358681156.txt +++ /dev/null @@ -1,205 +0,0 @@ -ions - - - - - '1. N°2501 - Blanc', - - '2. N°2502 - Moins de 1€ 2€ 3€ 4€ 5€', - - '3. N°2503 - Imbattables' - -] - -GET /api/user 304 in 64ms - -📋 PUBLICITIES RETURNED: { count: 29 } - -GET /api/publicities 304 in 164ms - -📢 [SERVER] User found: { username: 'admin', role: 'admin' } - -🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table - -🔍 [PRODUCTION] Raw messages from DB: 2 items: [ - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Not found - -❌ [PRODUCTION] User not found with username: admin_local - -🎯 [PRODUCTION] Found announcements: 2 - -GET /api/announcements 304 in 67ms - -GET /api/user 304 in 4ms - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - userRole: 'admin' - -} - -🔍 Admin orders filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all orders - -📢 [SERVER] Fetching announcements for user: admin_local environment: production - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -🔍 Admin deliveries filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all deliveries - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -📢 [SERVER] User found: { username: 'admin', role: 'admin' } - -🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table - -Customer Orders returned: 11 items - -GET /api/customer-orders 304 in 93ms - -🔍 [PRODUCTION] Raw messages from DB: 2 items: [ - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -🔗 PRODUCTION: getDeliveries() récupéré 82 livraisons avec relations - -Deliveries returned: 82 items - -GET /api/deliveries 304 in 156ms - -🔗 PRODUCTION: getOrders() récupéré 64 commandes avec relations - -Orders returned: 64 items - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Not found - -🎯 [PRODUCTION] Found announcements: 2 - -❌ [PRODUCTION] User not found with username: admin_local - -GET /api/orders 304 in 194ms - -GET /api/announcements 304 in 192ms - -GET /api/groups 304 in 92ms - -GET /api/user 304 in 4ms - -GET /api/suppliers 304 in 7ms - -🔍 Avoirs API called with: { groupIds: [ 1 ], userRole: 'admin' } - -📋 Avoirs returned: 1 items - -GET /api/avoirs 304 in 11ms - -HEAD /api/health 200 in 1ms - diff --git a/attached_assets/Pasted-ns-CALLING-storage-getPublicities-filterYear-2025-groupIds-undefined-1757343240882_1757343240882.txt b/attached_assets/Pasted-ns-CALLING-storage-getPublicities-filterYear-2025-groupIds-undefined-1757343240882_1757343240882.txt deleted file mode 100644 index 87ac576..0000000 --- a/attached_assets/Pasted-ns-CALLING-storage-getPublicities-filterYear-2025-groupIds-undefined-1757343240882_1757343240882.txt +++ /dev/null @@ -1,205 +0,0 @@ -ns - - - - -} - -📋 CALLING storage.getPublicities: { filterYear: 2025, groupIds: undefined } - -📋 PUBLICITES FETCHED: 29 résultats pour année 2025 - -🔍 PREMIERS RESULTATS: [ - - '1. N°2501 - Blanc', - - '2. N°2502 - Moins de 1€ 2€ 3€ 4€ 5€', - - '3. N°2503 - Imbattables' - -] - -🔍 [PRODUCTION] Raw messages from DB: 2 items: [ - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -🔍 [PRODUCTION] User search result: Found - -📋 PUBLICITIES RETURNED: { count: 29 } - -GET /api/publicities 304 in 77ms - -🔍 [PRODUCTION] User search result: Not found - -❌ [PRODUCTION] User not found with username: admin_local - -🎯 [PRODUCTION] Found announcements: 2 - -GET /api/announcements 304 in 83ms - -GET /api/user 304 in 3ms - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -🔍 Admin deliveries filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all deliveries - -📢 [SERVER] Fetching announcements for user: admin_local environment: production - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - userRole: 'admin' - -} - -🔍 Admin orders filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all orders - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -Customer Orders returned: 11 items - -📢 [SERVER] User found: { username: 'admin', role: 'admin' } - -🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table - -GET /api/customer-orders 304 in 113ms - -🔗 PRODUCTION: getDeliveries() récupéré 82 livraisons avec relations - -Deliveries returned: 82 items - -GET /api/deliveries 304 in 151ms - -GET /api/groups 304 in 139ms - -🔗 PRODUCTION: getOrders() récupéré 64 commandes avec relations - -Orders returned: 64 items - -🔍 [PRODUCTION] Raw messages from DB: 2 items: [ - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -GET /api/orders 304 in 198ms - -🔍 [PRODUCTION] User search result: Found - -🔍 [PRODUCTION] User search result: Not found - -🎯 [PRODUCTION] Found announcements: 2 - -❌ [PRODUCTION] User not found with username: admin_local - -GET /api/announcements 304 in 196ms - -GET /api/user 304 in 10ms - -GET /api/suppliers 304 in 7ms - -🔍 Avoirs API called with: { groupIds: undefined, userRole: 'admin' } - -📋 Avoirs returned: 1 items - -GET /api/avoirs 304 in 11ms - diff --git a/attached_assets/Pasted-ns-errorMessage-null-invoiceReference-981644-supplierName-Poly-1762190589763_1762190589763.txt b/attached_assets/Pasted-ns-errorMessage-null-invoiceReference-981644-supplierName-Poly-1762190589763_1762190589763.txt deleted file mode 100644 index acc3999..0000000 --- a/attached_assets/Pasted-ns-errorMessage-null-invoiceReference-981644-supplierName-Poly-1762190589763_1762190589763.txt +++ /dev/null @@ -1,204 +0,0 @@ -ns - - - - - errorMessage: null, - - invoiceReference: '981644', - - supplierName: 'Polyflame', - - fromCache: true, - - permanent: false - -} - -POST /api/deliveries/343/verify-invoice 200 in 256ms - -🔍 Recherche NocoDB: { tableId: 'mrr733dfb8wtt9b', column: 'Numero_BL' } - -🔍 Recherche NocoDB: { tableId: 'mrr733dfb8wtt9b', column: 'Numero_BL' } - -💾 [CACHE] Tentative sauvegarde: { - - invoiceReference: '197771', - - groupId: 1, - - cacheKey: '1_197771', - - exists: true, - - isReconciled: false, - - cacheType: 'temporaire 6h (trouvé)', - - expiresAt: '2025-11-03T23:21:35.673Z' - -} - -💾 [CACHE] Tentative sauvegarde: { - - invoiceReference: '197771', - - groupId: 1, - - cacheKey: '1_197771', - - exists: true, - - isReconciled: false, - - cacheType: 'temporaire 6h (trouvé)', - - expiresAt: '2025-11-03T23:21:35.675Z' - -} - -✅ [CACHE] Résultat sauvé en cache: { - - id: 31803, - - invoiceReference: '197771', - - groupId: 1, - - exists: true, - - isReconciled: false, - - cacheType: 'temporaire 6h (trouvé)', - - cacheKey: '1_197771' - -} - -📅 Date d'échéance récupérée et normalisée: 2025-11-29 (original: 2025-11-29) - -✅ [CACHE] Résultat sauvé en cache: { - - id: 31803, - - invoiceReference: '197771', - - groupId: 1, - - exists: true, - - isReconciled: false, - - cacheType: 'temporaire 6h (trouvé)', - - cacheKey: '1_197771' - -} - -📅 Date d'échéance récupérée et normalisée: 2025-11-29 (original: 2025-11-29) - -Error updating delivery: error: column "due_date" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.updateDelivery (file:///app/dist/index.js:2142:28) - - at async file:///app/dist/index.js:14714:31 { - - length: 174, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: 'Perhaps you meant to reference the column "deliveries.dueDate".', - - position: '310', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '3665', - - routine: 'errorMissingColumn' - -} - -PUT /api/deliveries/427 500 in 307ms - -Error updating delivery: error: column "due_date" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.updateDelivery (file:///app/dist/index.js:2142:28) - - at async file:///app/dist/index.js:14714:31 { - - length: 174, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: 'Perhaps you meant to reference the column "deliveries.dueDate".', - - position: '310', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '3665', - - routine: 'errorMissingColumn' - -} - -PUT /api/deliveries/427 500 in 330ms - -HEAD /api/health 200 in 1ms - -HEAD /api/health 200 in 1ms - -HEAD /api/health 200 in 1ms \ No newline at end of file diff --git a/attached_assets/Pasted-ns-updatedAt-2025-07-25T23-07-17-197Z-Configuration-NocoDB-trouv-e--1755448270468_1755448270469.txt b/attached_assets/Pasted-ns-updatedAt-2025-07-25T23-07-17-197Z-Configuration-NocoDB-trouv-e--1755448270468_1755448270469.txt deleted file mode 100644 index 4b29799..0000000 --- a/attached_assets/Pasted-ns-updatedAt-2025-07-25T23-07-17-197Z-Configuration-NocoDB-trouv-e--1755448270468_1755448270469.txt +++ /dev/null @@ -1,205 +0,0 @@ -ns - - - - - updatedAt: 2025-07-25T23:07:17.197Z - -} - -🔧 Configuration NocoDB trouvée: { - - configName: 'Nocodb', - - baseUrl: 'https://nocodb.ffnancy.fr', - - projectId: 'pcg4uw79ukvycxc', - - hasToken: true - -} - -🔧 Utilisation table ID: { - - groupTable: 'CommandeH', - - configuredId: 'my7zunxprumahmm', - - resolvedId: 'my7zunxprumahmm' - -} - -🔍 Recherche NocoDB: { tableId: 'my7zunxprumahmm', column: 'RefFacture' } - -🔧 Configuration NocoDB active récupérée: { - - id: 1, - - name: 'Nocodb', - - baseUrl: 'https://nocodb.ffnancy.fr', - - projectId: 'pcg4uw79ukvycxc', - - apiToken: 'z4BAwLo6dgoN_E7PKJSHN7PA7kdBePtKOYcsDlwQ', - - description: '', - - isActive: true, - - createdBy: 'admin_local', - - createdAt: 2025-07-22T11:12:54.971Z, - - updatedAt: 2025-07-25T23:07:17.197Z - -} - -🔧 Configuration NocoDB trouvée: { - - configName: 'Nocodb', - - baseUrl: 'https://nocodb.ffnancy.fr', - - projectId: 'pcg4uw79ukvycxc', - - hasToken: true - -} - -🔧 Utilisation table ID: { - - groupTable: 'CommandeF', - - configuredId: 'mrr733dfb8wtt9b', - - resolvedId: 'mrr733dfb8wtt9b' - -} - -🔍 Recherche NocoDB: { tableId: 'mrr733dfb8wtt9b', column: 'RefFacture' } - -✅ [CACHE] Résultat sauvé en cache: { - - - -, - - invoiceReference: '25070526', - - groupId: 1, - - exists: true, - - cacheKey: '1_25070526' - -} - -✅ Résultat vérification: { - - exists: true, - - matchType: 'invoice_reference', - - invoiceReference: '25070526', - - invoiceAmount: 920.5, - - supplierName: "Cotillon d'Alasce" - -} - -✅ [CACHE] Résultat sauvé en cache: { - - id: 16638, - - invoiceReference: 'F5175811', - - groupId: 1, - - exists: true, - - cacheKey: '1_f5175811' - -} - -✅ Résultat vérification: { - - exists: true, - - matchType: 'invoice_reference', - - invoiceReference: 'F5175811', - - invoiceAmount: 2812.57, - - supplierName: 'JJA Atmosphera' - -} - -POST /api/deliveries/61/verify-invoice 200 in 2015ms - -POST /api/deliveries/89/verify-invoice 200 in 1989ms - -🔍 [CACHE] Résultat cache: { - - found: true, - - expired: true, - - expiresAt: 2025-08-14T16:04:19.769Z, - - currentTime: '2025-08-17T16:31:06.169Z' - -} - -⏰ [CACHE] Cache expiré pour: { invoiceReference: '25080486', groupId: 1 } - -🔍 [INVOICE] Pas de cache, requête API... - -🔧 Configuration NocoDB active récupérée: { - - id: 1, - - name: 'Nocodb', - - baseUrl: 'https://nocodb.ffnancy.fr', - - projectId: 'pcg4uw79ukvycxc', - - apiToken: 'z4BAwLo6dgoN_E7PKJSHN7PA7kdBePtKOYcsDlwQ', - - description: '', - - isActive: true, - - createdBy: 'admin_local', - - createdAt: 2025-07-22T11:12:54.971Z, - - updatedAt: 2025-07-25T23:07:17.197Z - -} - -🔧 Configuration NocoDB trouvée: { - - configName: 'Nocodb', - - baseUrl: 'https://nocodb.ffnancy.fr', - - projectId: 'pcg4uw79ukvycxc', - - hasToken: true - -} - -🔧 Utilisation table ID: { - - groupTable: 'CommandeF', - - configuredId: 'mrr733dfb8wtt9b', - - resolvedId: 'mrr733dfb8wtt9b' - -} - diff --git a/attached_assets/Pasted-s-CALLING-storage-getPublicities-filterYear-2025-groupIds-undefined--1757359090128_1757359090128.txt b/attached_assets/Pasted-s-CALLING-storage-getPublicities-filterYear-2025-groupIds-undefined--1757359090128_1757359090128.txt deleted file mode 100644 index 55d68ad..0000000 --- a/attached_assets/Pasted-s-CALLING-storage-getPublicities-filterYear-2025-groupIds-undefined--1757359090128_1757359090128.txt +++ /dev/null @@ -1,204 +0,0 @@ -s - - - - -📋 CALLING storage.getPublicities: { filterYear: 2025, groupIds: undefined } - -GET /api/user 304 in 139ms - -📋 PUBLICITES FETCHED: 29 résultats pour année 2025 - -🔍 PREMIERS RESULTATS: [ - - '1. N°2501 - Blanc', - - '2. N°2502 - Moins de 1€ 2€ 3€ 4€ 5€', - - '3. N°2503 - Imbattables' - -] - -🔍 [PRODUCTION] Raw messages from DB: 2 items: [ - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -📋 PUBLICITIES RETURNED: { count: 29 } - -GET /api/publicities 304 in 235ms - -🔍 [PRODUCTION] User search result: Found - -❌ [PRODUCTION] User not found with username: admin_local - -🔍 [PRODUCTION] User search result: Not found - -🎯 [PRODUCTION] Found announcements: 2 - -GET /api/announcements 304 in 136ms - -GET /api/user 304 in 4ms - -📢 [SERVER] Fetching announcements for user: admin_local environment: production - -Orders API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - userRole: 'admin' - -} - -🔍 Admin orders filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all orders - -Deliveries API called with: { - - startDate: undefined, - - endDate: undefined, - - storeId: '1', - - withBL: undefined, - - userRole: 'admin' - -} - -🔍 Admin deliveries filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } - -Fetching all deliveries - -Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } - -📢 [SERVER] User found: { username: 'admin', role: 'admin' } - -🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table - -Customer Orders returned: 11 items - -GET /api/customer-orders 304 in 90ms - -🔗 PRODUCTION: getDeliveries() récupéré 82 livraisons avec relations - -Deliveries returned: 82 items - -GET /api/deliveries 304 in 170ms - -🔍 [PRODUCTION] Raw messages from DB: 2 items: [ - - { - - id: 16, - - title: 'Mise à jour Prix', - - content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', - - type: 'success', - - storeId: null, - - createdBy: 'admin', - - createdAt: 2025-08-18T10:45:08.585Z - - }, - - { - - id: 8, - - title: 'Bon de Livraison', - - content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', - - type: 'info', - - storeId: null, - - createdBy: 'admin_local', - - createdAt: 2025-08-07T11:04:38.123Z - - } - -] - -🔍 [PRODUCTION] Looking for user with username: admin - -🔍 [PRODUCTION] Looking for user with username: admin_local - -🔍 [PRODUCTION] User search result: Not found - -❌ [PRODUCTION] User not found with username: admin_local - -🔍 [PRODUCTION] User search result: Found - -🎯 [PRODUCTION] Found announcements: 2 - -🔗 PRODUCTION: getOrders() récupéré 64 commandes avec relations - -Orders returned: 64 items - -GET /api/announcements 304 in 216ms - -GET /api/orders 304 in 221ms - -GET /api/groups 304 in 216ms - -GET /api/user 304 in 74ms - -GET /api/suppliers 304 in 6ms - -🔍 Avoirs API called with: { groupIds: [ 1 ], userRole: 'admin' } - -📋 Avoirs returned: 1 items - -GET /api/avoirs 304 in 9ms \ No newline at end of file diff --git a/attached_assets/Pasted-tions-Error-fetching-SAV-stats-error-column-priority-does-not-exist-at--1755163192829_1755163192830.txt b/attached_assets/Pasted-tions-Error-fetching-SAV-stats-error-column-priority-does-not-exist-at--1755163192829_1755163192830.txt deleted file mode 100644 index 372aa20..0000000 --- a/attached_assets/Pasted-tions-Error-fetching-SAV-stats-error-column-priority-does-not-exist-at--1755163192829_1755163192830.txt +++ /dev/null @@ -1,204 +0,0 @@ -tions - - - - -Error fetching SAV stats: error: column "priority" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getSavTicketStats (file:///app/dist/index.js:2046:25) - - at async file:///app/dist/index.js:6203:21 { - - length: 108, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '28', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '3665', - - routine: 'errorMissingColumn' - -} - -GET /api/sav/stats 500 in 11ms - -Error fetching SAV tickets: error: column sav_tickets.priority does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getSavTickets (file:///app/dist/index.js:1974:25) - - at async file:///app/dist/index.js:6016:23 { - - length: 119, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '350', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '3665', - - routine: 'errorMissingColumn' - -} - -GET /api/sav/tickets 500 in 14ms - -Error fetching SAV stats: error: column "priority" does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getSavTicketStats (file:///app/dist/index.js:2046:25) - - at async file:///app/dist/index.js:6203:21 { - - length: 108, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '28', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '3665', - - routine: 'errorMissingColumn' - -} - -GET /api/sav/stats 500 in 13ms - -Error fetching SAV tickets: error: column sav_tickets.priority does not exist - - at /app/node_modules/pg-pool/index.js:45:11 - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - - at async DatabaseStorage.getSavTickets (file:///app/dist/index.js:1974:25) - - at async file:///app/dist/index.js:6016:23 { - - length: 119, - - severity: 'ERROR', - - code: '42703', - - detail: undefined, - - hint: undefined, - - position: '350', - - internalPosition: undefined, - - internalQuery: undefined, - - where: undefined, - - schema: undefined, - - table: undefined, - - column: undefined, - - dataType: undefined, - - constraint: undefined, - - file: 'parse_relation.c', - - line: '3665', - - routine: 'errorMissingColumn' - -} - -GET /api/sav/tickets 500 in 14ms \ No newline at end of file diff --git a/attached_assets/Pasted-tions-R-sultat-v-rification-avoir-exists-true-matchType-in-1757357333329_1757357333329.txt b/attached_assets/Pasted-tions-R-sultat-v-rification-avoir-exists-true-matchType-in-1757357333329_1757357333329.txt deleted file mode 100644 index 3f6fb63..0000000 --- a/attached_assets/Pasted-tions-R-sultat-v-rification-avoir-exists-true-matchType-in-1757357333329_1757357333329.txt +++ /dev/null @@ -1,204 +0,0 @@ -tions - - - - -} - -✅ Résultat vérification avoir: { - - exists: true, - - matchType: 'invoice_reference', - - errorMessage: null, - - invoiceReference: 'FC-25-00005972', - - supplierName: 'Artyfete', - - fromCache: true, - - permanent: false - -} - -POST /api/avoirs/7/verify-invoice 200 in 8ms - -🔍 Vérification facture avoir: { - - avoirId: 7, - - invoiceReference: 'FC-25-00005972', - - supplier: 'Artyfete', - - group: 'Frouard', - - groupId: 1 - -} - -🔍 [INVOICE] Début vérification facture: { invoiceReference: 'FC-25-00005972', groupId: 1, forceRefresh: true } - -🔄 [INVOICE] Refresh forcé, ignorant le cache - -🔧 Configuration groupe: { - - groupName: 'Frouard', - - hasNocodbConfig: true, - - hasTableName: true, - - hasWebhook: true - -} - -🔍 Vérification NocoDB en production... - -🔧 Configuration NocoDB active récupérée: { - - id: 1, - - name: 'Nocodb', - - baseUrl: 'https://nocodb.ffnancy.fr', - - projectId: 'pcg4uw79ukvycxc', - - apiToken: 'z4BAwLo6dgoN_E7PKJSHN7PA7kdBePtKOYcsDlwQ', - - description: '', - - isActive: true, - - createdBy: 'admin_local', - - createdAt: 2025-07-22T11:12:54.971Z, - - updatedAt: 2025-07-25T23:07:17.197Z - -} - -🔧 Configuration NocoDB trouvée: { - - configName: 'Nocodb', - - baseUrl: 'https://nocodb.ffnancy.fr', - - projectId: 'pcg4uw79ukvycxc', - - hasToken: true - -} - -🔧 Utilisation table ID: { - - groupTable: 'CommandeF', - - configuredId: 'mrr733dfb8wtt9b', - - resolvedId: 'mrr733dfb8wtt9b' - -} - -🔍 Recherche NocoDB: { tableId: 'mrr733dfb8wtt9b', column: 'RefFacture' } - -💾 [CACHE] Tentative sauvegarde: { - - invoiceReference: 'FC-25-00005972', - - groupId: 1, - - cacheKey: '1_fc-25-00005972', - - exists: true, - - isReconciled: false, - - cacheType: 'temporaire 6h (trouvé)', - - expiresAt: '2025-09-09T00:48:35.637Z' - -} - -✅ [CACHE] Résultat sauvé en cache: { - - id: 23216, - - invoiceReference: 'FC-25-00005972', - - groupId: 1, - - exists: true, - - isReconciled: false, - - cacheType: 'temporaire 6h (trouvé)', - - cacheKey: '1_fc-25-00005972' - -} - -✅ Résultat vérification avoir: { - - exists: true, - - matchType: 'invoice_reference', - - invoiceReference: 'FC-25-00005972', - - invoiceAmount: -47.976, - - supplierName: 'Artyfete' - -} - -POST /api/avoirs/7/verify-invoice 200 in 33ms - -💰 PUT Avoir - Raw body received: { - - "supplierId": 3, - - "groupId": 1, - - "invoiceReference": "FC-25-00005972", - - "amount": -47.976, - - "comment": "", - - "commercialProcessed": false, - - "status": "Reçu" - -} - -❌ [PUT AVOIR] ERREURS VALIDATION ZOD: [ - - { - - "code": "too_small", - - "minimum": 0, - - "type": "number", - - "inclusive": false, - - "exact": false, - - "message": "Number must be greater than 0", - - "path": [ - - "amount" - - ] - - } - -] - -PUT /api/avoirs/7 400 in 7ms \ No newline at end of file diff --git a/attached_assets/Pasted-ublishing-post-7e27d1f3-3e85-4d19-b35d-9b4134fce2ce-to-facebook-page-Frouard-Error-publishing-pos-1760164921444_1760164921445.txt b/attached_assets/Pasted-ublishing-post-7e27d1f3-3e85-4d19-b35d-9b4134fce2ce-to-facebook-page-Frouard-Error-publishing-pos-1760164921444_1760164921445.txt deleted file mode 100644 index b50e052..0000000 --- a/attached_assets/Pasted-ublishing-post-7e27d1f3-3e85-4d19-b35d-9b4134fce2ce-to-facebook-page-Frouard-Error-publishing-pos-1760164921444_1760164921445.txt +++ /dev/null @@ -1,90 +0,0 @@ -ublishing post 7e27d1f3-3e85-4d19-b35d-9b4134fce2ce to facebook page Frouard - -Error publishing post 54eabfab-437b-4d84-92aa-b24b9da84f8e: Error: Facebook API error: An unknown error has occurred. (code: 1) - - at FacebookService.publishStory (file:///app/dist/index.js:1997:13) - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async FacebookService.publishPost (file:///app/dist/index.js:1824:14) - - at async SchedulerService.publishPost (file:///app/dist/index.js:2072:24) - - at async SchedulerService.processPendingPosts (file:///app/dist/index.js:2034:11) - - at async file:///app/dist/index.js:2010:7 - - at async Timeout._onTimeout (/app/node_modules/node-cron/dist/esm/scheduler/runner.js:70:44) - -Publishing post 7e27d1f3-3e85-4d19-b35d-9b4134fce2ce to facebook page Houdemont - -Error publishing post 1be182d0-00e3-440f-a98c-dadfd45f0304: Error: Facebook API error: An unknown error has occurred. (code: 1) - - at FacebookService.publishStory (file:///app/dist/index.js:1997:13) - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async FacebookService.publishPost (file:///app/dist/index.js:1824:14) - - at async SchedulerService.publishPost (file:///app/dist/index.js:2072:24) - - at async SchedulerService.processPendingPosts (file:///app/dist/index.js:2034:11) - - at async file:///app/dist/index.js:2010:7 - - at async Timeout._onTimeout (/app/node_modules/node-cron/dist/esm/scheduler/runner.js:70:44) - -6:40:50 AM [express] GET /api/scheduled-posts 200 in 48ms :: [{"id":"9128ce3e-88b5-4afe-9834-e79e2da… - -6:40:51 AM [express] GET /api/auth/session 304 in 1ms :: {"id":"417b5410-1184-46d7-ac96-e85f731b0c98… - -6:40:51 AM [express] GET /api/scheduled-posts 304 in 35ms :: [{"id":"9128ce3e-88b5-4afe-9834-e79e2da… - -6:40:51 AM [express] GET /api/pages 304 in 40ms :: [{"id":"1abe2ba5-fd7b-423a-b82d-da953c340db2","us… - -6:40:57 AM [express] GET /api/posts/7e27d1f3-3e85-4d19-b35d-9b4134fce2ce 304 in 6ms :: {"post":{"id"… - -Publishing post 7e27d1f3-3e85-4d19-b35d-9b4134fce2ce to facebook page Frouard - -Error publishing post 54eabfab-437b-4d84-92aa-b24b9da84f8e: Error: Facebook API error: An unknown error has occurred. (code: 1) - - at FacebookService.publishStory (file:///app/dist/index.js:1997:13) - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async FacebookService.publishPost (file:///app/dist/index.js:1824:14) - - at async SchedulerService.publishPost (file:///app/dist/index.js:2072:24) - - at async SchedulerService.processPendingPosts (file:///app/dist/index.js:2034:11) - - at async file:///app/dist/index.js:2010:7 - - at async Timeout._onTimeout (/app/node_modules/node-cron/dist/esm/scheduler/runner.js:70:44) - -Publishing post 7e27d1f3-3e85-4d19-b35d-9b4134fce2ce to facebook page Houdemont - -Error publishing post 1be182d0-00e3-440f-a98c-dadfd45f0304: Error: Facebook API error: An unknown error has occurred. (code: 1) - - at FacebookService.publishStory (file:///app/dist/index.js:1997:13) - - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - - at async FacebookService.publishPost (file:///app/dist/index.js:1824:14) - - at async SchedulerService.publishPost (file:///app/dist/index.js:2072:24) - - at async SchedulerService.processPendingPosts (file:///app/dist/index.js:2034:11) - - at async file:///app/dist/index.js:2010:7 - - at async Timeout._onTimeout (/app/node_modules/node-cron/dist/esm/scheduler/runner.js:70:44) - -6:41:03 AM [express] GET /api/auth/session 304 in 1ms :: {"id":"417b5410-1184-46d7-ac96-e85f731b0c98… - -6:41:03 AM [express] GET /api/scheduled-posts 304 in 42ms :: [{"id":"9128ce3e-88b5-4afe-9834-e79e2da… - -6:41:03 AM [express] GET /api/pages 304 in 24ms :: [{"id":"1abe2ba5-fd7b-423a-b82d-da953c340db2","us… - -6:41:07 AM [express] GET /api/stats 200 in 22ms :: {"scheduledPosts":2,"scheduledPostsChange":"+100%… - diff --git a/attached_assets/image_1755031479607.png b/attached_assets/image_1755031479607.png deleted file mode 100644 index cf4a86f..0000000 Binary files a/attached_assets/image_1755031479607.png and /dev/null differ diff --git a/attached_assets/image_1755031497130.png b/attached_assets/image_1755031497130.png deleted file mode 100644 index cf4a86f..0000000 Binary files a/attached_assets/image_1755031497130.png and /dev/null differ diff --git a/attached_assets/image_1755094643163.png b/attached_assets/image_1755094643163.png deleted file mode 100644 index 9c23779..0000000 Binary files a/attached_assets/image_1755094643163.png and /dev/null differ diff --git a/attached_assets/image_1755095227419.png b/attached_assets/image_1755095227419.png deleted file mode 100644 index d0d7db2..0000000 Binary files a/attached_assets/image_1755095227419.png and /dev/null differ diff --git a/attached_assets/image_1755095307447.png b/attached_assets/image_1755095307447.png deleted file mode 100644 index 2deb793..0000000 Binary files a/attached_assets/image_1755095307447.png and /dev/null differ diff --git a/attached_assets/image_1755095828724.png b/attached_assets/image_1755095828724.png deleted file mode 100644 index 10c83d2..0000000 Binary files a/attached_assets/image_1755095828724.png and /dev/null differ diff --git a/attached_assets/image_1755096156555.png b/attached_assets/image_1755096156555.png deleted file mode 100644 index 1185714..0000000 Binary files a/attached_assets/image_1755096156555.png and /dev/null differ diff --git a/attached_assets/image_1755096734279.png b/attached_assets/image_1755096734279.png deleted file mode 100644 index d8e1940..0000000 Binary files a/attached_assets/image_1755096734279.png and /dev/null differ diff --git a/attached_assets/image_1755097224529.png b/attached_assets/image_1755097224529.png deleted file mode 100644 index 85826b8..0000000 Binary files a/attached_assets/image_1755097224529.png and /dev/null differ diff --git a/attached_assets/image_1755101144625.png b/attached_assets/image_1755101144625.png deleted file mode 100644 index bd49e36..0000000 Binary files a/attached_assets/image_1755101144625.png and /dev/null differ diff --git a/attached_assets/image_1755116495530.png b/attached_assets/image_1755116495530.png deleted file mode 100644 index 1ca376a..0000000 Binary files a/attached_assets/image_1755116495530.png and /dev/null differ diff --git a/attached_assets/image_1755119115097.png b/attached_assets/image_1755119115097.png deleted file mode 100644 index c0cb20f..0000000 Binary files a/attached_assets/image_1755119115097.png and /dev/null differ diff --git a/attached_assets/image_1755119737827.png b/attached_assets/image_1755119737827.png deleted file mode 100644 index 78633b0..0000000 Binary files a/attached_assets/image_1755119737827.png and /dev/null differ diff --git a/attached_assets/image_1755121899561.png b/attached_assets/image_1755121899561.png deleted file mode 100644 index 47934b1..0000000 Binary files a/attached_assets/image_1755121899561.png and /dev/null differ diff --git a/attached_assets/image_1755246827169.png b/attached_assets/image_1755246827169.png deleted file mode 100644 index e59aaae..0000000 Binary files a/attached_assets/image_1755246827169.png and /dev/null differ diff --git a/attached_assets/image_1755247383413.png b/attached_assets/image_1755247383413.png deleted file mode 100644 index dc1035f..0000000 Binary files a/attached_assets/image_1755247383413.png and /dev/null differ diff --git a/attached_assets/image_1755248368002.png b/attached_assets/image_1755248368002.png deleted file mode 100644 index 9bf6f0c..0000000 Binary files a/attached_assets/image_1755248368002.png and /dev/null differ diff --git a/attached_assets/image_1755249092274.png b/attached_assets/image_1755249092274.png deleted file mode 100644 index aa3200c..0000000 Binary files a/attached_assets/image_1755249092274.png and /dev/null differ diff --git a/attached_assets/image_1755253559260.png b/attached_assets/image_1755253559260.png deleted file mode 100644 index 79adccc..0000000 Binary files a/attached_assets/image_1755253559260.png and /dev/null differ diff --git a/attached_assets/image_1755254346029.png b/attached_assets/image_1755254346029.png deleted file mode 100644 index 7ff522a..0000000 Binary files a/attached_assets/image_1755254346029.png and /dev/null differ diff --git a/attached_assets/image_1755254795158.png b/attached_assets/image_1755254795158.png deleted file mode 100644 index 7954dab..0000000 Binary files a/attached_assets/image_1755254795158.png and /dev/null differ diff --git a/attached_assets/image_1755256207040.png b/attached_assets/image_1755256207040.png deleted file mode 100644 index c9b40d4..0000000 Binary files a/attached_assets/image_1755256207040.png and /dev/null differ diff --git a/attached_assets/image_1755259056135.png b/attached_assets/image_1755259056135.png deleted file mode 100644 index f8db2a5..0000000 Binary files a/attached_assets/image_1755259056135.png and /dev/null differ diff --git a/attached_assets/image_1755292278125.png b/attached_assets/image_1755292278125.png deleted file mode 100644 index 30f4f62..0000000 Binary files a/attached_assets/image_1755292278125.png and /dev/null differ diff --git a/attached_assets/image_1755346497903.png b/attached_assets/image_1755346497903.png deleted file mode 100644 index 2aa3b04..0000000 Binary files a/attached_assets/image_1755346497903.png and /dev/null differ diff --git a/attached_assets/image_1755347173563.png b/attached_assets/image_1755347173563.png deleted file mode 100644 index b6f4bc8..0000000 Binary files a/attached_assets/image_1755347173563.png and /dev/null differ diff --git a/attached_assets/image_1755349302710.png b/attached_assets/image_1755349302710.png deleted file mode 100644 index 8eb1e2e..0000000 Binary files a/attached_assets/image_1755349302710.png and /dev/null differ diff --git a/attached_assets/image_1755354721873.png b/attached_assets/image_1755354721873.png deleted file mode 100644 index 0878a7f..0000000 Binary files a/attached_assets/image_1755354721873.png and /dev/null differ diff --git a/attached_assets/image_1755355435711.png b/attached_assets/image_1755355435711.png deleted file mode 100644 index fd8eb34..0000000 Binary files a/attached_assets/image_1755355435711.png and /dev/null differ diff --git a/attached_assets/image_1755419859659.png b/attached_assets/image_1755419859659.png deleted file mode 100644 index bf8550e..0000000 Binary files a/attached_assets/image_1755419859659.png and /dev/null differ diff --git a/attached_assets/image_1755421756383.png b/attached_assets/image_1755421756383.png deleted file mode 100644 index cfdb340..0000000 Binary files a/attached_assets/image_1755421756383.png and /dev/null differ diff --git a/attached_assets/image_1755422384394.png b/attached_assets/image_1755422384394.png deleted file mode 100644 index 80487b1..0000000 Binary files a/attached_assets/image_1755422384394.png and /dev/null differ diff --git a/attached_assets/image_1755431891618.png b/attached_assets/image_1755431891618.png deleted file mode 100644 index d901c42..0000000 Binary files a/attached_assets/image_1755431891618.png and /dev/null differ diff --git a/attached_assets/image_1755447820094.png b/attached_assets/image_1755447820094.png deleted file mode 100644 index 1844585..0000000 Binary files a/attached_assets/image_1755447820094.png and /dev/null differ diff --git a/attached_assets/image_1756624606101.png b/attached_assets/image_1756624606101.png deleted file mode 100644 index 7b40895..0000000 Binary files a/attached_assets/image_1756624606101.png and /dev/null differ diff --git a/attached_assets/image_1756626733010.png b/attached_assets/image_1756626733010.png deleted file mode 100644 index efacbc4..0000000 Binary files a/attached_assets/image_1756626733010.png and /dev/null differ diff --git a/attached_assets/image_1756994806477.png b/attached_assets/image_1756994806477.png deleted file mode 100644 index 15569d9..0000000 Binary files a/attached_assets/image_1756994806477.png and /dev/null differ diff --git a/attached_assets/image_1757228370151.png b/attached_assets/image_1757228370151.png deleted file mode 100644 index e9610fb..0000000 Binary files a/attached_assets/image_1757228370151.png and /dev/null differ diff --git a/attached_assets/image_1757230080680.png b/attached_assets/image_1757230080680.png deleted file mode 100644 index bcd0ed5..0000000 Binary files a/attached_assets/image_1757230080680.png and /dev/null differ diff --git a/attached_assets/image_1757230523455.png b/attached_assets/image_1757230523455.png deleted file mode 100644 index 4ddf04f..0000000 Binary files a/attached_assets/image_1757230523455.png and /dev/null differ diff --git a/attached_assets/image_1757348198606.png b/attached_assets/image_1757348198606.png deleted file mode 100644 index ede9b50..0000000 Binary files a/attached_assets/image_1757348198606.png and /dev/null differ diff --git a/attached_assets/image_1757348368879.png b/attached_assets/image_1757348368879.png deleted file mode 100644 index cd30250..0000000 Binary files a/attached_assets/image_1757348368879.png and /dev/null differ diff --git a/attached_assets/image_1757348534399.png b/attached_assets/image_1757348534399.png deleted file mode 100644 index 8d01b35..0000000 Binary files a/attached_assets/image_1757348534399.png and /dev/null differ diff --git a/attached_assets/image_1757348664830.png b/attached_assets/image_1757348664830.png deleted file mode 100644 index 72bbc3c..0000000 Binary files a/attached_assets/image_1757348664830.png and /dev/null differ diff --git a/attached_assets/image_1757348796301.png b/attached_assets/image_1757348796301.png deleted file mode 100644 index 703a2f4..0000000 Binary files a/attached_assets/image_1757348796301.png and /dev/null differ diff --git a/attached_assets/image_1757354514860.png b/attached_assets/image_1757354514860.png deleted file mode 100644 index 76fd3a8..0000000 Binary files a/attached_assets/image_1757354514860.png and /dev/null differ diff --git a/attached_assets/image_1757356440912.png b/attached_assets/image_1757356440912.png deleted file mode 100644 index d7627d3..0000000 Binary files a/attached_assets/image_1757356440912.png and /dev/null differ diff --git a/attached_assets/image_1757357323874.png b/attached_assets/image_1757357323874.png deleted file mode 100644 index 1513c5e..0000000 Binary files a/attached_assets/image_1757357323874.png and /dev/null differ diff --git a/attached_assets/image_1757357513467.png b/attached_assets/image_1757357513467.png deleted file mode 100644 index c83770f..0000000 Binary files a/attached_assets/image_1757357513467.png and /dev/null differ diff --git a/attached_assets/image_1757357737631.png b/attached_assets/image_1757357737631.png deleted file mode 100644 index 35e20ab..0000000 Binary files a/attached_assets/image_1757357737631.png and /dev/null differ diff --git a/attached_assets/image_1757357904797.png b/attached_assets/image_1757357904797.png deleted file mode 100644 index 9d76df7..0000000 Binary files a/attached_assets/image_1757357904797.png and /dev/null differ diff --git a/attached_assets/image_1757358438200.png b/attached_assets/image_1757358438200.png deleted file mode 100644 index 08c94c6..0000000 Binary files a/attached_assets/image_1757358438200.png and /dev/null differ diff --git a/attached_assets/image_1757358672982.png b/attached_assets/image_1757358672982.png deleted file mode 100644 index 92acbba..0000000 Binary files a/attached_assets/image_1757358672982.png and /dev/null differ diff --git a/attached_assets/image_1757359077252.png b/attached_assets/image_1757359077252.png deleted file mode 100644 index 46816ad..0000000 Binary files a/attached_assets/image_1757359077252.png and /dev/null differ diff --git a/attached_assets/image_1757359454126.png b/attached_assets/image_1757359454126.png deleted file mode 100644 index 9451991..0000000 Binary files a/attached_assets/image_1757359454126.png and /dev/null differ diff --git a/attached_assets/image_1757359675166.png b/attached_assets/image_1757359675166.png deleted file mode 100644 index bf7b68a..0000000 Binary files a/attached_assets/image_1757359675166.png and /dev/null differ diff --git a/attached_assets/image_1757359864824.png b/attached_assets/image_1757359864824.png deleted file mode 100644 index 5d45e6a..0000000 Binary files a/attached_assets/image_1757359864824.png and /dev/null differ diff --git a/attached_assets/image_1757361006552.png b/attached_assets/image_1757361006552.png deleted file mode 100644 index c40783c..0000000 Binary files a/attached_assets/image_1757361006552.png and /dev/null differ diff --git a/attached_assets/image_1757361470730.png b/attached_assets/image_1757361470730.png deleted file mode 100644 index 6af6b13..0000000 Binary files a/attached_assets/image_1757361470730.png and /dev/null differ diff --git a/attached_assets/image_1757362240641.png b/attached_assets/image_1757362240641.png deleted file mode 100644 index 5d8f9fc..0000000 Binary files a/attached_assets/image_1757362240641.png and /dev/null differ diff --git a/attached_assets/image_1757363260967.png b/attached_assets/image_1757363260967.png deleted file mode 100644 index bb7acef..0000000 Binary files a/attached_assets/image_1757363260967.png and /dev/null differ diff --git a/attached_assets/image_1757364497925.png b/attached_assets/image_1757364497925.png deleted file mode 100644 index 3dde189..0000000 Binary files a/attached_assets/image_1757364497925.png and /dev/null differ diff --git a/attached_assets/image_1757923394938.png b/attached_assets/image_1757923394938.png deleted file mode 100644 index cc7c168..0000000 Binary files a/attached_assets/image_1757923394938.png and /dev/null differ diff --git a/attached_assets/image_1757925515783.png b/attached_assets/image_1757925515783.png deleted file mode 100644 index b8a548c..0000000 Binary files a/attached_assets/image_1757925515783.png and /dev/null differ diff --git a/attached_assets/image_1757926980669.png b/attached_assets/image_1757926980669.png deleted file mode 100644 index 5accfe3..0000000 Binary files a/attached_assets/image_1757926980669.png and /dev/null differ diff --git a/attached_assets/image_1757927707750.png b/attached_assets/image_1757927707750.png deleted file mode 100644 index 1d08f11..0000000 Binary files a/attached_assets/image_1757927707750.png and /dev/null differ diff --git a/attached_assets/image_1757927754570.png b/attached_assets/image_1757927754570.png deleted file mode 100644 index 1d08f11..0000000 Binary files a/attached_assets/image_1757927754570.png and /dev/null differ diff --git a/attached_assets/image_1757928763497.png b/attached_assets/image_1757928763497.png deleted file mode 100644 index f26ff38..0000000 Binary files a/attached_assets/image_1757928763497.png and /dev/null differ diff --git a/attached_assets/image_1758300230002.png b/attached_assets/image_1758300230002.png deleted file mode 100644 index 892cc8b..0000000 Binary files a/attached_assets/image_1758300230002.png and /dev/null differ diff --git a/attached_assets/image_1758301225666.png b/attached_assets/image_1758301225666.png deleted file mode 100644 index a2f183c..0000000 Binary files a/attached_assets/image_1758301225666.png and /dev/null differ diff --git a/attached_assets/image_1758302026930.png b/attached_assets/image_1758302026930.png deleted file mode 100644 index d5e49df..0000000 Binary files a/attached_assets/image_1758302026930.png and /dev/null differ diff --git a/attached_assets/image_1758445233252.png b/attached_assets/image_1758445233252.png deleted file mode 100644 index 5c9b704..0000000 Binary files a/attached_assets/image_1758445233252.png and /dev/null differ diff --git a/attached_assets/image_1758445878671.png b/attached_assets/image_1758445878671.png deleted file mode 100644 index a653077..0000000 Binary files a/attached_assets/image_1758445878671.png and /dev/null differ diff --git a/attached_assets/image_1758446016976.png b/attached_assets/image_1758446016976.png deleted file mode 100644 index aef8b73..0000000 Binary files a/attached_assets/image_1758446016976.png and /dev/null differ diff --git a/attached_assets/image_1758446384149.png b/attached_assets/image_1758446384149.png deleted file mode 100644 index c2eb7b5..0000000 Binary files a/attached_assets/image_1758446384149.png and /dev/null differ diff --git a/attached_assets/image_1758554462272.png b/attached_assets/image_1758554462272.png deleted file mode 100644 index 9014731..0000000 Binary files a/attached_assets/image_1758554462272.png and /dev/null differ diff --git a/attached_assets/image_1758554915717.png b/attached_assets/image_1758554915717.png deleted file mode 100644 index 67e7429..0000000 Binary files a/attached_assets/image_1758554915717.png and /dev/null differ diff --git a/attached_assets/image_1758556064926.png b/attached_assets/image_1758556064926.png deleted file mode 100644 index 2cef14d..0000000 Binary files a/attached_assets/image_1758556064926.png and /dev/null differ diff --git a/attached_assets/image_1760111292908.png b/attached_assets/image_1760111292908.png deleted file mode 100644 index 3c1feba..0000000 Binary files a/attached_assets/image_1760111292908.png and /dev/null differ diff --git a/attached_assets/image_1760111327817.png b/attached_assets/image_1760111327817.png deleted file mode 100644 index 1de6f30..0000000 Binary files a/attached_assets/image_1760111327817.png and /dev/null differ diff --git a/attached_assets/image_1760111400099.png b/attached_assets/image_1760111400099.png deleted file mode 100644 index d200429..0000000 Binary files a/attached_assets/image_1760111400099.png and /dev/null differ diff --git a/attached_assets/image_1760112920571.png b/attached_assets/image_1760112920571.png deleted file mode 100644 index 0f869fb..0000000 Binary files a/attached_assets/image_1760112920571.png and /dev/null differ diff --git a/attached_assets/image_1760355300236.png b/attached_assets/image_1760355300236.png deleted file mode 100644 index 4c90eed..0000000 Binary files a/attached_assets/image_1760355300236.png and /dev/null differ diff --git a/attached_assets/image_1761903272202.png b/attached_assets/image_1761903272202.png deleted file mode 100644 index 720d613..0000000 Binary files a/attached_assets/image_1761903272202.png and /dev/null differ diff --git a/attached_assets/image_1762190193766.png b/attached_assets/image_1762190193766.png deleted file mode 100644 index 09337ec..0000000 Binary files a/attached_assets/image_1762190193766.png and /dev/null differ diff --git a/attached_assets/image_1762190510735.png b/attached_assets/image_1762190510735.png deleted file mode 100644 index 27f2f4f..0000000 Binary files a/attached_assets/image_1762190510735.png and /dev/null differ diff --git a/attached_assets/image_1762190984566.png b/attached_assets/image_1762190984566.png deleted file mode 100644 index 6b519af..0000000 Binary files a/attached_assets/image_1762190984566.png and /dev/null differ diff --git a/attached_assets/image_1762200463238.png b/attached_assets/image_1762200463238.png deleted file mode 100644 index 05ddfe8..0000000 Binary files a/attached_assets/image_1762200463238.png and /dev/null differ diff --git a/attached_assets/image_1762201342955.png b/attached_assets/image_1762201342955.png deleted file mode 100644 index fc8540e..0000000 Binary files a/attached_assets/image_1762201342955.png and /dev/null differ diff --git a/attached_assets/image_1762201450603.png b/attached_assets/image_1762201450603.png deleted file mode 100644 index 83d7c20..0000000 Binary files a/attached_assets/image_1762201450603.png and /dev/null differ diff --git a/attached_assets/image_1762235461294.png b/attached_assets/image_1762235461294.png deleted file mode 100644 index 4bebfc1..0000000 Binary files a/attached_assets/image_1762235461294.png and /dev/null differ diff --git a/attached_assets/image_1762236788319.png b/attached_assets/image_1762236788319.png deleted file mode 100644 index 12af8ed..0000000 Binary files a/attached_assets/image_1762236788319.png and /dev/null differ diff --git a/attached_assets/image_1762236965640.png b/attached_assets/image_1762236965640.png deleted file mode 100644 index 360c77f..0000000 Binary files a/attached_assets/image_1762236965640.png and /dev/null differ diff --git a/attached_assets/image_1762237000032.png b/attached_assets/image_1762237000032.png deleted file mode 100644 index 40cc785..0000000 Binary files a/attached_assets/image_1762237000032.png and /dev/null differ diff --git a/attached_assets/image_1762237117998.png b/attached_assets/image_1762237117998.png deleted file mode 100644 index db7dc65..0000000 Binary files a/attached_assets/image_1762237117998.png and /dev/null differ diff --git a/attached_assets/image_1762237209783.png b/attached_assets/image_1762237209783.png deleted file mode 100644 index 2aae1eb..0000000 Binary files a/attached_assets/image_1762237209783.png and /dev/null differ diff --git a/attached_assets/image_1762237282260.png b/attached_assets/image_1762237282260.png deleted file mode 100644 index f879d9c..0000000 Binary files a/attached_assets/image_1762237282260.png and /dev/null differ diff --git a/attached_assets/image_1762237556138.png b/attached_assets/image_1762237556138.png deleted file mode 100644 index 78b9b88..0000000 Binary files a/attached_assets/image_1762237556138.png and /dev/null differ diff --git a/attached_assets/image_1762237599672.png b/attached_assets/image_1762237599672.png deleted file mode 100644 index 7e6201f..0000000 Binary files a/attached_assets/image_1762237599672.png and /dev/null differ diff --git a/attached_assets/image_1762237909626.png b/attached_assets/image_1762237909626.png deleted file mode 100644 index af547be..0000000 Binary files a/attached_assets/image_1762237909626.png and /dev/null differ diff --git a/attached_assets/image_1762237960985.png b/attached_assets/image_1762237960985.png deleted file mode 100644 index 583a27e..0000000 Binary files a/attached_assets/image_1762237960985.png and /dev/null differ diff --git a/attached_assets/image_1762238069602.png b/attached_assets/image_1762238069602.png deleted file mode 100644 index f987520..0000000 Binary files a/attached_assets/image_1762238069602.png and /dev/null differ diff --git a/attached_assets/image_1762238209034.png b/attached_assets/image_1762238209034.png deleted file mode 100644 index 58bebbd..0000000 Binary files a/attached_assets/image_1762238209034.png and /dev/null differ diff --git a/attached_assets/targeted_element_1756994827180.png b/attached_assets/targeted_element_1756994827180.png deleted file mode 100644 index 77e589f..0000000 Binary files a/attached_assets/targeted_element_1756994827180.png and /dev/null differ diff --git a/attached_assets/{00915FCA-886D-47B4-BAF2-AEDBC86B48E4}_1755775667579.png b/attached_assets/{00915FCA-886D-47B4-BAF2-AEDBC86B48E4}_1755775667579.png deleted file mode 100644 index 26f8af2..0000000 Binary files a/attached_assets/{00915FCA-886D-47B4-BAF2-AEDBC86B48E4}_1755775667579.png and /dev/null differ diff --git a/attached_assets/{02539E77-C591-4F68-9FB7-24E558FD2835}_1758637374899.png b/attached_assets/{02539E77-C591-4F68-9FB7-24E558FD2835}_1758637374899.png deleted file mode 100644 index 09a725f..0000000 Binary files a/attached_assets/{02539E77-C591-4F68-9FB7-24E558FD2835}_1758637374899.png and /dev/null differ diff --git a/attached_assets/{04A78920-A3B5-41B4-A22D-995051FB8DD4}_1757342109935.png b/attached_assets/{04A78920-A3B5-41B4-A22D-995051FB8DD4}_1757342109935.png deleted file mode 100644 index 1111d5b..0000000 Binary files a/attached_assets/{04A78920-A3B5-41B4-A22D-995051FB8DD4}_1757342109935.png and /dev/null differ diff --git a/attached_assets/{061DD707-8F0A-47F0-BD8E-D54E92CDB471}_1755166934662.png b/attached_assets/{061DD707-8F0A-47F0-BD8E-D54E92CDB471}_1755166934662.png deleted file mode 100644 index 7bda5b6..0000000 Binary files a/attached_assets/{061DD707-8F0A-47F0-BD8E-D54E92CDB471}_1755166934662.png and /dev/null differ diff --git a/attached_assets/{07B175F4-49BB-4566-9028-A277336AD485}_1755528677101.png b/attached_assets/{07B175F4-49BB-4566-9028-A277336AD485}_1755528677101.png deleted file mode 100644 index f229377..0000000 Binary files a/attached_assets/{07B175F4-49BB-4566-9028-A277336AD485}_1755528677101.png and /dev/null differ diff --git a/attached_assets/{12FE7BB1-8E1A-49E2-B470-5CE14459FA62}_1756808242895.png b/attached_assets/{12FE7BB1-8E1A-49E2-B470-5CE14459FA62}_1756808242895.png deleted file mode 100644 index fdaa244..0000000 Binary files a/attached_assets/{12FE7BB1-8E1A-49E2-B470-5CE14459FA62}_1756808242895.png and /dev/null differ diff --git a/attached_assets/{151BF143-B82D-4334-B94E-1A88BB10DE51}_1755164912655.png b/attached_assets/{151BF143-B82D-4334-B94E-1A88BB10DE51}_1755164912655.png deleted file mode 100644 index 4073391..0000000 Binary files a/attached_assets/{151BF143-B82D-4334-B94E-1A88BB10DE51}_1755164912655.png and /dev/null differ diff --git a/attached_assets/{1669D9BE-31D9-4519-B8A0-D652BFB9F445}_1757341683519.png b/attached_assets/{1669D9BE-31D9-4519-B8A0-D652BFB9F445}_1757341683519.png deleted file mode 100644 index 5c23fb6..0000000 Binary files a/attached_assets/{1669D9BE-31D9-4519-B8A0-D652BFB9F445}_1757341683519.png and /dev/null differ diff --git a/attached_assets/{16A95A8D-7826-4AD7-8519-09E89B6A0F44}_1756805143343.png b/attached_assets/{16A95A8D-7826-4AD7-8519-09E89B6A0F44}_1756805143343.png deleted file mode 100644 index 6eb1166..0000000 Binary files a/attached_assets/{16A95A8D-7826-4AD7-8519-09E89B6A0F44}_1756805143343.png and /dev/null differ diff --git a/attached_assets/{1DE00080-24DE-4B80-8305-102200EC2449}_1756805696113.png b/attached_assets/{1DE00080-24DE-4B80-8305-102200EC2449}_1756805696113.png deleted file mode 100644 index be2426e..0000000 Binary files a/attached_assets/{1DE00080-24DE-4B80-8305-102200EC2449}_1756805696113.png and /dev/null differ diff --git a/attached_assets/{1E5184AA-0C27-40F8-9F92-7F1FB32F9BF2}_1755170457859.png b/attached_assets/{1E5184AA-0C27-40F8-9F92-7F1FB32F9BF2}_1755170457859.png deleted file mode 100644 index 6b3fc10..0000000 Binary files a/attached_assets/{1E5184AA-0C27-40F8-9F92-7F1FB32F9BF2}_1755170457859.png and /dev/null differ diff --git a/attached_assets/{1E5471F2-4657-4352-B996-E355123E6F06}_1756903028538.png b/attached_assets/{1E5471F2-4657-4352-B996-E355123E6F06}_1756903028538.png deleted file mode 100644 index 6effc1f..0000000 Binary files a/attached_assets/{1E5471F2-4657-4352-B996-E355123E6F06}_1756903028538.png and /dev/null differ diff --git a/attached_assets/{1EF5FBFA-6C94-404C-9AE7-1F235DB6821B}_1756903357955.png b/attached_assets/{1EF5FBFA-6C94-404C-9AE7-1F235DB6821B}_1756903357955.png deleted file mode 100644 index 62a4277..0000000 Binary files a/attached_assets/{1EF5FBFA-6C94-404C-9AE7-1F235DB6821B}_1756903357955.png and /dev/null differ diff --git a/attached_assets/{20180834-720F-4894-AD20-4446EE267ED7}_1757415245344.png b/attached_assets/{20180834-720F-4894-AD20-4446EE267ED7}_1757415245344.png deleted file mode 100644 index f4eb3c4..0000000 Binary files a/attached_assets/{20180834-720F-4894-AD20-4446EE267ED7}_1757415245344.png and /dev/null differ diff --git a/attached_assets/{20C84D95-5589-4A3B-A3E8-FF26B0DE30B9}_1762258671191.png b/attached_assets/{20C84D95-5589-4A3B-A3E8-FF26B0DE30B9}_1762258671191.png deleted file mode 100644 index 440210a..0000000 Binary files a/attached_assets/{20C84D95-5589-4A3B-A3E8-FF26B0DE30B9}_1762258671191.png and /dev/null differ diff --git a/attached_assets/{233371AA-29E0-4DDB-A0E3-B792E4B62C9E}_1755173552015.png b/attached_assets/{233371AA-29E0-4DDB-A0E3-B792E4B62C9E}_1755173552015.png deleted file mode 100644 index f347179..0000000 Binary files a/attached_assets/{233371AA-29E0-4DDB-A0E3-B792E4B62C9E}_1755173552015.png and /dev/null differ diff --git a/attached_assets/{23C5A9FE-38C6-4571-B600-92377646DB7C}_1762252125737.png b/attached_assets/{23C5A9FE-38C6-4571-B600-92377646DB7C}_1762252125737.png deleted file mode 100644 index 68346ad..0000000 Binary files a/attached_assets/{23C5A9FE-38C6-4571-B600-92377646DB7C}_1762252125737.png and /dev/null differ diff --git a/attached_assets/{2416E2D5-47C8-430C-BA9A-2E57A4A77EEB}_1755171889832.png b/attached_assets/{2416E2D5-47C8-430C-BA9A-2E57A4A77EEB}_1755171889832.png deleted file mode 100644 index 5c09364..0000000 Binary files a/attached_assets/{2416E2D5-47C8-430C-BA9A-2E57A4A77EEB}_1755171889832.png and /dev/null differ diff --git a/attached_assets/{243F4726-3549-4C96-80EB-0FD9A84A36ED}_1762259049954.png b/attached_assets/{243F4726-3549-4C96-80EB-0FD9A84A36ED}_1762259049954.png deleted file mode 100644 index c5ab841..0000000 Binary files a/attached_assets/{243F4726-3549-4C96-80EB-0FD9A84A36ED}_1762259049954.png and /dev/null differ diff --git a/attached_assets/{2723FB4A-B2EE-4580-9691-34ADDAC654C9}_1756903866962.png b/attached_assets/{2723FB4A-B2EE-4580-9691-34ADDAC654C9}_1756903866962.png deleted file mode 100644 index 8a85185..0000000 Binary files a/attached_assets/{2723FB4A-B2EE-4580-9691-34ADDAC654C9}_1756903866962.png and /dev/null differ diff --git a/attached_assets/{27B090EB-53BA-4C08-ACC9-3DB0AE4E1D7B}_1755089774422.png b/attached_assets/{27B090EB-53BA-4C08-ACC9-3DB0AE4E1D7B}_1755089774422.png deleted file mode 100644 index 10d69f0..0000000 Binary files a/attached_assets/{27B090EB-53BA-4C08-ACC9-3DB0AE4E1D7B}_1755089774422.png and /dev/null differ diff --git a/attached_assets/{2B237FAA-8C77-4634-861D-C57089DFEE95}_1755592496042.png b/attached_assets/{2B237FAA-8C77-4634-861D-C57089DFEE95}_1755592496042.png deleted file mode 100644 index ec3d040..0000000 Binary files a/attached_assets/{2B237FAA-8C77-4634-861D-C57089DFEE95}_1755592496042.png and /dev/null differ diff --git a/attached_assets/{2B3CACBD-D922-400D-87F7-F05A5184ED7A}_1756905847853.png b/attached_assets/{2B3CACBD-D922-400D-87F7-F05A5184ED7A}_1756905847853.png deleted file mode 100644 index fc7a14b..0000000 Binary files a/attached_assets/{2B3CACBD-D922-400D-87F7-F05A5184ED7A}_1756905847853.png and /dev/null differ diff --git a/attached_assets/{2C2B48AF-FD2E-46BF-BAAA-3CEB74572E05}_1756889013795.png b/attached_assets/{2C2B48AF-FD2E-46BF-BAAA-3CEB74572E05}_1756889013795.png deleted file mode 100644 index 4b76891..0000000 Binary files a/attached_assets/{2C2B48AF-FD2E-46BF-BAAA-3CEB74572E05}_1756889013795.png and /dev/null differ diff --git a/attached_assets/{2C3F5F28-2666-4611-A472-9594D2C098B3}_1755595272546.png b/attached_assets/{2C3F5F28-2666-4611-A472-9594D2C098B3}_1755595272546.png deleted file mode 100644 index 2d1e100..0000000 Binary files a/attached_assets/{2C3F5F28-2666-4611-A472-9594D2C098B3}_1755595272546.png and /dev/null differ diff --git a/attached_assets/{32CFF634-950E-44BF-946B-EF94C6CE9A58}_1755088076616.png b/attached_assets/{32CFF634-950E-44BF-946B-EF94C6CE9A58}_1755088076616.png deleted file mode 100644 index a1c0e3f..0000000 Binary files a/attached_assets/{32CFF634-950E-44BF-946B-EF94C6CE9A58}_1755088076616.png and /dev/null differ diff --git a/attached_assets/{33F1A5F5-A94C-4C05-8B71-259FD14545DF}_1757340049543.png b/attached_assets/{33F1A5F5-A94C-4C05-8B71-259FD14545DF}_1757340049543.png deleted file mode 100644 index 1e62c5c..0000000 Binary files a/attached_assets/{33F1A5F5-A94C-4C05-8B71-259FD14545DF}_1757340049543.png and /dev/null differ diff --git a/attached_assets/{34C45BD3-AB37-414B-86E3-566D7A83CA59}_1757581466837.png b/attached_assets/{34C45BD3-AB37-414B-86E3-566D7A83CA59}_1757581466837.png deleted file mode 100644 index 5fce854..0000000 Binary files a/attached_assets/{34C45BD3-AB37-414B-86E3-566D7A83CA59}_1757581466837.png and /dev/null differ diff --git a/attached_assets/{3ABF3777-6B56-434B-95E7-E682B436744C}_1762252968423.png b/attached_assets/{3ABF3777-6B56-434B-95E7-E682B436744C}_1762252968423.png deleted file mode 100644 index 4ec83ef..0000000 Binary files a/attached_assets/{3ABF3777-6B56-434B-95E7-E682B436744C}_1762252968423.png and /dev/null differ diff --git a/attached_assets/{418F692C-F3C5-4832-A3C4-C4AA2FEFEDB7}_1755588938495.png b/attached_assets/{418F692C-F3C5-4832-A3C4-C4AA2FEFEDB7}_1755588938495.png deleted file mode 100644 index 2168edb..0000000 Binary files a/attached_assets/{418F692C-F3C5-4832-A3C4-C4AA2FEFEDB7}_1755588938495.png and /dev/null differ diff --git a/attached_assets/{4278DD49-FD8D-4AFC-82CB-895FC4809BD0}_1755086401711.png b/attached_assets/{4278DD49-FD8D-4AFC-82CB-895FC4809BD0}_1755086401711.png deleted file mode 100644 index 86ef013..0000000 Binary files a/attached_assets/{4278DD49-FD8D-4AFC-82CB-895FC4809BD0}_1755086401711.png and /dev/null differ diff --git a/attached_assets/{434F083D-7786-432D-ABE0-5CC7073C875D}_1755170333557.png b/attached_assets/{434F083D-7786-432D-ABE0-5CC7073C875D}_1755170333557.png deleted file mode 100644 index 313c9c8..0000000 Binary files a/attached_assets/{434F083D-7786-432D-ABE0-5CC7073C875D}_1755170333557.png and /dev/null differ diff --git a/attached_assets/{459D493D-5700-458A-9E0C-AF95D85CF6F5}_1757343225112.png b/attached_assets/{459D493D-5700-458A-9E0C-AF95D85CF6F5}_1757343225112.png deleted file mode 100644 index d6f0c50..0000000 Binary files a/attached_assets/{459D493D-5700-458A-9E0C-AF95D85CF6F5}_1757343225112.png and /dev/null differ diff --git a/attached_assets/{4603FD9C-DCE9-469E-A659-47D34156686F}_1755586486756.png b/attached_assets/{4603FD9C-DCE9-469E-A659-47D34156686F}_1755586486756.png deleted file mode 100644 index 15e719e..0000000 Binary files a/attached_assets/{4603FD9C-DCE9-469E-A659-47D34156686F}_1755586486756.png and /dev/null differ diff --git a/attached_assets/{46180463-FA29-4E9B-B202-45BF0FC27BE6}_1756906944671.png b/attached_assets/{46180463-FA29-4E9B-B202-45BF0FC27BE6}_1756906944671.png deleted file mode 100644 index 8d456a0..0000000 Binary files a/attached_assets/{46180463-FA29-4E9B-B202-45BF0FC27BE6}_1756906944671.png and /dev/null differ diff --git a/attached_assets/{479D6EB1-2ED4-4D44-B81A-9E72A1DC4E51}_1757406654986.png b/attached_assets/{479D6EB1-2ED4-4D44-B81A-9E72A1DC4E51}_1757406654986.png deleted file mode 100644 index c79a7b7..0000000 Binary files a/attached_assets/{479D6EB1-2ED4-4D44-B81A-9E72A1DC4E51}_1757406654986.png and /dev/null differ diff --git a/attached_assets/{496F0E32-2A57-4E68-BCC2-2FEF5994C6B5}_1755601443875.png b/attached_assets/{496F0E32-2A57-4E68-BCC2-2FEF5994C6B5}_1755601443875.png deleted file mode 100644 index 64ad496..0000000 Binary files a/attached_assets/{496F0E32-2A57-4E68-BCC2-2FEF5994C6B5}_1755601443875.png and /dev/null differ diff --git a/attached_assets/{4B0F6453-FA1A-4C2F-9BED-09B879C44D0C}_1755525873766.png b/attached_assets/{4B0F6453-FA1A-4C2F-9BED-09B879C44D0C}_1755525873766.png deleted file mode 100644 index 10e9d35..0000000 Binary files a/attached_assets/{4B0F6453-FA1A-4C2F-9BED-09B879C44D0C}_1755525873766.png and /dev/null differ diff --git a/attached_assets/{4CD624D9-1097-4643-80B2-FE1B87169440}_1757407593708.png b/attached_assets/{4CD624D9-1097-4643-80B2-FE1B87169440}_1757407593708.png deleted file mode 100644 index 780b859..0000000 Binary files a/attached_assets/{4CD624D9-1097-4643-80B2-FE1B87169440}_1757407593708.png and /dev/null differ diff --git a/attached_assets/{4EAE4304-85E8-49AB-B5B3-7EC51B7D87D2}_1755084003944.png b/attached_assets/{4EAE4304-85E8-49AB-B5B3-7EC51B7D87D2}_1755084003944.png deleted file mode 100644 index 94bc11b..0000000 Binary files a/attached_assets/{4EAE4304-85E8-49AB-B5B3-7EC51B7D87D2}_1755084003944.png and /dev/null differ diff --git a/attached_assets/{4F3CA6E2-D8B2-4275-91F7-8FD06695C068}_1756802631614.png b/attached_assets/{4F3CA6E2-D8B2-4275-91F7-8FD06695C068}_1756802631614.png deleted file mode 100644 index 2e630e1..0000000 Binary files a/attached_assets/{4F3CA6E2-D8B2-4275-91F7-8FD06695C068}_1756802631614.png and /dev/null differ diff --git a/attached_assets/{50D0119F-3A92-45D5-9D92-DBDD9502A922}_1762252830301.png b/attached_assets/{50D0119F-3A92-45D5-9D92-DBDD9502A922}_1762252830301.png deleted file mode 100644 index 7174bf6..0000000 Binary files a/attached_assets/{50D0119F-3A92-45D5-9D92-DBDD9502A922}_1762252830301.png and /dev/null differ diff --git a/attached_assets/{529ADFF2-5678-4AEE-8C88-0C754BA3E6C5}_1755171143702.png b/attached_assets/{529ADFF2-5678-4AEE-8C88-0C754BA3E6C5}_1755171143702.png deleted file mode 100644 index 61c11e1..0000000 Binary files a/attached_assets/{529ADFF2-5678-4AEE-8C88-0C754BA3E6C5}_1755171143702.png and /dev/null differ diff --git a/attached_assets/{529AECE1-42BB-4DB6-9E8D-9BA49951016E}_1756807222272.png b/attached_assets/{529AECE1-42BB-4DB6-9E8D-9BA49951016E}_1756807222272.png deleted file mode 100644 index 0f00934..0000000 Binary files a/attached_assets/{529AECE1-42BB-4DB6-9E8D-9BA49951016E}_1756807222272.png and /dev/null differ diff --git a/attached_assets/{578C9443-6F89-442C-A26B-FF76B4F2A491}_1755772317820.png b/attached_assets/{578C9443-6F89-442C-A26B-FF76B4F2A491}_1755772317820.png deleted file mode 100644 index c7f6110..0000000 Binary files a/attached_assets/{578C9443-6F89-442C-A26B-FF76B4F2A491}_1755772317820.png and /dev/null differ diff --git a/attached_assets/{58EC7866-65BC-47E0-8411-6F41026061E8}_1762258865336.png b/attached_assets/{58EC7866-65BC-47E0-8411-6F41026061E8}_1762258865336.png deleted file mode 100644 index d9ab6d1..0000000 Binary files a/attached_assets/{58EC7866-65BC-47E0-8411-6F41026061E8}_1762258865336.png and /dev/null differ diff --git a/attached_assets/{5B206DF3-1917-489D-9F9C-B3DE0B94BEAA}_1755520462252.png b/attached_assets/{5B206DF3-1917-489D-9F9C-B3DE0B94BEAA}_1755520462252.png deleted file mode 100644 index 62ac12f..0000000 Binary files a/attached_assets/{5B206DF3-1917-489D-9F9C-B3DE0B94BEAA}_1755520462252.png and /dev/null differ diff --git a/attached_assets/{5FAD3A65-A57D-426E-8B5E-EA12167A6101}_1755084736351.png b/attached_assets/{5FAD3A65-A57D-426E-8B5E-EA12167A6101}_1755084736351.png deleted file mode 100644 index 9b402cb..0000000 Binary files a/attached_assets/{5FAD3A65-A57D-426E-8B5E-EA12167A6101}_1755084736351.png and /dev/null differ diff --git a/attached_assets/{5FEDEA74-432A-403C-A88F-E923953D6204}_1756802166706.png b/attached_assets/{5FEDEA74-432A-403C-A88F-E923953D6204}_1756802166706.png deleted file mode 100644 index 7ecc6a6..0000000 Binary files a/attached_assets/{5FEDEA74-432A-403C-A88F-E923953D6204}_1756802166706.png and /dev/null differ diff --git a/attached_assets/{6268739F-12F1-447E-8021-8D7A6666FC16}_1756890005406.png b/attached_assets/{6268739F-12F1-447E-8021-8D7A6666FC16}_1756890005406.png deleted file mode 100644 index 371431b..0000000 Binary files a/attached_assets/{6268739F-12F1-447E-8021-8D7A6666FC16}_1756890005406.png and /dev/null differ diff --git a/attached_assets/{63A69204-8F29-40AC-811B-7CF229C0AC08}_1756802641364.png b/attached_assets/{63A69204-8F29-40AC-811B-7CF229C0AC08}_1756802641364.png deleted file mode 100644 index 97d8c4f..0000000 Binary files a/attached_assets/{63A69204-8F29-40AC-811B-7CF229C0AC08}_1756802641364.png and /dev/null differ diff --git a/attached_assets/{65A983CD-16E6-46F2-8B11-458B0C27D0A1}_1755597404312.png b/attached_assets/{65A983CD-16E6-46F2-8B11-458B0C27D0A1}_1755597404312.png deleted file mode 100644 index 169ee75..0000000 Binary files a/attached_assets/{65A983CD-16E6-46F2-8B11-458B0C27D0A1}_1755597404312.png and /dev/null differ diff --git a/attached_assets/{6609AEB4-0733-4982-A1E0-B879D69D41D4}_1755085492080.png b/attached_assets/{6609AEB4-0733-4982-A1E0-B879D69D41D4}_1755085492080.png deleted file mode 100644 index 36caeaa..0000000 Binary files a/attached_assets/{6609AEB4-0733-4982-A1E0-B879D69D41D4}_1755085492080.png and /dev/null differ diff --git a/attached_assets/{66B42A7D-EB4F-45AC-A9CA-1EA3033AD4E3}_1755173214117.png b/attached_assets/{66B42A7D-EB4F-45AC-A9CA-1EA3033AD4E3}_1755173214117.png deleted file mode 100644 index 93838a3..0000000 Binary files a/attached_assets/{66B42A7D-EB4F-45AC-A9CA-1EA3033AD4E3}_1755173214117.png and /dev/null differ diff --git a/attached_assets/{6960A65A-765E-4F5A-98DF-2407404A0F1D}_1755602784559.png b/attached_assets/{6960A65A-765E-4F5A-98DF-2407404A0F1D}_1755602784559.png deleted file mode 100644 index 3507058..0000000 Binary files a/attached_assets/{6960A65A-765E-4F5A-98DF-2407404A0F1D}_1755602784559.png and /dev/null differ diff --git a/attached_assets/{6D148622-0DAC-41AE-8ABC-F690DEECEF68}_1762253192830.png b/attached_assets/{6D148622-0DAC-41AE-8ABC-F690DEECEF68}_1762253192830.png deleted file mode 100644 index 0ea3eea..0000000 Binary files a/attached_assets/{6D148622-0DAC-41AE-8ABC-F690DEECEF68}_1762253192830.png and /dev/null differ diff --git a/attached_assets/{6ED84FEA-F21E-4F31-AD91-D25613CAD17A}_1756904384640.png b/attached_assets/{6ED84FEA-F21E-4F31-AD91-D25613CAD17A}_1756904384640.png deleted file mode 100644 index 998f298..0000000 Binary files a/attached_assets/{6ED84FEA-F21E-4F31-AD91-D25613CAD17A}_1756904384640.png and /dev/null differ diff --git a/attached_assets/{6FC8AFEF-7550-4363-805C-AEAA465F2FB1}_1755775097820.png b/attached_assets/{6FC8AFEF-7550-4363-805C-AEAA465F2FB1}_1755775097820.png deleted file mode 100644 index 9c25005..0000000 Binary files a/attached_assets/{6FC8AFEF-7550-4363-805C-AEAA465F2FB1}_1755775097820.png and /dev/null differ diff --git a/attached_assets/{71CBA732-C237-42CE-B37A-8F09149CD67B}_1756906573126.png b/attached_assets/{71CBA732-C237-42CE-B37A-8F09149CD67B}_1756906573126.png deleted file mode 100644 index 2a57252..0000000 Binary files a/attached_assets/{71CBA732-C237-42CE-B37A-8F09149CD67B}_1756906573126.png and /dev/null differ diff --git a/attached_assets/{73925D53-C2B0-43EC-9F2E-1EA39DAACCD9}_1757340187406.png b/attached_assets/{73925D53-C2B0-43EC-9F2E-1EA39DAACCD9}_1757340187406.png deleted file mode 100644 index 6135a03..0000000 Binary files a/attached_assets/{73925D53-C2B0-43EC-9F2E-1EA39DAACCD9}_1757340187406.png and /dev/null differ diff --git a/attached_assets/{73B77BF4-B744-4FAB-ACFC-0C80F04953D9}_1756906652566.png b/attached_assets/{73B77BF4-B744-4FAB-ACFC-0C80F04953D9}_1756906652566.png deleted file mode 100644 index 7999099..0000000 Binary files a/attached_assets/{73B77BF4-B744-4FAB-ACFC-0C80F04953D9}_1756906652566.png and /dev/null differ diff --git a/attached_assets/{773F1FF1-B583-448A-8998-E60750EFCEB7}_1762258496115.png b/attached_assets/{773F1FF1-B583-448A-8998-E60750EFCEB7}_1762258496115.png deleted file mode 100644 index 6a3895d..0000000 Binary files a/attached_assets/{773F1FF1-B583-448A-8998-E60750EFCEB7}_1762258496115.png and /dev/null differ diff --git a/attached_assets/{77C1298A-A150-4224-9108-40DBA8E3A2D3}_1755600117450.png b/attached_assets/{77C1298A-A150-4224-9108-40DBA8E3A2D3}_1755600117450.png deleted file mode 100644 index 957f5bd..0000000 Binary files a/attached_assets/{77C1298A-A150-4224-9108-40DBA8E3A2D3}_1755600117450.png and /dev/null differ diff --git a/attached_assets/{77FAD293-D4EF-4B61-B8A4-15A92B31A23D}_1755172104901.png b/attached_assets/{77FAD293-D4EF-4B61-B8A4-15A92B31A23D}_1755172104901.png deleted file mode 100644 index 65f491b..0000000 Binary files a/attached_assets/{77FAD293-D4EF-4B61-B8A4-15A92B31A23D}_1755172104901.png and /dev/null differ diff --git a/attached_assets/{7925BF31-D5ED-40D1-BCD7-9AFF4C62F714}_1755086475210.png b/attached_assets/{7925BF31-D5ED-40D1-BCD7-9AFF4C62F714}_1755086475210.png deleted file mode 100644 index 10ea445..0000000 Binary files a/attached_assets/{7925BF31-D5ED-40D1-BCD7-9AFF4C62F714}_1755086475210.png and /dev/null differ diff --git a/attached_assets/{79F09BB5-78FB-44C7-841D-F804D7A56255}_1755525337319.png b/attached_assets/{79F09BB5-78FB-44C7-841D-F804D7A56255}_1755525337319.png deleted file mode 100644 index 4c2b359..0000000 Binary files a/attached_assets/{79F09BB5-78FB-44C7-841D-F804D7A56255}_1755525337319.png and /dev/null differ diff --git a/attached_assets/{7C6D9420-CCDC-4B7C-8E38-8581900E6E96}_1757341115795.png b/attached_assets/{7C6D9420-CCDC-4B7C-8E38-8581900E6E96}_1757341115795.png deleted file mode 100644 index d36e5a6..0000000 Binary files a/attached_assets/{7C6D9420-CCDC-4B7C-8E38-8581900E6E96}_1757341115795.png and /dev/null differ diff --git a/attached_assets/{7D92C1BE-2208-4AF2-9BC5-CA2CAC967D45}_1755527809012.png b/attached_assets/{7D92C1BE-2208-4AF2-9BC5-CA2CAC967D45}_1755527809012.png deleted file mode 100644 index 8c2b29d..0000000 Binary files a/attached_assets/{7D92C1BE-2208-4AF2-9BC5-CA2CAC967D45}_1755527809012.png and /dev/null differ diff --git a/attached_assets/{7E727676-2551-47A9-A51F-3C398DB053A4}_1755086877145.png b/attached_assets/{7E727676-2551-47A9-A51F-3C398DB053A4}_1755086877145.png deleted file mode 100644 index abbe3d9..0000000 Binary files a/attached_assets/{7E727676-2551-47A9-A51F-3C398DB053A4}_1755086877145.png and /dev/null differ diff --git a/attached_assets/{8159C0E1-D1B9-4FA3-BEDD-B0EFEA05764B}_1755519683882.png b/attached_assets/{8159C0E1-D1B9-4FA3-BEDD-B0EFEA05764B}_1755519683882.png deleted file mode 100644 index 1ba1ed0..0000000 Binary files a/attached_assets/{8159C0E1-D1B9-4FA3-BEDD-B0EFEA05764B}_1755519683882.png and /dev/null differ diff --git a/attached_assets/{825C5BBD-18CA-407E-A113-69924A7CBC2F}_1755596717328.png b/attached_assets/{825C5BBD-18CA-407E-A113-69924A7CBC2F}_1755596717328.png deleted file mode 100644 index 7bcab33..0000000 Binary files a/attached_assets/{825C5BBD-18CA-407E-A113-69924A7CBC2F}_1755596717328.png and /dev/null differ diff --git a/attached_assets/{830DA296-77E8-4B6C-B2E9-708265C6A84B}_1757344214372.png b/attached_assets/{830DA296-77E8-4B6C-B2E9-708265C6A84B}_1757344214372.png deleted file mode 100644 index f86ff71..0000000 Binary files a/attached_assets/{830DA296-77E8-4B6C-B2E9-708265C6A84B}_1757344214372.png and /dev/null differ diff --git a/attached_assets/{8395115C-050C-449D-B6EA-35B35AD8ECB4}_1755773201516.png b/attached_assets/{8395115C-050C-449D-B6EA-35B35AD8ECB4}_1755773201516.png deleted file mode 100644 index a896d77..0000000 Binary files a/attached_assets/{8395115C-050C-449D-B6EA-35B35AD8ECB4}_1755773201516.png and /dev/null differ diff --git a/attached_assets/{84E65E8F-73EC-4D39-AD1B-D163F24A2990}_1755086863705.png b/attached_assets/{84E65E8F-73EC-4D39-AD1B-D163F24A2990}_1755086863705.png deleted file mode 100644 index 6f02168..0000000 Binary files a/attached_assets/{84E65E8F-73EC-4D39-AD1B-D163F24A2990}_1755086863705.png and /dev/null differ diff --git a/attached_assets/{86795419-9BAD-4C8E-BFF5-840132D9DCDD}_1755599740679.png b/attached_assets/{86795419-9BAD-4C8E-BFF5-840132D9DCDD}_1755599740679.png deleted file mode 100644 index 9316626..0000000 Binary files a/attached_assets/{86795419-9BAD-4C8E-BFF5-840132D9DCDD}_1755599740679.png and /dev/null differ diff --git a/attached_assets/{86EBD6CF-3EE3-4A7F-ABA5-C8CE29D14101}_1755072629894.png b/attached_assets/{86EBD6CF-3EE3-4A7F-ABA5-C8CE29D14101}_1755072629894.png deleted file mode 100644 index d2df52b..0000000 Binary files a/attached_assets/{86EBD6CF-3EE3-4A7F-ABA5-C8CE29D14101}_1755072629894.png and /dev/null differ diff --git a/attached_assets/{89C661AC-03CC-41A6-816B-D17FE8D3B334}_1755525692929.png b/attached_assets/{89C661AC-03CC-41A6-816B-D17FE8D3B334}_1755525692929.png deleted file mode 100644 index c3e88d7..0000000 Binary files a/attached_assets/{89C661AC-03CC-41A6-816B-D17FE8D3B334}_1755525692929.png and /dev/null differ diff --git a/attached_assets/{8B6C5975-064E-4FE4-A8C3-3176DFB1BEBE}_1756805383966.png b/attached_assets/{8B6C5975-064E-4FE4-A8C3-3176DFB1BEBE}_1756805383966.png deleted file mode 100644 index ca699ac..0000000 Binary files a/attached_assets/{8B6C5975-064E-4FE4-A8C3-3176DFB1BEBE}_1756805383966.png and /dev/null differ diff --git a/attached_assets/{8C9A60B2-DD64-429F-B9FF-7B9F1598B3D8}_1756890188902.png b/attached_assets/{8C9A60B2-DD64-429F-B9FF-7B9F1598B3D8}_1756890188902.png deleted file mode 100644 index 094711b..0000000 Binary files a/attached_assets/{8C9A60B2-DD64-429F-B9FF-7B9F1598B3D8}_1756890188902.png and /dev/null differ diff --git a/attached_assets/{9002F5FB-F6B4-46A6-979F-32AC15F3CEAC}_1755773498629.png b/attached_assets/{9002F5FB-F6B4-46A6-979F-32AC15F3CEAC}_1755773498629.png deleted file mode 100644 index 6d00bbc..0000000 Binary files a/attached_assets/{9002F5FB-F6B4-46A6-979F-32AC15F3CEAC}_1755773498629.png and /dev/null differ diff --git a/attached_assets/{91C8B3DA-D7C8-4ADA-83AA-0709433632EF}_1755601835606.png b/attached_assets/{91C8B3DA-D7C8-4ADA-83AA-0709433632EF}_1755601835606.png deleted file mode 100644 index 9417e23..0000000 Binary files a/attached_assets/{91C8B3DA-D7C8-4ADA-83AA-0709433632EF}_1755601835606.png and /dev/null differ diff --git a/attached_assets/{91FEBBAA-743A-4819-A62C-CFD5B990A9AB}_1757343830401.png b/attached_assets/{91FEBBAA-743A-4819-A62C-CFD5B990A9AB}_1757343830401.png deleted file mode 100644 index 57083d1..0000000 Binary files a/attached_assets/{91FEBBAA-743A-4819-A62C-CFD5B990A9AB}_1757343830401.png and /dev/null differ diff --git a/attached_assets/{926451E7-CE51-4BB6-8530-D774279D74AD}_1757342239538.png b/attached_assets/{926451E7-CE51-4BB6-8530-D774279D74AD}_1757342239538.png deleted file mode 100644 index 53fa23d..0000000 Binary files a/attached_assets/{926451E7-CE51-4BB6-8530-D774279D74AD}_1757342239538.png and /dev/null differ diff --git a/attached_assets/{92A7DC30-B92C-4131-8CA5-22B3002020EB}_1756910007514.png b/attached_assets/{92A7DC30-B92C-4131-8CA5-22B3002020EB}_1756910007514.png deleted file mode 100644 index 4674ae3..0000000 Binary files a/attached_assets/{92A7DC30-B92C-4131-8CA5-22B3002020EB}_1756910007514.png and /dev/null differ diff --git a/attached_assets/{92F4C17F-46C6-4EDD-9F90-76B937309370}_1755520035539.png b/attached_assets/{92F4C17F-46C6-4EDD-9F90-76B937309370}_1755520035539.png deleted file mode 100644 index 8884261..0000000 Binary files a/attached_assets/{92F4C17F-46C6-4EDD-9F90-76B937309370}_1755520035539.png and /dev/null differ diff --git a/attached_assets/{9345419A-501D-4DF5-A5FB-45427DF9D9C7}_1756807405113.png b/attached_assets/{9345419A-501D-4DF5-A5FB-45427DF9D9C7}_1756807405113.png deleted file mode 100644 index 7747340..0000000 Binary files a/attached_assets/{9345419A-501D-4DF5-A5FB-45427DF9D9C7}_1756807405113.png and /dev/null differ diff --git a/attached_assets/{95778F6E-A507-468E-A4F1-6FA3F8A77ECB}_1757341993547.png b/attached_assets/{95778F6E-A507-468E-A4F1-6FA3F8A77ECB}_1757341993547.png deleted file mode 100644 index 4472500..0000000 Binary files a/attached_assets/{95778F6E-A507-468E-A4F1-6FA3F8A77ECB}_1757341993547.png and /dev/null differ diff --git a/attached_assets/{967A0649-5D89-4C64-BA9F-C6807D34F2AF}_1756887841415.png b/attached_assets/{967A0649-5D89-4C64-BA9F-C6807D34F2AF}_1756887841415.png deleted file mode 100644 index c447ae2..0000000 Binary files a/attached_assets/{967A0649-5D89-4C64-BA9F-C6807D34F2AF}_1756887841415.png and /dev/null differ diff --git a/attached_assets/{968039DC-8072-41AF-A30A-83C81AB21744}_1755596281294.png b/attached_assets/{968039DC-8072-41AF-A30A-83C81AB21744}_1755596281294.png deleted file mode 100644 index ea883a9..0000000 Binary files a/attached_assets/{968039DC-8072-41AF-A30A-83C81AB21744}_1755596281294.png and /dev/null differ diff --git a/attached_assets/{983A00E0-A7AD-4C41-8BC4-EFDE9301CE27}_1755598686801.png b/attached_assets/{983A00E0-A7AD-4C41-8BC4-EFDE9301CE27}_1755598686801.png deleted file mode 100644 index 9f46342..0000000 Binary files a/attached_assets/{983A00E0-A7AD-4C41-8BC4-EFDE9301CE27}_1755598686801.png and /dev/null differ diff --git a/attached_assets/{99BE5007-26A4-402F-93EA-753D2B130FE9}_1756804561440.png b/attached_assets/{99BE5007-26A4-402F-93EA-753D2B130FE9}_1756804561440.png deleted file mode 100644 index 82a35cd..0000000 Binary files a/attached_assets/{99BE5007-26A4-402F-93EA-753D2B130FE9}_1756804561440.png and /dev/null differ diff --git a/attached_assets/{9BBA2253-DFCC-4F76-A735-38FDCDCAF4D3}_1759329827628.png b/attached_assets/{9BBA2253-DFCC-4F76-A735-38FDCDCAF4D3}_1759329827628.png deleted file mode 100644 index 348d439..0000000 Binary files a/attached_assets/{9BBA2253-DFCC-4F76-A735-38FDCDCAF4D3}_1759329827628.png and /dev/null differ diff --git a/attached_assets/{9D59854C-8390-4082-84F2-68DD6746FA20}_1755083891815.png b/attached_assets/{9D59854C-8390-4082-84F2-68DD6746FA20}_1755083891815.png deleted file mode 100644 index a36100f..0000000 Binary files a/attached_assets/{9D59854C-8390-4082-84F2-68DD6746FA20}_1755083891815.png and /dev/null differ diff --git a/attached_assets/{9DE8AAD5-286D-4874-B6AF-41361104A016}_1755521793622.png b/attached_assets/{9DE8AAD5-286D-4874-B6AF-41361104A016}_1755521793622.png deleted file mode 100644 index 7a30741..0000000 Binary files a/attached_assets/{9DE8AAD5-286D-4874-B6AF-41361104A016}_1755521793622.png and /dev/null differ diff --git a/attached_assets/{9F81C70E-566B-4181-89ED-BA22062981D4}_1757344517180.png b/attached_assets/{9F81C70E-566B-4181-89ED-BA22062981D4}_1757344517180.png deleted file mode 100644 index 874ca2b..0000000 Binary files a/attached_assets/{9F81C70E-566B-4181-89ED-BA22062981D4}_1757344517180.png and /dev/null differ diff --git a/attached_assets/{9FBA89B5-20DC-4F83-8B68-291CF8BA2732}_1756802996867.png b/attached_assets/{9FBA89B5-20DC-4F83-8B68-291CF8BA2732}_1756802996867.png deleted file mode 100644 index 3dfe8cc..0000000 Binary files a/attached_assets/{9FBA89B5-20DC-4F83-8B68-291CF8BA2732}_1756802996867.png and /dev/null differ diff --git a/attached_assets/{A0BEA539-9B9A-450F-9538-9F154F5CBCEC}_1755172547592.png b/attached_assets/{A0BEA539-9B9A-450F-9538-9F154F5CBCEC}_1755172547592.png deleted file mode 100644 index deda42e..0000000 Binary files a/attached_assets/{A0BEA539-9B9A-450F-9538-9F154F5CBCEC}_1755172547592.png and /dev/null differ diff --git a/attached_assets/{A365AB44-F0BD-4156-918A-F3435F5638D2}_1755165897107.png b/attached_assets/{A365AB44-F0BD-4156-918A-F3435F5638D2}_1755165897107.png deleted file mode 100644 index c618826..0000000 Binary files a/attached_assets/{A365AB44-F0BD-4156-918A-F3435F5638D2}_1755165897107.png and /dev/null differ diff --git a/attached_assets/{A37B84E2-6BB9-44AF-84FA-B6E2ED9FAECF}_1755086085970.png b/attached_assets/{A37B84E2-6BB9-44AF-84FA-B6E2ED9FAECF}_1755086085970.png deleted file mode 100644 index f07dd24..0000000 Binary files a/attached_assets/{A37B84E2-6BB9-44AF-84FA-B6E2ED9FAECF}_1755086085970.png and /dev/null differ diff --git a/attached_assets/{A4AE40BA-CB21-4BC1-B78E-3D15E088357E}_1762258064762.png b/attached_assets/{A4AE40BA-CB21-4BC1-B78E-3D15E088357E}_1762258064762.png deleted file mode 100644 index db917d6..0000000 Binary files a/attached_assets/{A4AE40BA-CB21-4BC1-B78E-3D15E088357E}_1762258064762.png and /dev/null differ diff --git a/attached_assets/{A4CE1C08-E421-411B-BEF4-A606B643B6C9}_1755598962970.png b/attached_assets/{A4CE1C08-E421-411B-BEF4-A606B643B6C9}_1755598962970.png deleted file mode 100644 index bb3d19e..0000000 Binary files a/attached_assets/{A4CE1C08-E421-411B-BEF4-A606B643B6C9}_1755598962970.png and /dev/null differ diff --git a/attached_assets/{A676AEC7-8F59-4857-8113-3C496DEF5765}_1755602263617.png b/attached_assets/{A676AEC7-8F59-4857-8113-3C496DEF5765}_1755602263617.png deleted file mode 100644 index e450485..0000000 Binary files a/attached_assets/{A676AEC7-8F59-4857-8113-3C496DEF5765}_1755602263617.png and /dev/null differ diff --git a/attached_assets/{A88C3638-BFCA-43D1-920D-DD72A24BC154}_1755526151632.png b/attached_assets/{A88C3638-BFCA-43D1-920D-DD72A24BC154}_1755526151632.png deleted file mode 100644 index ab6cfdc..0000000 Binary files a/attached_assets/{A88C3638-BFCA-43D1-920D-DD72A24BC154}_1755526151632.png and /dev/null differ diff --git a/attached_assets/{AC07FD10-52F2-4541-86DA-0ACBF6178F22}_1757343055582.png b/attached_assets/{AC07FD10-52F2-4541-86DA-0ACBF6178F22}_1757343055582.png deleted file mode 100644 index 81cbab1..0000000 Binary files a/attached_assets/{AC07FD10-52F2-4541-86DA-0ACBF6178F22}_1757343055582.png and /dev/null differ diff --git a/attached_assets/{AFCCEA96-0DBA-484C-8227-351A805BAB52}_1755775456367.png b/attached_assets/{AFCCEA96-0DBA-484C-8227-351A805BAB52}_1755775456367.png deleted file mode 100644 index 866ace6..0000000 Binary files a/attached_assets/{AFCCEA96-0DBA-484C-8227-351A805BAB52}_1755775456367.png and /dev/null differ diff --git a/attached_assets/{AFE143AC-CB14-4C68-832F-DE5AFED7EE65}_1755593010909.png b/attached_assets/{AFE143AC-CB14-4C68-832F-DE5AFED7EE65}_1755593010909.png deleted file mode 100644 index a8bfd18..0000000 Binary files a/attached_assets/{AFE143AC-CB14-4C68-832F-DE5AFED7EE65}_1755593010909.png and /dev/null differ diff --git a/attached_assets/{B115554A-00BF-4826-A2B2-F204BAF490AB}_1757342373618.png b/attached_assets/{B115554A-00BF-4826-A2B2-F204BAF490AB}_1757342373618.png deleted file mode 100644 index 0672393..0000000 Binary files a/attached_assets/{B115554A-00BF-4826-A2B2-F204BAF490AB}_1757342373618.png and /dev/null differ diff --git a/attached_assets/{B40F25BC-E33A-499A-B2F3-D3E7C5640F3A}_1755602554644.png b/attached_assets/{B40F25BC-E33A-499A-B2F3-D3E7C5640F3A}_1755602554644.png deleted file mode 100644 index b5e0b5c..0000000 Binary files a/attached_assets/{B40F25BC-E33A-499A-B2F3-D3E7C5640F3A}_1755602554644.png and /dev/null differ diff --git a/attached_assets/{B4F97B2A-1A88-4738-A50A-CB91D7D77FFB}_1759328822697.png b/attached_assets/{B4F97B2A-1A88-4738-A50A-CB91D7D77FFB}_1759328822697.png deleted file mode 100644 index e57ea5c..0000000 Binary files a/attached_assets/{B4F97B2A-1A88-4738-A50A-CB91D7D77FFB}_1759328822697.png and /dev/null differ diff --git a/attached_assets/{B5245B7D-A6D6-44B1-8342-2EBF172EDCE5}_1757341919102.png b/attached_assets/{B5245B7D-A6D6-44B1-8342-2EBF172EDCE5}_1757341919102.png deleted file mode 100644 index 68fcdda..0000000 Binary files a/attached_assets/{B5245B7D-A6D6-44B1-8342-2EBF172EDCE5}_1757341919102.png and /dev/null differ diff --git a/attached_assets/{BB709EB0-3316-4102-810F-51930B5B9BD1}_1755091259314.png b/attached_assets/{BB709EB0-3316-4102-810F-51930B5B9BD1}_1755091259314.png deleted file mode 100644 index 3651f0b..0000000 Binary files a/attached_assets/{BB709EB0-3316-4102-810F-51930B5B9BD1}_1755091259314.png and /dev/null differ diff --git a/attached_assets/{BFF85475-12F9-4E2D-B3E1-02EB721C4359}_1755526387099.png b/attached_assets/{BFF85475-12F9-4E2D-B3E1-02EB721C4359}_1755526387099.png deleted file mode 100644 index dd0ab81..0000000 Binary files a/attached_assets/{BFF85475-12F9-4E2D-B3E1-02EB721C4359}_1755526387099.png and /dev/null differ diff --git a/attached_assets/{C1883300-1265-40A5-9139-33AC2146D78A}_1755774788638.png b/attached_assets/{C1883300-1265-40A5-9139-33AC2146D78A}_1755774788638.png deleted file mode 100644 index 7f9df08..0000000 Binary files a/attached_assets/{C1883300-1265-40A5-9139-33AC2146D78A}_1755774788638.png and /dev/null differ diff --git a/attached_assets/{C56CC86D-CB96-48AD-BDD1-3630BB89E71A}_1755847760229.png b/attached_assets/{C56CC86D-CB96-48AD-BDD1-3630BB89E71A}_1755847760229.png deleted file mode 100644 index 57f277e..0000000 Binary files a/attached_assets/{C56CC86D-CB96-48AD-BDD1-3630BB89E71A}_1755847760229.png and /dev/null differ diff --git a/attached_assets/{CAF68BF5-A9AD-4502-B66B-9845B1162D42}_1756887415148.png b/attached_assets/{CAF68BF5-A9AD-4502-B66B-9845B1162D42}_1756887415148.png deleted file mode 100644 index 8109ac3..0000000 Binary files a/attached_assets/{CAF68BF5-A9AD-4502-B66B-9845B1162D42}_1756887415148.png and /dev/null differ diff --git a/attached_assets/{CD4EB6B1-2672-485F-819F-DA85245E7350}_1755526854178.png b/attached_assets/{CD4EB6B1-2672-485F-819F-DA85245E7350}_1755526854178.png deleted file mode 100644 index 16ae8a5..0000000 Binary files a/attached_assets/{CD4EB6B1-2672-485F-819F-DA85245E7350}_1755526854178.png and /dev/null differ diff --git a/attached_assets/{CE1E91BE-0DC8-46F0-BBE1-258FED86D3AF}_1755172880551.png b/attached_assets/{CE1E91BE-0DC8-46F0-BBE1-258FED86D3AF}_1755172880551.png deleted file mode 100644 index d05ec01..0000000 Binary files a/attached_assets/{CE1E91BE-0DC8-46F0-BBE1-258FED86D3AF}_1755172880551.png and /dev/null differ diff --git a/attached_assets/{CF3FFAA8-7A95-4515-AFEF-C501806CAB08}_1755595966533.png b/attached_assets/{CF3FFAA8-7A95-4515-AFEF-C501806CAB08}_1755595966533.png deleted file mode 100644 index a0d8246..0000000 Binary files a/attached_assets/{CF3FFAA8-7A95-4515-AFEF-C501806CAB08}_1755595966533.png and /dev/null differ diff --git a/attached_assets/{CFF3199A-A212-43CB-8739-FF2DDDF9F5E7}_1755520225501.png b/attached_assets/{CFF3199A-A212-43CB-8739-FF2DDDF9F5E7}_1755520225501.png deleted file mode 100644 index 6263ec5..0000000 Binary files a/attached_assets/{CFF3199A-A212-43CB-8739-FF2DDDF9F5E7}_1755520225501.png and /dev/null differ diff --git a/attached_assets/{D21CE371-D28D-4D2E-BE51-BBE3618FFDA8}_1755602028247.png b/attached_assets/{D21CE371-D28D-4D2E-BE51-BBE3618FFDA8}_1755602028247.png deleted file mode 100644 index 2a1a937..0000000 Binary files a/attached_assets/{D21CE371-D28D-4D2E-BE51-BBE3618FFDA8}_1755602028247.png and /dev/null differ diff --git a/attached_assets/{D506F8C6-F30D-4820-B5EA-AC95B3DC7701}_1757341724452.png b/attached_assets/{D506F8C6-F30D-4820-B5EA-AC95B3DC7701}_1757341724452.png deleted file mode 100644 index 73aa504..0000000 Binary files a/attached_assets/{D506F8C6-F30D-4820-B5EA-AC95B3DC7701}_1757341724452.png and /dev/null differ diff --git a/attached_assets/{D5EA1398-EDD8-4364-A012-28C574C8D0A3}_1757342535112.png b/attached_assets/{D5EA1398-EDD8-4364-A012-28C574C8D0A3}_1757342535112.png deleted file mode 100644 index 7b7a388..0000000 Binary files a/attached_assets/{D5EA1398-EDD8-4364-A012-28C574C8D0A3}_1757342535112.png and /dev/null differ diff --git a/attached_assets/{D6671DF4-2C39-47AC-BE02-B2254D62EFF1}_1755170790832.png b/attached_assets/{D6671DF4-2C39-47AC-BE02-B2254D62EFF1}_1755170790832.png deleted file mode 100644 index c580b75..0000000 Binary files a/attached_assets/{D6671DF4-2C39-47AC-BE02-B2254D62EFF1}_1755170790832.png and /dev/null differ diff --git a/attached_assets/{D85F718D-2901-42FB-B3E6-E22708C9C8B7}_1755592083555.png b/attached_assets/{D85F718D-2901-42FB-B3E6-E22708C9C8B7}_1755592083555.png deleted file mode 100644 index e8369d3..0000000 Binary files a/attached_assets/{D85F718D-2901-42FB-B3E6-E22708C9C8B7}_1755592083555.png and /dev/null differ diff --git a/attached_assets/{DB0B7998-27E7-4EBA-BBA5-4AB2680D9F3F}_1762257806086.png b/attached_assets/{DB0B7998-27E7-4EBA-BBA5-4AB2680D9F3F}_1762257806086.png deleted file mode 100644 index b727ad7..0000000 Binary files a/attached_assets/{DB0B7998-27E7-4EBA-BBA5-4AB2680D9F3F}_1762257806086.png and /dev/null differ diff --git a/attached_assets/{DEB338F1-2260-4E99-B5E3-8903682D9525}_1756798302271.png b/attached_assets/{DEB338F1-2260-4E99-B5E3-8903682D9525}_1756798302271.png deleted file mode 100644 index 5bf6e7c..0000000 Binary files a/attached_assets/{DEB338F1-2260-4E99-B5E3-8903682D9525}_1756798302271.png and /dev/null differ diff --git a/attached_assets/{E06132F4-6C50-43B0-9D78-292B3BE069A9}_1756798691204.png b/attached_assets/{E06132F4-6C50-43B0-9D78-292B3BE069A9}_1756798691204.png deleted file mode 100644 index bee65ac..0000000 Binary files a/attached_assets/{E06132F4-6C50-43B0-9D78-292B3BE069A9}_1756798691204.png and /dev/null differ diff --git a/attached_assets/{E60193F7-05AE-4111-B2C5-FE791C55B1AD}_1755590665874.png b/attached_assets/{E60193F7-05AE-4111-B2C5-FE791C55B1AD}_1755590665874.png deleted file mode 100644 index ee9a0dc..0000000 Binary files a/attached_assets/{E60193F7-05AE-4111-B2C5-FE791C55B1AD}_1755590665874.png and /dev/null differ diff --git a/attached_assets/{E841CD9A-C6E4-4C7A-A17D-CA1CF9DBA375}_1756904852244.png b/attached_assets/{E841CD9A-C6E4-4C7A-A17D-CA1CF9DBA375}_1756904852244.png deleted file mode 100644 index 501edd4..0000000 Binary files a/attached_assets/{E841CD9A-C6E4-4C7A-A17D-CA1CF9DBA375}_1756904852244.png and /dev/null differ diff --git a/attached_assets/{ECA1F248-4AF9-484F-A894-C94961668B66}_1755772868646.png b/attached_assets/{ECA1F248-4AF9-484F-A894-C94961668B66}_1755772868646.png deleted file mode 100644 index 02a6e60..0000000 Binary files a/attached_assets/{ECA1F248-4AF9-484F-A894-C94961668B66}_1755772868646.png and /dev/null differ diff --git a/attached_assets/{EE654853-B061-44D5-B2E9-8448DE342BFF}_1757343513626.png b/attached_assets/{EE654853-B061-44D5-B2E9-8448DE342BFF}_1757343513626.png deleted file mode 100644 index 4476958..0000000 Binary files a/attached_assets/{EE654853-B061-44D5-B2E9-8448DE342BFF}_1757343513626.png and /dev/null differ diff --git a/attached_assets/{F2699204-E981-41A0-9592-ED1339662D4C}_1755585414581.png b/attached_assets/{F2699204-E981-41A0-9592-ED1339662D4C}_1755585414581.png deleted file mode 100644 index a8c1119..0000000 Binary files a/attached_assets/{F2699204-E981-41A0-9592-ED1339662D4C}_1755585414581.png and /dev/null differ diff --git a/attached_assets/{F401BEBE-0430-498F-876F-2241335D8127}_1755087095710.png b/attached_assets/{F401BEBE-0430-498F-876F-2241335D8127}_1755087095710.png deleted file mode 100644 index c386301..0000000 Binary files a/attached_assets/{F401BEBE-0430-498F-876F-2241335D8127}_1755087095710.png and /dev/null differ diff --git a/attached_assets/{F4105BB9-9643-4E02-8863-0D55E5C02439}_1757340393932.png b/attached_assets/{F4105BB9-9643-4E02-8863-0D55E5C02439}_1757340393932.png deleted file mode 100644 index ea320bc..0000000 Binary files a/attached_assets/{F4105BB9-9643-4E02-8863-0D55E5C02439}_1757340393932.png and /dev/null differ diff --git a/attached_assets/{F4365999-09B8-4A1D-9AC3-FCC7829EA103}_1755089267252.png b/attached_assets/{F4365999-09B8-4A1D-9AC3-FCC7829EA103}_1755089267252.png deleted file mode 100644 index ae9719c..0000000 Binary files a/attached_assets/{F4365999-09B8-4A1D-9AC3-FCC7829EA103}_1755089267252.png and /dev/null differ diff --git a/attached_assets/{F856D9DD-5EA8-4B46-B668-7E568CF278C4}_1755092650737.png b/attached_assets/{F856D9DD-5EA8-4B46-B668-7E568CF278C4}_1755092650737.png deleted file mode 100644 index 9673b31..0000000 Binary files a/attached_assets/{F856D9DD-5EA8-4B46-B668-7E568CF278C4}_1755092650737.png and /dev/null differ diff --git a/attached_assets/{FB17DA62-CEC3-42D0-968D-5A320AC04471}_1755088564042.png b/attached_assets/{FB17DA62-CEC3-42D0-968D-5A320AC04471}_1755088564042.png deleted file mode 100644 index e84b22d..0000000 Binary files a/attached_assets/{FB17DA62-CEC3-42D0-968D-5A320AC04471}_1755088564042.png and /dev/null differ diff --git a/attached_assets/{FBB1645E-85AB-4676-B0E3-314DFB0355D8}_1755171691871.png b/attached_assets/{FBB1645E-85AB-4676-B0E3-314DFB0355D8}_1755171691871.png deleted file mode 100644 index 724f0b4..0000000 Binary files a/attached_assets/{FBB1645E-85AB-4676-B0E3-314DFB0355D8}_1755171691871.png and /dev/null differ diff --git a/attached_assets/{FC2FCADC-B460-4115-9D5D-B1F8CB9FBDD0}_1757415751955.png b/attached_assets/{FC2FCADC-B460-4115-9D5D-B1F8CB9FBDD0}_1757415751955.png deleted file mode 100644 index e838b0c..0000000 Binary files a/attached_assets/{FC2FCADC-B460-4115-9D5D-B1F8CB9FBDD0}_1757415751955.png and /dev/null differ diff --git a/deployment_guide.md b/deployment_guide.md deleted file mode 100644 index 418d8f3..0000000 --- a/deployment_guide.md +++ /dev/null @@ -1,85 +0,0 @@ -# 🔧 GUIDE DE DÉPLOIEMENT URGENT - Serveur de Production - -## 🚨 PROBLÈME IDENTIFIÉ -Votre serveur de production utilise encore l'ancien code avec les erreurs TypeScript, pas le code corrigé. - -## 📋 ÉTAPES DE RÉSOLUTION - -### 1. VÉRIFIEZ LES LOGS DU SERVEUR -```bash -# Option 1: Si vous utilisez PM2 -pm2 logs your_app_name - -# Option 2: Si vous utilisez systemctl -journalctl -u your_service_name -f - -# Option 3: Si vous utilisez Docker -docker logs your_container_name -``` - -### 2. IDENTIFIEZ L'ERREUR EXACTE -Cherchez dans les logs des erreurs comme : -- `No overload matches this call` -- `AuthRequest` -- `requireModulePermission` - -### 3. DÉPLOYEZ LE CODE CORRIGÉ - -**Option A - Git (Recommandé)** -```bash -cd /chemin/vers/votre/application -git pull origin main -# ou -git pull origin master -``` - -**Option B - Copie manuelle** -1. Copiez le fichier `server/routes.ts` depuis ce projet Replit -2. Remplacez-le sur votre serveur de production - -### 4. VÉRIFIEZ LE CODE DÉPLOYÉ -Dans votre fichier `server/routes.ts` en production, vous devez avoir : - -```javascript -// ✅ CORRECT - Nouveau code -app.get('/api/avoirs', isAuthenticated, async (req: any, res) => { - -// ❌ INCORRECT - Ancien code (cause l'erreur) -app.get('/api/avoirs', requireModulePermission('avoir', 'view'), async (req: AuthRequest, res) => { -``` - -### 5. REDÉMARREZ LE SERVEUR -```bash -# Option 1: PM2 -pm2 restart your_app_name - -# Option 2: systemctl -systemctl restart your_service_name - -# Option 3: Docker -docker restart your_container_name - -# Option 4: Service classique -sudo service your_service restart -``` - -### 6. VÉRIFIEZ QUE ÇA MARCHE -1. Rechargez votre page web -2. L'erreur générale devrait disparaître -3. Testez l'accès aux autres modules -4. Testez la création d'un avoir - -## 🎯 DIAGNOSTIC RAPIDE - -Si vous n'arrivez pas à identifier le problème : - -1. **Envoyez-moi les logs d'erreur exacts** -2. **Confirmez que le code a été déployé** -3. **Vérifiez que le serveur a redémarré** - -## 🚀 APRÈS RÉSOLUTION - -Une fois que l'application fonctionne de nouveau : -1. Testez la création d'un avoir -2. Si ça ne marche pas, le problème sera alors dans la base de données -3. Mais d'abord, résolvez le problème de déploiement ! \ No newline at end of file