mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-15 19:29:54 +02:00
Add temporary debug logs and visible indicators to the CalendarGrid component to diagnose why the order validation button is not appearing for admins, and also include a direct SQL fix for CMD-55 status. 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/3ec1Xks
197 lines
5.8 KiB
Markdown
197 lines
5.8 KiB
Markdown
# URGENT - Correction CMD-55 et Déploiement Bouton Validation
|
|
|
|
## Problèmes Identifiés en Production
|
|
|
|
### 1. Erreur de Modification de Commande
|
|
- **Symptôme** : Toast rouge "Impossible de modifier la commande"
|
|
- **Cause Probable** : Problème de validation ou de permission sur le serveur
|
|
- **Impact** : Les utilisateurs ne peuvent pas modifier les commandes existantes
|
|
|
|
### 2. Bouton de Validation Manquant
|
|
- **Symptôme** : Pas de bouton "Valider Commande" visible sur les cartes
|
|
- **Cause** : Modifications récentes non déployées sur le serveur de production
|
|
- **Impact** : Impossible de valider CMD-55 directement depuis le calendrier
|
|
|
|
## Solutions Immédiates
|
|
|
|
### A. Pour le Problème CMD-55 - Solution SQL Directe
|
|
|
|
Si vous avez accès à votre base de données PostgreSQL en production, exécutez cette commande SQL immédiatement :
|
|
|
|
```sql
|
|
UPDATE orders
|
|
SET status = 'delivered', updated_at = NOW()
|
|
WHERE id = 55;
|
|
```
|
|
|
|
Cette commande marquera directement CMD-55 comme "delivered" dans la base de données.
|
|
|
|
### B. Déploiement du Bouton de Validation
|
|
|
|
#### Fichiers à Modifier sur Votre Serveur de Production :
|
|
|
|
1. **`client/src/components/CalendarGrid.tsx`** - Remplacer tout le contenu par :
|
|
```typescript
|
|
import { format, startOfMonth, endOfMonth, eachDayOfInterval, isSameDay, isSameMonth, isToday } from "date-fns";
|
|
import { fr } from "date-fns/locale";
|
|
import { safeDate } from "@/lib/dateUtils";
|
|
import { Plus, Check, CheckCircle } from "lucide-react";
|
|
import { Button } from "@/components/ui/button";
|
|
import { useToast } from "@/hooks/use-toast";
|
|
import type { OrderWithRelations, DeliveryWithRelations } from "@shared/schema";
|
|
|
|
interface CalendarGridProps {
|
|
currentDate: Date;
|
|
orders: OrderWithRelations[];
|
|
deliveries: DeliveryWithRelations[];
|
|
onDateClick: (date: Date) => void;
|
|
onItemClick: (item: any, type: 'order' | 'delivery') => void;
|
|
user?: { role: string } | null;
|
|
onOrderValidated?: () => void;
|
|
}
|
|
|
|
export default function CalendarGrid({
|
|
currentDate,
|
|
orders,
|
|
deliveries,
|
|
onDateClick,
|
|
onItemClick,
|
|
user,
|
|
onOrderValidated,
|
|
}: CalendarGridProps) {
|
|
const { toast } = useToast();
|
|
|
|
// Fonction pour valider une commande
|
|
const handleValidateOrder = async (orderId: number, event: React.MouseEvent) => {
|
|
event.stopPropagation();
|
|
|
|
try {
|
|
const response = await fetch(`/api/orders/${orderId}`, {
|
|
method: 'PUT',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
credentials: 'include',
|
|
body: JSON.stringify({ status: 'delivered' })
|
|
});
|
|
|
|
if (!response.ok) {
|
|
throw new Error(`Erreur ${response.status}: ${await response.text()}`);
|
|
}
|
|
|
|
toast({
|
|
title: "Commande validée",
|
|
description: `La commande CMD-${orderId} a été marquée comme livrée.`,
|
|
});
|
|
|
|
// Rafraîchir les données
|
|
if (onOrderValidated) {
|
|
onOrderValidated();
|
|
}
|
|
} catch (error) {
|
|
console.error('Erreur lors de la validation:', error);
|
|
toast({
|
|
title: "Erreur",
|
|
description: "Impossible de valider la commande.",
|
|
variant: "destructive"
|
|
});
|
|
}
|
|
};
|
|
|
|
// ... (rest of your existing CalendarGrid code)
|
|
// IMPORTANT: Dans la section qui affiche les cartes de commandes,
|
|
// ajoutez le bouton de validation avant les autres icônes :
|
|
|
|
{/* Bouton de validation pour les admins si la commande n'est pas delivered */}
|
|
{user?.role === 'admin' && order.status !== 'delivered' && (
|
|
<Button
|
|
size="sm"
|
|
variant="ghost"
|
|
className="h-5 w-5 p-0 hover:bg-white/20 opacity-0 group-hover/order:opacity-100 transition-opacity mr-1"
|
|
onClick={(e) => handleValidateOrder(order.id, e)}
|
|
title="Valider la commande"
|
|
>
|
|
<CheckCircle className="w-3 h-3 text-green-200" />
|
|
</Button>
|
|
)}
|
|
```
|
|
|
|
2. **`client/src/pages/Calendar.tsx`** - Modifier l'appel à CalendarGrid :
|
|
```typescript
|
|
<CalendarGrid
|
|
currentDate={currentDate}
|
|
orders={orders}
|
|
deliveries={deliveries}
|
|
onDateClick={handleDateClick}
|
|
onItemClick={handleItemClick}
|
|
user={user}
|
|
onOrderValidated={() => {
|
|
queryClient.invalidateQueries({ queryKey: ['/api/orders'] });
|
|
queryClient.invalidateQueries({ queryKey: ['/api/deliveries'] });
|
|
}}
|
|
/>
|
|
```
|
|
|
|
#### Commandes de Déploiement :
|
|
|
|
```bash
|
|
# 1. Sauvegarde
|
|
cp -r client/src client/src.backup
|
|
|
|
# 2. Appliquer les modifications aux fichiers mentionnés ci-dessus
|
|
|
|
# 3. Reconstruction
|
|
npm run build
|
|
|
|
# 4. Redémarrage
|
|
pm2 restart your-app-name
|
|
# OU
|
|
sudo systemctl restart your-service
|
|
# OU
|
|
docker-compose restart
|
|
```
|
|
|
|
### C. Correction de l'Erreur de Modification
|
|
|
|
Si l'erreur de modification persiste, ajoutez ces logs de debug dans votre `server/routes.ts` :
|
|
|
|
```javascript
|
|
app.put('/api/orders/:id', isAuthenticated, async (req: any, res) => {
|
|
try {
|
|
console.log('🔧 [DEBUG] Order update request:', {
|
|
orderId: req.params.id,
|
|
body: req.body,
|
|
userId: req.user?.id || req.user?.claims?.sub
|
|
});
|
|
|
|
// ... rest of existing code
|
|
|
|
} catch (error) {
|
|
console.error("❌ [ERROR] Order update failed:", {
|
|
error: error.message,
|
|
stack: error.stack,
|
|
orderId: req.params.id,
|
|
body: req.body
|
|
});
|
|
res.status(500).json({ message: "Failed to update order" });
|
|
}
|
|
});
|
|
```
|
|
|
|
## Test après Déploiement
|
|
|
|
1. **Connectez-vous** avec un compte admin
|
|
2. **Recherchez CMD-55** dans le calendrier
|
|
3. **Passez la souris** sur la carte CMD-55
|
|
4. **Cliquez** sur l'icône de cercle avec coche qui apparaît
|
|
5. **Vérifiez** que CMD-55 passe en gris (delivered)
|
|
|
|
## Rollback si Problème
|
|
|
|
```bash
|
|
cp -r client/src.backup client/src
|
|
npm run build
|
|
pm2 restart your-app-name
|
|
```
|
|
|
|
---
|
|
|
|
**Priorité** : Appliquer la solution SQL directe (section A) immédiatement pour résoudre CMD-55, puis déployer le bouton de validation (section B) pour éviter les futurs problèmes similaires. |