fix: treat a stale/legacy-shaped forecast cache as unavailable, not silently empty
Na de deploy van het uuroverzicht (commit 8e90eb1) bleef de nog geldige
cache op de server een tijdlang in het oude platte 'daily'-blok staan
i.p.v. het nieuwe {daily, hourly}. DashboardService::forecast() las
daaruit stil een lege verwachting zonder errors-melding. Nu wordt een
cache- of bronresultaat zonder geldig 'daily'-blok behandeld als een
storing (forecast_unavailable), zichtbaar in plaats van stil.
Handmatig verholpen op productie door de verouderde cachefile te
wissen; deze fix voorkomt herhaling bij een volgende formaatwijziging.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -123,11 +123,18 @@ final class DashboardService
|
||||
return ['days' => [], 'stale' => true];
|
||||
}
|
||||
$result = $this->fetch('forecast', fn() => $this->source->forecast($lat, $lon, $tz->getName()), self::ERR_FORECAST);
|
||||
if ($result['data'] === null) {
|
||||
return ['days' => [], 'stale' => $result['stale']];
|
||||
$daily = is_array($result['data']['daily'] ?? null) ? $result['data']['daily'] : null;
|
||||
if ($daily === null) {
|
||||
// Data ontbreekt (echte storing, al gemeld door fetch()), of de cache staat nog in een ouder
|
||||
// formaat na een deploy dat de opgeslagen vorm wijzigde. In beide gevallen liever zichtbaar
|
||||
// niets tonen dan stil een lege verwachting zonder foutmelding.
|
||||
if ($result['data'] !== null) {
|
||||
$this->addError(self::ERR_FORECAST);
|
||||
}
|
||||
return ['days' => [], 'stale' => true];
|
||||
}
|
||||
|
||||
$days = ForecastMapper::map($result['data']['daily'] ?? []);
|
||||
$days = ForecastMapper::map($daily);
|
||||
$hourlyByDate = HourlyForecastMapper::mapByDate($result['data']['hourly'] ?? [], $tz);
|
||||
foreach ($days as &$day) {
|
||||
$day['hourly'] = $hourlyByDate[$day['date']] ?? [];
|
||||
|
||||
Reference in New Issue
Block a user