fix(meteo): afficher la réponse de l'API même si son enregistrement échoue

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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MsDJjQrAggcJwbbBtKhgyb
This commit is contained in:
Claude committed 2026-10-05 14:22:44 +00:00
1 parent 8a27b310d2
commit 944d99733c
1 file changed
+8 -4
+8 -4
View File
@@ -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");