mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-11 17:27:31 +02:00
Merge pull request #99 from R0m1k3/1.1
Reduce production latency by conditionally logging API requests and r…
This commit is contained in:
6 files changed
+57
-26
No files matched your search
Binary file not shown.
|
After Width: | Height: | Size: 166 KiB |
@@ -13,7 +13,10 @@ export async function apiRequest(
|
||||
body?: unknown,
|
||||
headers: Record<string, string> = {}
|
||||
): Promise<any> {
|
||||
console.log("🌐 API Request:", { url, method, body });
|
||||
// Logging désactivé en production pour éviter la latence
|
||||
if (import.meta.env.DEV) {
|
||||
console.log("🌐 API Request:", { url, method });
|
||||
}
|
||||
|
||||
const res = await fetch(url, {
|
||||
method,
|
||||
@@ -25,7 +28,10 @@ export async function apiRequest(
|
||||
credentials: "include",
|
||||
});
|
||||
|
||||
console.log("🌐 API Response:", { status: res.status, ok: res.ok });
|
||||
// Logging des erreurs uniquement en production
|
||||
if (!res.ok || import.meta.env.DEV) {
|
||||
console.log("🌐 API Response:", { status: res.status, ok: res.ok, url });
|
||||
}
|
||||
|
||||
await throwIfResNotOk(res);
|
||||
|
||||
|
||||
@@ -206,10 +206,10 @@ export default function BLReconciliation() {
|
||||
|
||||
const deliveries = await response.json();
|
||||
|
||||
// Debug : examiner les données des groupes en production
|
||||
console.log('🔍 DEBUG Production - Première livraison:', deliveries[0]);
|
||||
console.log('🔍 DEBUG Production - Groupe de la première livraison:', deliveries[0]?.group);
|
||||
console.log('🔍 DEBUG Production - Champs disponibles dans group:', deliveries[0]?.group ? Object.keys(deliveries[0].group) : 'Pas de groupe');
|
||||
// Debug désactivé en production pour éviter latence
|
||||
if (import.meta.env.DEV && deliveries[0]) {
|
||||
console.log('🔍 DEBUG - Première livraison:', deliveries[0]);
|
||||
}
|
||||
const filtered = Array.isArray(deliveries) ? deliveries.filter((d: any) => d.status === 'delivered') : [];
|
||||
|
||||
return filtered.sort((a: any, b: any) => new Date(b.deliveredDate || b.updatedAt).getTime() - new Date(a.deliveredDate || a.updatedAt).getTime());
|
||||
@@ -222,12 +222,16 @@ export default function BLReconciliation() {
|
||||
useEffect(() => {
|
||||
if (!deliveriesWithBL.length || !suppliers.length) return;
|
||||
|
||||
console.log('🔄 Déclenchement vérifications automatiques...');
|
||||
if (import.meta.env.DEV) {
|
||||
console.log('🔄 Déclenchement vérifications automatiques...');
|
||||
}
|
||||
|
||||
deliveriesWithBL.forEach((delivery: any) => {
|
||||
// Vérifier seulement si on a une référence de facture et pas déjà de résultat
|
||||
if (delivery.invoiceReference && !verificationResults[delivery.id] && !verifyingDeliveries.has(delivery.id)) {
|
||||
console.log(`🔍 Vérification auto pour livraison ${delivery.id}:`, delivery.invoiceReference);
|
||||
if (import.meta.env.DEV) {
|
||||
console.log(`🔍 Vérification auto pour livraison ${delivery.id}:`, delivery.invoiceReference);
|
||||
}
|
||||
|
||||
// Délai pour éviter de surcharger le serveur - le cache évitera les appels inutiles
|
||||
setTimeout(() => {
|
||||
@@ -373,14 +377,12 @@ export default function BLReconciliation() {
|
||||
// Et il faut qu'il y ait un magasin assigné avec un webhook
|
||||
const hasValidGroup = delivery.group && delivery.group.webhookUrl;
|
||||
|
||||
// Debug temporaire pour diagnostiquer le problème
|
||||
if (delivery && delivery.supplier?.name) {
|
||||
// Debug uniquement en développement
|
||||
if (import.meta.env.DEV && delivery && delivery.supplier?.name) {
|
||||
console.log(`🔍 Debug bouton facture pour ${delivery.supplier.name}:`, {
|
||||
isNotValidated,
|
||||
hasNoInvoiceReference,
|
||||
hasValidGroup,
|
||||
group: delivery.group,
|
||||
webhookUrl: delivery.group?.webhookUrl,
|
||||
shouldShow: (isNotValidated || hasNoInvoiceReference) && hasValidGroup
|
||||
});
|
||||
}
|
||||
|
||||
@@ -73,21 +73,25 @@ export default function DlcPage() {
|
||||
if (statusFilter && statusFilter !== "all") params.append("status", statusFilter);
|
||||
if (supplierFilter && supplierFilter !== "all") params.append("supplierId", supplierFilter);
|
||||
|
||||
console.log("🔍 Requête DLC products:", {
|
||||
url: `/api/dlc-products?${params.toString()}`,
|
||||
user: user?.role,
|
||||
selectedStoreId,
|
||||
userGroups: user?.userGroups?.map(ug => ({ groupId: ug.groupId, groupName: ug.group?.name }))
|
||||
});
|
||||
if (import.meta.env.DEV) {
|
||||
console.log("🔍 Requête DLC products:", {
|
||||
url: `/api/dlc-products?${params.toString()}`,
|
||||
user: user?.role,
|
||||
selectedStoreId,
|
||||
userGroups: user?.userGroups?.map(ug => ({ groupId: ug.groupId, groupName: ug.group?.name }))
|
||||
});
|
||||
}
|
||||
|
||||
return apiRequest(`/api/dlc-products?${params.toString()}`);
|
||||
},
|
||||
enabled: !authLoading,
|
||||
onSuccess: (data) => {
|
||||
console.log("📋 DLC products reçus:", {
|
||||
total: data.length,
|
||||
sample: data.slice(0, 3).map(d => ({ id: d.id, productName: d.productName, groupId: d.groupId }))
|
||||
});
|
||||
if (import.meta.env.DEV) {
|
||||
console.log("📋 DLC products reçus:", {
|
||||
total: data.length,
|
||||
sample: data.slice(0, 3).map(d => ({ id: d.id, productName: d.productName, groupId: d.groupId }))
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -121,7 +125,9 @@ export default function DlcPage() {
|
||||
// Invalidate all DLC queries with any combination of parameters
|
||||
queryClient.invalidateQueries({ queryKey: ["/api/dlc-products"], exact: false });
|
||||
queryClient.invalidateQueries({ queryKey: ["/api/dlc-products/stats"], exact: false });
|
||||
console.log("🔄 Cache DLC invalidé après création");
|
||||
if (import.meta.env.DEV) {
|
||||
console.log("🔄 Cache DLC invalidé après création");
|
||||
}
|
||||
toast({ title: "Produit DLC créé avec succès" });
|
||||
setIsDialogOpen(false);
|
||||
form.reset();
|
||||
@@ -143,7 +149,9 @@ export default function DlcPage() {
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: ["/api/dlc-products"], exact: false });
|
||||
queryClient.invalidateQueries({ queryKey: ["/api/dlc-products/stats"], exact: false });
|
||||
console.log("🔄 Cache DLC invalidé après mise à jour");
|
||||
if (import.meta.env.DEV) {
|
||||
console.log("🔄 Cache DLC invalidé après mise à jour");
|
||||
}
|
||||
toast({ title: "Produit DLC mis à jour avec succès" });
|
||||
setIsDialogOpen(false);
|
||||
form.reset();
|
||||
@@ -164,7 +172,9 @@ export default function DlcPage() {
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: ["/api/dlc-products"], exact: false });
|
||||
queryClient.invalidateQueries({ queryKey: ["/api/dlc-products/stats"], exact: false });
|
||||
console.log("🔄 Cache DLC invalidé après validation");
|
||||
if (import.meta.env.DEV) {
|
||||
console.log("🔄 Cache DLC invalidé après validation");
|
||||
}
|
||||
toast({ title: "Produit validé avec succès" });
|
||||
},
|
||||
onError: (error: any) => {
|
||||
|
||||
+1
-1
@@ -2,4 +2,4 @@
|
||||
# https://curl.se/docs/http-cookies.html
|
||||
# This file was generated by libcurl! Edit at your own risk.
|
||||
|
||||
#HttpOnly_localhost FALSE / FALSE 1755183951 connect.sid s%3A5AoIK-t2wOxXHZXR8IfvVc8xyfwMVSB8.wszhmo%2FyUviNdYS5uw4KwFZ7AoexEQiDD3olvfqQfHM
|
||||
#HttpOnly_localhost FALSE / FALSE 1755187696 connect.sid s%3AnEg7s3fD2sLyetJTCx-VYkzZFbBkPEcf.2BsOBC1UlFIC%2BpyKgdtocMX42YO%2FZLBn1cU6UeEnIYY
|
||||
@@ -19,6 +19,19 @@ La plateforme fournit une gestion robuste des flux de travail de livraison avec
|
||||
|
||||
## Recent Changes
|
||||
|
||||
### 2025-08-13 - Optimisation performance production + suppression fonctionnelle
|
||||
✅ **Résolution latence production** :
|
||||
- **Problème** : Console saturée par centaines de logs "API Response" causant latence
|
||||
- **Solution** : Logging conditionnel - seulement en développement pour requêtes normales
|
||||
- **Production** : Seules les erreurs API sont loggées pour debugging
|
||||
- **Impact** : Réduction drastique de la charge console et amélioration performances
|
||||
|
||||
✅ **Fonctionnalité suppression complètement opérationnelle** :
|
||||
- **Cache NocoDB** : Fonction `saveInvoiceVerificationCache` ajoutée aux deux systèmes stockage
|
||||
- **MemStorage** : Implémentation CRUD complète pour ordres et livraisons
|
||||
- **Test validé** : Création, lecture et suppression fonctionnent parfaitement
|
||||
- **Production** : Les suppressions de livraisons et rapprochements sont maintenant possibles
|
||||
|
||||
### 2025-08-13 - Problème authentification production résolu
|
||||
✅ **Diagnostic et solution du problème de validation des livraisons** :
|
||||
|
||||
|
||||
Reference in new issue
Block a user