mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-12 01:37:40 +02:00
Fix calendar errors and improve order delivery status handling
Adds TypeScript type annotations to the calendar component and refactors the order update logic to use fetch directly, improving robustness and addressing production errors. 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
58f65dc086
commit
687a1b41d4
3 files changed
+148
-13
No files matched your search
@@ -0,0 +1,130 @@
|
||||
# Correction des Erreurs 502 - Production
|
||||
|
||||
## Problème Identifié
|
||||
- Erreurs 502 (Bad Gateway) lors des appels API `/api/deliveries` et `/api/orders`
|
||||
- CMD-55 n'apparaît pas en gris dans le calendrier
|
||||
- Erreurs TypeScript dans le code du calendrier
|
||||
|
||||
## Solutions
|
||||
|
||||
### 1. Vérification du Serveur Backend
|
||||
|
||||
Vérifiez que votre serveur Node.js fonctionne :
|
||||
|
||||
```bash
|
||||
# Vérifier le processus
|
||||
ps aux | grep node
|
||||
|
||||
# Vérifier les logs du serveur
|
||||
tail -f /path/to/your/server/logs
|
||||
|
||||
# Vérifier si le port est écouté
|
||||
netstat -tlnp | grep :YOUR_PORT
|
||||
```
|
||||
|
||||
### 2. Redémarrage du Serveur
|
||||
|
||||
```bash
|
||||
# Via PM2
|
||||
pm2 restart your-app-name
|
||||
pm2 logs your-app-name
|
||||
|
||||
# Via systemctl
|
||||
sudo systemctl restart your-node-service
|
||||
sudo systemctl status your-node-service
|
||||
|
||||
# Via Docker
|
||||
docker-compose restart
|
||||
docker-compose logs -f
|
||||
```
|
||||
|
||||
### 3. Vérification de la Configuration Proxy/Nginx
|
||||
|
||||
Si vous utilisez un proxy inverse (Nginx), vérifiez la configuration :
|
||||
|
||||
```nginx
|
||||
location /api/ {
|
||||
proxy_pass http://localhost:YOUR_NODE_PORT/api/;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_cache_bypass $http_upgrade;
|
||||
proxy_read_timeout 86400;
|
||||
}
|
||||
```
|
||||
|
||||
### 4. Correction SQL Directe pour CMD-55
|
||||
|
||||
Pendant que vous résolvez les erreurs 502, corrigez CMD-55 directement :
|
||||
|
||||
```sql
|
||||
-- Connexion à votre base
|
||||
psql -h your-host -U your-user -d your-database
|
||||
|
||||
-- Correction CMD-55
|
||||
UPDATE orders
|
||||
SET status = 'delivered'
|
||||
WHERE id = 55
|
||||
AND status != 'delivered'
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM deliveries d
|
||||
WHERE d."orderId" = 55
|
||||
AND d.status = 'delivered'
|
||||
);
|
||||
|
||||
-- Vérifier le résultat
|
||||
SELECT o.id, o.status, COUNT(d.id) as deliveries,
|
||||
COUNT(CASE WHEN d.status = 'delivered' THEN 1 END) as delivered_deliveries
|
||||
FROM orders o
|
||||
LEFT JOIN deliveries d ON o.id = d."orderId"
|
||||
WHERE o.id = 55
|
||||
GROUP BY o.id, o.status;
|
||||
```
|
||||
|
||||
### 5. Test des API manuellement
|
||||
|
||||
```bash
|
||||
# Tester l'API orders
|
||||
curl -X GET "http://your-server.com/api/orders" \
|
||||
-H "Cookie: your-session-cookie"
|
||||
|
||||
# Tester l'API deliveries
|
||||
curl -X GET "http://your-server.com/api/deliveries" \
|
||||
-H "Cookie: your-session-cookie"
|
||||
```
|
||||
|
||||
## Actions Prioritaires
|
||||
|
||||
1. **Immédiat** : Exécuter la correction SQL pour CMD-55
|
||||
2. **Urgent** : Redémarrer votre serveur Node.js
|
||||
3. **Important** : Vérifier les logs pour identifier la cause des 502
|
||||
|
||||
## Diagnostic des Logs
|
||||
|
||||
Recherchez dans vos logs :
|
||||
|
||||
```bash
|
||||
# Erreurs Node.js
|
||||
grep -i "error\|crash\|exception" /path/to/logs
|
||||
|
||||
# Erreurs de base de données
|
||||
grep -i "database\|postgres\|connection" /path/to/logs
|
||||
|
||||
# Erreurs de mémoire
|
||||
grep -i "memory\|heap" /path/to/logs
|
||||
```
|
||||
|
||||
## Résultat Attendu
|
||||
|
||||
Après correction :
|
||||
- Les API `/api/orders` et `/api/deliveries` répondent sans erreur 502
|
||||
- CMD-55 apparaît en gris dans le calendrier
|
||||
- Le bouton "Sync Status" fonctionne correctement
|
||||
|
||||
---
|
||||
|
||||
**Note** : La correction SQL de CMD-55 peut être appliquée immédiatement, indépendamment de la résolution des erreurs 502.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 53 KiB |
@@ -160,8 +160,8 @@ export default function Calendar() {
|
||||
const allDeliveries = await deliveriesResponse.json();
|
||||
|
||||
// Enrichir les commandes avec leurs livraisons pour avoir les bonnes relations
|
||||
const enrichedOrders = filteredOrders.map(order => {
|
||||
const orderDeliveries = allDeliveries.filter(delivery => delivery.orderId === order.id);
|
||||
const enrichedOrders = filteredOrders.map((order: any) => {
|
||||
const orderDeliveries = allDeliveries.filter((delivery: any) => delivery.orderId === order.id);
|
||||
return {
|
||||
...order,
|
||||
deliveries: orderDeliveries
|
||||
@@ -172,18 +172,18 @@ export default function Calendar() {
|
||||
filteredOrders: filteredOrders.length,
|
||||
enrichedOrders: enrichedOrders.length,
|
||||
allDeliveries: allDeliveries.length,
|
||||
deliveredDeliveries: allDeliveries.filter(d => d.status === 'delivered').length
|
||||
deliveredDeliveries: allDeliveries.filter((d: any) => d.status === 'delivered').length
|
||||
});
|
||||
|
||||
// Chercher spécifiquement CMD-55
|
||||
const cmd55 = enrichedOrders.find(o => o.id === 55);
|
||||
const cmd55Deliveries = allDeliveries.filter(d => d.orderId === 55);
|
||||
const cmd55 = enrichedOrders.find((o: any) => o.id === 55);
|
||||
const cmd55Deliveries = allDeliveries.filter((d: any) => d.orderId === 55);
|
||||
|
||||
console.log('🎯 CMD-55 Analysis:', {
|
||||
foundInOrders: !!cmd55,
|
||||
cmd55Status: cmd55?.status || 'NOT_FOUND',
|
||||
cmd55Deliveries: cmd55Deliveries.length,
|
||||
deliveryStatuses: cmd55Deliveries.map(d => ({
|
||||
deliveryStatuses: cmd55Deliveries.map((d: any) => ({
|
||||
id: d.id,
|
||||
status: d.status,
|
||||
deliveredDate: d.deliveredDate,
|
||||
@@ -199,26 +199,31 @@ export default function Calendar() {
|
||||
console.log(`🔍 Analyzing order #CMD-${order.id}:`, {
|
||||
status: order.status,
|
||||
deliveries: order.deliveries?.length || 0,
|
||||
deliveryStatuses: order.deliveries?.map(d => ({ id: d.id, status: d.status, deliveredDate: d.deliveredDate })) || []
|
||||
deliveryStatuses: order.deliveries?.map((d: any) => ({ id: d.id, status: d.status, deliveredDate: d.deliveredDate })) || []
|
||||
});
|
||||
|
||||
if (order.deliveries && order.deliveries.length > 0) {
|
||||
const hasDeliveredDeliveries = order.deliveries.some(d => d.status === 'delivered');
|
||||
const hasDeliveredDeliveries = order.deliveries.some((d: any) => d.status === 'delivered');
|
||||
|
||||
if (hasDeliveredDeliveries && order.status !== 'delivered') {
|
||||
problematicOrders++;
|
||||
console.log(`🔍 Found problematic order: #CMD-${order.id} (status: ${order.status}) with delivered deliveries:`,
|
||||
order.deliveries.filter(d => d.status === 'delivered').map(d => `#LIV-${d.id}`)
|
||||
order.deliveries.filter((d: any) => d.status === 'delivered').map((d: any) => `#LIV-${d.id}`)
|
||||
);
|
||||
|
||||
try {
|
||||
// Corriger la commande via l'API PUT existante
|
||||
await apiRequest({
|
||||
url: `/api/orders/${order.id}`,
|
||||
// Corriger la commande via fetch direct
|
||||
const response = await fetch(`/api/orders/${order.id}`, {
|
||||
method: 'PUT',
|
||||
data: { status: 'delivered' }
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
credentials: 'include',
|
||||
body: JSON.stringify({ status: 'delivered' })
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(`HTTP ${response.status}: ${await response.text()}`);
|
||||
}
|
||||
|
||||
fixedOrders++;
|
||||
console.log(`✅ Fixed order #CMD-${order.id} status to 'delivered'`);
|
||||
} catch (error) {
|
||||
|
||||
Reference in new issue
Block a user