mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-11 17:27:31 +02:00
Fixes an issue where orders linked to delivered deliveries were not displaying the correct delivery date or status in the calendar. This includes updating the OrderDetailModal to show the correct dates, automatically updating order statuses when deliveries are marked as delivered, and providing a SQL script to correct existing data inconsistencies. Replit-Commit-Author: Agent Replit-Commit-Session-Id: a8a78c07-e900-425c-a577-5b4c5894379d Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/a8a78c07-e900-425c-a577-5b4c5894379d/0tRkXvo
128 lines
5.0 KiB
Markdown
128 lines
5.0 KiB
Markdown
# Guide de Correction Production - LogiFlow
|
|
|
|
## Problèmes Résolus ✅
|
|
|
|
### 1. Changement de Mot de Passe Administrateur
|
|
**Problème** : ERR_MODULE_NOT_FOUND pour localAuth.production.js
|
|
**Solution** : Implémentation d'une fonction `hashPasswordSimple` intégrée dans routes.ts qui fonctionne dans tous les environnements.
|
|
|
|
### 2. Attribution des Groupes aux Utilisateurs
|
|
**Problème** : Colonne "created_at" manquante dans la table user_groups en production
|
|
**Solution** : Gestion d'erreur dans `assignUserToGroup` avec fallback automatique.
|
|
|
|
## Solutions Disponibles
|
|
|
|
### Solution A : Correction Automatique (Recommandée) ✅
|
|
Le code a été modifié pour détecter automatiquement si la colonne `created_at` existe :
|
|
- Essaie d'insérer avec le schéma complet
|
|
- En cas d'erreur, insère sans la colonne `created_at`
|
|
- Aucune intervention manuelle requise
|
|
|
|
### Solution B : Mise à Jour de Base de Données (Optionnelle)
|
|
Si vous souhaitez synchroniser complètement votre base de données production avec le schéma :
|
|
|
|
```sql
|
|
-- Exécuter sur votre serveur de production
|
|
ALTER TABLE user_groups
|
|
ADD COLUMN IF NOT EXISTS created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
|
|
```
|
|
|
|
## Test des Corrections
|
|
|
|
1. **Changement de Mot de Passe** : Testez via l'interface utilisateur
|
|
2. **Attribution de Groupes** : Testez l'assignment d'utilisateurs aux groupes
|
|
|
|
## Débogage Production
|
|
|
|
### Problème "Aucun utilisateur trouvé"
|
|
Si l'interface affiche "Aucun utilisateur trouvé" :
|
|
|
|
1. **Vérification Base de Données** : Utilisez `production-users-debug.sql`
|
|
```bash
|
|
psql $DATABASE_URL -f production-users-debug.sql
|
|
```
|
|
|
|
2. **Vérification API** : Testez l'endpoint directement
|
|
```bash
|
|
curl -H "Cookie: [votre-cookie-session]" https://votre-domaine.com/api/users
|
|
```
|
|
|
|
### Script de Diagnostic SQL
|
|
- `debug-usergroups-production.sql` : Problèmes d'association utilisateur-groupe
|
|
- `production-users-debug.sql` : Problème de récupération des utilisateurs
|
|
|
|
### Problème Création d'Utilisateur
|
|
|
|
#### Erreur "duplicate key value violates unique constraint users_email_key"
|
|
Cette erreur survient lors de la **création** ou **édition** d'utilisateur quand plusieurs utilisateurs ont un email vide (`""`) car PostgreSQL traite les chaînes vides comme des valeurs uniques.
|
|
|
|
**Symptômes** :
|
|
- Création d'utilisateur échoue avec erreur `Key (email)=() already exists`
|
|
- Édition d'utilisateur échoue avec la même erreur lors de la sauvegarde
|
|
|
|
**Solution** :
|
|
1. Exécutez le script de correction :
|
|
```bash
|
|
psql $DATABASE_URL -f fix-duplicate-empty-email.sql
|
|
```
|
|
|
|
2. Redéployez l'application (le code a été corrigé pour utiliser `NULL` au lieu de `""` dans les routes de création ET d'édition)
|
|
|
|
### Problème Synchronisation Commandes/Livraisons dans le Calendrier
|
|
|
|
#### Symptômes observés :
|
|
- Les livraisons marquées "Livré" affichent "Date non disponible"
|
|
- Les commandes liées à des livraisons livrées ne passent pas en statut "delivered"
|
|
- Problème d'affichage des dates dans le modal de détails de commande
|
|
|
|
#### Corrections apportées :
|
|
1. **Affichage des dates corrigé** : Le modal affiche maintenant la date de livraison réelle (`deliveredDate`) pour les livraisons livrées
|
|
2. **Synchronisation automatique des statuts** : Les commandes sont automatiquement marquées "delivered" quand leurs livraisons associées sont livrées
|
|
3. **Script de correction des données** : `fix-delivery-order-sync.sql` pour corriger les données existantes
|
|
|
|
**Solution complète** :
|
|
1. Exécutez le script de synchronisation :
|
|
```bash
|
|
psql $DATABASE_URL -f fix-delivery-order-sync.sql
|
|
```
|
|
|
|
2. Redéployez l'application avec les corrections
|
|
|
|
#### Tests de Création
|
|
1. **Test Manuel** : Utilisez `test-create-user-production.js`
|
|
```bash
|
|
PRODUCTION_HOST=votre-domaine.com SESSION_COOKIE="connect.sid=..." node test-create-user-production.js
|
|
```
|
|
|
|
2. **Vérification Logs** : Cherchez ces messages d'erreur :
|
|
- `❌ Password hashing failed`
|
|
- `❌ Storage createUser error`
|
|
- `duplicate key value violates unique constraint`
|
|
|
|
### Logs de Débogage Disponibles
|
|
**Récupération Utilisateurs :**
|
|
- `🔍 GET /api/users - Fetching users with simplified approach`
|
|
- `📊 Found X base users`
|
|
- `❌ Error getting groups for user [username]:`
|
|
- `🔐 API /api/users - Returning: {length: X, totalGroups: Y}`
|
|
|
|
**Création Utilisateur :**
|
|
- `🔍 POST /api/users - Creating new user`
|
|
- `📥 Request body: [données]`
|
|
- `🔒 Hashing password...`
|
|
- `🔍 Storage createUser called with: [username]`
|
|
- `✅ Storage createUser successful: [username]`
|
|
|
|
## Déploiement
|
|
|
|
1. Redéployez votre application avec les dernières modifications
|
|
2. Testez les fonctionnalités utilisateur en production
|
|
3. Les logs montreront si le mode fallback est utilisé pour les groupes
|
|
|
|
## Logs de Débogage
|
|
|
|
En production, vous verrez :
|
|
- `⚠️ Production mode: user_groups table missing created_at column, inserting without it` si la colonne n'existe pas
|
|
- Aucun message si la table a été mise à jour avec la colonne manquante
|
|
|
|
Ces corrections garantissent la compatibilité dans tous les environnements sans casser la fonctionnalité. |