mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-11 17:27:31 +02:00
Reduce production latency by conditionally logging API requests and responses
Conditionally disable verbose logging in production to resolve latency issues caused by excessive console output in API requests and responses. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 7c468936-2a88-4686-ac0a-84921a45222d Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/7c468936-2a88-4686-ac0a-84921a45222d/B7k6m01
This commit is contained in:
1 parent
947896c212
commit
da2af1e29d
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