From 944d99733c3aed285995fdb51a5f3c8b470043f5 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 5 Oct 2026 14:22:44 +0000 Subject: [PATCH] =?UTF-8?q?fix(meteo):=20afficher=20la=20r=C3=A9ponse=20de?= =?UTF-8?q?=20l'API=20m=C3=AAme=20si=20son=20enregistrement=20=C3=A9choue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La température de l'an dernier disparaissait alors que Visual Crossing répondait correctement (tableau de bord : requêtes réussies, 0 échec, et l'URL d'historique testée dans le navigateur renvoie bien la journée). Quand l'enregistrement de la réponse en cache échouait (par exemple une contrainte d'unicité sur la date déjà occupée par la météo relevée ce jour-là l'an dernier), la route relisait le cache, n'y trouvait rien et jetait la donnée reçue : previousYear restait à null et l'API était réinterrogée à chaque affichage. La route garde désormais la réponse de l'API pour l'affichage quand l'enregistrement échoue (année en cours et année précédente), et journalise une réponse d'historique vide. Reproduit sur un Postgres local avec une contrainte UNIQUE (date, location) et une API simulée renvoyant la réponse réelle : N-1 vide avant, 14,1° après ; sans contrainte, le comportement est inchangé. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01MsDJjQrAggcJwbbBtKhgyb --- server/routes.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/server/routes.ts b/server/routes.ts index edfe76b..6bf224f 100644 --- a/server/routes.ts +++ b/server/routes.ts @@ -5443,8 +5443,9 @@ RÉSUMÉ DU SCAN console.log("✅ [CACHE] Current year data saved to cache"); } catch (error: any) { console.warn("⚠️ [CACHE] Could not save current year data (may already exist):", error.message); - // Récupérer les données existantes au lieu de créer - currentYearData = await storage.getWeatherData(today, true); + // Récupérer les données existantes au lieu de créer ; à défaut, + // afficher quand même la réponse de l'API + currentYearData = (await storage.getWeatherData(today, true)) ?? (weatherData as any); } } } @@ -5462,9 +5463,12 @@ RÉSUMÉ DU SCAN console.log("✅ [CACHE] Previous year data saved to cache"); } catch (error: any) { console.warn("⚠️ [CACHE] Could not save previous year data (may already exist):", error.message); - // Récupérer les données existantes au lieu de créer - previousYearData = await storage.getWeatherData(previousYearDate, false); + // Récupérer les données existantes au lieu de créer ; à défaut, + // afficher quand même la réponse de l'API plutôt que de la perdre + previousYearData = (await storage.getWeatherData(previousYearDate, false)) ?? (weatherData as any); } + } else { + console.warn(`⚠️ [HISTORY] Empty historical response for ${previousYearDate}`); } } else { console.warn("⚠️ [HISTORY] Could not fetch historical data - continuing with current year only");