mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-21 05:58:23 +02:00
Automate order delivery status updates when deliveries are confirmed
Implement automatic synchronization to update order status to "delivered" when associated deliveries are marked as "delivered" or validated. 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/KuIk8gU
This commit is contained in:
1 parent
e626976f38
commit
7f6c27f9f0
2 files changed
+260
No files matched your search
@@ -0,0 +1,119 @@
|
|||||||
|
# Déploiement de la Synchronisation Automatique - Production
|
||||||
|
|
||||||
|
## Résumé des Modifications
|
||||||
|
|
||||||
|
Le système de synchronisation automatique permet aux commandes de passer automatiquement en statut "delivered" quand leurs livraisons sont validées ou mises à jour vers "delivered".
|
||||||
|
|
||||||
|
## Fichiers à Modifier en Production
|
||||||
|
|
||||||
|
### 1. server/routes.ts
|
||||||
|
|
||||||
|
#### Modification 1 : Route PUT `/api/deliveries/:id`
|
||||||
|
**Localiser la section (vers ligne 691-693) :**
|
||||||
|
```typescript
|
||||||
|
const data = insertDeliverySchema.partial().parse(req.body);
|
||||||
|
const updatedDelivery = await storage.updateDelivery(id, data);
|
||||||
|
res.json(updatedDelivery);
|
||||||
|
```
|
||||||
|
|
||||||
|
**Remplacer par :**
|
||||||
|
```typescript
|
||||||
|
const data = insertDeliverySchema.partial().parse(req.body);
|
||||||
|
const updatedDelivery = await storage.updateDelivery(id, data);
|
||||||
|
|
||||||
|
// SYNCHRONISATION AUTOMATIQUE : Si livraison devient "delivered", marquer la commande associée comme "delivered"
|
||||||
|
if (data.status === 'delivered' && updatedDelivery.orderId) {
|
||||||
|
try {
|
||||||
|
console.log(`🔄 Auto-sync: Delivery #${id} marked as delivered, updating order #${updatedDelivery.orderId}`);
|
||||||
|
await storage.updateOrder(updatedDelivery.orderId, { status: 'delivered' });
|
||||||
|
console.log(`✅ Auto-sync: Order #${updatedDelivery.orderId} automatically marked as delivered`);
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`❌ Auto-sync failed for order #${updatedDelivery.orderId}:`, error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
res.json(updatedDelivery);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Modification 2 : Route POST `/api/deliveries/:id/validate`
|
||||||
|
**Localiser la section (vers ligne 830-831) :**
|
||||||
|
```typescript
|
||||||
|
await storage.validateDelivery(id, blData);
|
||||||
|
res.json({ message: "Delivery validated successfully" });
|
||||||
|
```
|
||||||
|
|
||||||
|
**Remplacer par :**
|
||||||
|
```typescript
|
||||||
|
await storage.validateDelivery(id, blData);
|
||||||
|
|
||||||
|
// SYNCHRONISATION AUTOMATIQUE : Quand validation, marquer la commande associée comme "delivered"
|
||||||
|
if (delivery.orderId) {
|
||||||
|
try {
|
||||||
|
console.log(`🔄 Auto-sync: Delivery #${id} validated, updating order #${delivery.orderId} to delivered`);
|
||||||
|
await storage.updateOrder(delivery.orderId, { status: 'delivered' });
|
||||||
|
console.log(`✅ Auto-sync: Order #${delivery.orderId} automatically marked as delivered`);
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`❌ Auto-sync failed for order #${delivery.orderId}:`, error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
res.json({ message: "Delivery validated successfully" });
|
||||||
|
```
|
||||||
|
|
||||||
|
## Étapes de Déploiement
|
||||||
|
|
||||||
|
### 1. Sauvegarde
|
||||||
|
```bash
|
||||||
|
cp server/routes.ts server/routes.ts.backup
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Application des Modifications
|
||||||
|
Éditez le fichier `server/routes.ts` et appliquez les deux modifications ci-dessus.
|
||||||
|
|
||||||
|
### 3. Redémarrage du Serveur
|
||||||
|
```bash
|
||||||
|
# Méthode selon votre setup de production
|
||||||
|
pm2 restart your-app-name
|
||||||
|
# ou
|
||||||
|
systemctl restart your-node-service
|
||||||
|
# ou
|
||||||
|
docker-compose restart
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Vérification des Logs
|
||||||
|
Surveillez les logs pour voir les messages de synchronisation automatique :
|
||||||
|
```bash
|
||||||
|
tail -f /path/to/your/logs
|
||||||
|
```
|
||||||
|
|
||||||
|
## Test de Fonctionnement
|
||||||
|
|
||||||
|
1. **Test Automatique** : Validez une livraison via l'interface - la commande associée devrait automatiquement passer en "delivered"
|
||||||
|
|
||||||
|
2. **Correction des Anciennes Commandes** : Utilisez le bouton "Sync Status" dans le calendrier pour corriger CMD-55 et autres commandes similaires
|
||||||
|
|
||||||
|
## Logs Attendus
|
||||||
|
|
||||||
|
Quand une livraison est validée, vous devriez voir :
|
||||||
|
```
|
||||||
|
🔄 Auto-sync: Delivery #123 validated, updating order #55 to delivered
|
||||||
|
✅ Auto-sync: Order #55 automatically marked as delivered
|
||||||
|
```
|
||||||
|
|
||||||
|
## Résolution de CMD-55
|
||||||
|
|
||||||
|
Une fois la synchronisation automatique déployée :
|
||||||
|
1. Cliquez sur "Sync Status" dans le calendrier
|
||||||
|
2. CMD-55 sera automatiquement corrigée car sa livraison est déjà validée
|
||||||
|
3. Elle apparaîtra en gris dans le calendrier
|
||||||
|
|
||||||
|
## Rollback en Cas de Problème
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp server/routes.ts.backup server/routes.ts
|
||||||
|
# Redémarrer le serveur
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Note** : La synchronisation automatique ne s'applique qu'aux nouvelles actions. Pour corriger les commandes existantes comme CMD-55, utilisez le bouton "Sync Status".
|
||||||
@@ -0,0 +1,141 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Script de déploiement pour la synchronisation automatique ordre-livraison
|
||||||
|
* À exécuter sur le serveur de production pour appliquer les modifications
|
||||||
|
*/
|
||||||
|
|
||||||
|
import fs from 'fs/promises';
|
||||||
|
import path from 'path';
|
||||||
|
|
||||||
|
console.log('🚀 Déploiement de la synchronisation automatique...');
|
||||||
|
|
||||||
|
const PRODUCTION_ROUTES_PATH = '/path/to/production/server/routes.ts'; // À adapter selon votre structure
|
||||||
|
|
||||||
|
// Modifications à appliquer au fichier routes.ts en production
|
||||||
|
const autoSyncModifications = {
|
||||||
|
// 1. Modification de la route PUT /api/deliveries/:id pour ajouter la sync auto
|
||||||
|
updateDeliveryRoute: {
|
||||||
|
search: ` const data = insertDeliverySchema.partial().parse(req.body);
|
||||||
|
const updatedDelivery = await storage.updateDelivery(id, data);
|
||||||
|
res.json(updatedDelivery);`,
|
||||||
|
replace: ` const data = insertDeliverySchema.partial().parse(req.body);
|
||||||
|
const updatedDelivery = await storage.updateDelivery(id, data);
|
||||||
|
|
||||||
|
// SYNCHRONISATION AUTOMATIQUE : Si livraison devient "delivered", marquer la commande associée comme "delivered"
|
||||||
|
if (data.status === 'delivered' && updatedDelivery.orderId) {
|
||||||
|
try {
|
||||||
|
console.log(\`🔄 Auto-sync: Delivery #\${id} marked as delivered, updating order #\${updatedDelivery.orderId}\`);
|
||||||
|
await storage.updateOrder(updatedDelivery.orderId, { status: 'delivered' });
|
||||||
|
console.log(\`✅ Auto-sync: Order #\${updatedDelivery.orderId} automatically marked as delivered\`);
|
||||||
|
} catch (error) {
|
||||||
|
console.error(\`❌ Auto-sync failed for order #\${updatedDelivery.orderId}:\`, error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
res.json(updatedDelivery);`
|
||||||
|
},
|
||||||
|
|
||||||
|
// 2. Modification de la route POST /api/deliveries/:id/validate pour ajouter la sync auto
|
||||||
|
validateDeliveryRoute: {
|
||||||
|
search: ` await storage.validateDelivery(id, blData);
|
||||||
|
res.json({ message: "Delivery validated successfully" });`,
|
||||||
|
replace: ` await storage.validateDelivery(id, blData);
|
||||||
|
|
||||||
|
// SYNCHRONISATION AUTOMATIQUE : Quand validation, marquer la commande associée comme "delivered"
|
||||||
|
if (delivery.orderId) {
|
||||||
|
try {
|
||||||
|
console.log(\`🔄 Auto-sync: Delivery #\${id} validated, updating order #\${delivery.orderId} to delivered\`);
|
||||||
|
await storage.updateOrder(delivery.orderId, { status: 'delivered' });
|
||||||
|
console.log(\`✅ Auto-sync: Order #\${delivery.orderId} automatically marked as delivered\`);
|
||||||
|
} catch (error) {
|
||||||
|
console.error(\`❌ Auto-sync failed for order #\${delivery.orderId}:\`, error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
res.json({ message: "Delivery validated successfully" });`
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Instructions de déploiement
|
||||||
|
console.log(`
|
||||||
|
📋 INSTRUCTIONS DE DÉPLOIEMENT PRODUCTION :
|
||||||
|
|
||||||
|
1. 🔍 Localisez le fichier server/routes.ts sur votre serveur de production
|
||||||
|
|
||||||
|
2. 🔧 Ajoutez la synchronisation automatique dans la route PUT /api/deliveries/:id :
|
||||||
|
|
||||||
|
Remplacez :
|
||||||
|
${autoSyncModifications.updateDeliveryRoute.search}
|
||||||
|
|
||||||
|
Par :
|
||||||
|
${autoSyncModifications.updateDeliveryRoute.replace}
|
||||||
|
|
||||||
|
3. 🔧 Ajoutez la synchronisation automatique dans la route POST /api/deliveries/:id/validate :
|
||||||
|
|
||||||
|
Remplacez :
|
||||||
|
${autoSyncModifications.validateDeliveryRoute.search}
|
||||||
|
|
||||||
|
Par :
|
||||||
|
${autoSyncModifications.validateDeliveryRoute.replace}
|
||||||
|
|
||||||
|
4. 🔄 Redémarrez votre serveur Node.js en production
|
||||||
|
|
||||||
|
5. ✅ Testez en validant une livraison - la commande associée devrait automatiquement passer en "delivered"
|
||||||
|
|
||||||
|
6. 🎯 Pour corriger CMD-55 spécifiquement, utilisez le bouton "Sync Status" dans le calendrier
|
||||||
|
|
||||||
|
RÉSULTAT ATTENDU :
|
||||||
|
- Toutes les futures validations de livraisons synchroniseront automatiquement les commandes
|
||||||
|
- CMD-55 sera corrigée lors de la prochaine utilisation du bouton "Sync Status"
|
||||||
|
- Le calendrier affichera correctement les commandes livrées en gris
|
||||||
|
`);
|
||||||
|
|
||||||
|
// Créer aussi un patch file pour faciliter l'application
|
||||||
|
const patchContent = `
|
||||||
|
--- a/server/routes.ts
|
||||||
|
+++ b/server/routes.ts
|
||||||
|
@@ -691,6 +691,15 @@
|
||||||
|
const data = insertDeliverySchema.partial().parse(req.body);
|
||||||
|
const updatedDelivery = await storage.updateDelivery(id, data);
|
||||||
|
+
|
||||||
|
+ // SYNCHRONISATION AUTOMATIQUE : Si livraison devient "delivered", marquer la commande associée comme "delivered"
|
||||||
|
+ if (data.status === 'delivered' && updatedDelivery.orderId) {
|
||||||
|
+ try {
|
||||||
|
+ console.log(\`🔄 Auto-sync: Delivery #\${id} marked as delivered, updating order #\${updatedDelivery.orderId}\`);
|
||||||
|
+ await storage.updateOrder(updatedDelivery.orderId, { status: 'delivered' });
|
||||||
|
+ console.log(\`✅ Auto-sync: Order #\${updatedDelivery.orderId} automatically marked as delivered\`);
|
||||||
|
+ } catch (error) {
|
||||||
|
+ console.error(\`❌ Auto-sync failed for order #\${updatedDelivery.orderId}:\`, error);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
res.json(updatedDelivery);
|
||||||
|
} catch (error) {
|
||||||
|
@@ -830,6 +839,15 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
await storage.validateDelivery(id, blData);
|
||||||
|
+
|
||||||
|
+ // SYNCHRONISATION AUTOMATIQUE : Quand validation, marquer la commande associée comme "delivered"
|
||||||
|
+ if (delivery.orderId) {
|
||||||
|
+ try {
|
||||||
|
+ console.log(\`🔄 Auto-sync: Delivery #\${id} validated, updating order #\${delivery.orderId} to delivered\`);
|
||||||
|
+ await storage.updateOrder(delivery.orderId, { status: 'delivered' });
|
||||||
|
+ console.log(\`✅ Auto-sync: Order #\${delivery.orderId} automatically marked as delivered\`);
|
||||||
|
+ } catch (error) {
|
||||||
|
+ console.error(\`❌ Auto-sync failed for order #\${delivery.orderId}:\`, error);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
res.json({ message: "Delivery validated successfully" });
|
||||||
|
} catch (error) {
|
||||||
|
`;
|
||||||
|
|
||||||
|
console.log('💾 Sauvegarde du patch dans auto-sync.patch...');
|
||||||
|
await fs.writeFile('auto-sync.patch', patchContent);
|
||||||
|
|
||||||
|
console.log(`
|
||||||
|
🔧 Alternative : Vous pouvez aussi appliquer le patch automatiquement avec :
|
||||||
|
cd /path/to/production && patch -p1 < auto-sync.patch
|
||||||
|
|
||||||
|
✅ Script de déploiement créé avec succès !
|
||||||
|
`);
|
||||||
Reference in new issue
Block a user