mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-11 17:27:31 +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
5.8 KiB
5.8 KiB
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 :
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 :
client/src/components/CalendarGrid.tsx- Remplacer tout le contenu par :
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>
)}
client/src/pages/Calendar.tsx- Modifier l'appel à CalendarGrid :
<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 :
# 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 :
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
- Connectez-vous avec un compte admin
- Recherchez CMD-55 dans le calendrier
- Passez la souris sur la carte CMD-55
- Cliquez sur l'icône de cercle avec coche qui apparaît
- Vérifiez que CMD-55 passe en gris (delivered)
Rollback si Problème
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.