feat(environment): fill air quality for every past day with entries

A background job fetches air quality, pollen and UV for every earlier
local day with a reading, mood entry, dose, symptom or workout: after the
update (boot and nightly discovery), when the home is set and when air
quality is switched on. A day with a weather row gets its air quality; a
day without one gets both, at the covering location period or else at the
home, also before the home was set. Days the source does not reach (before
2013 in Europe, before August 2022 elsewhere) stay empty and are not
counted.

Pending days are grouped by coarse location and cut into ranges of up to
90 days, joining days at most 14 apart, newest first. A run holds itself to
300 of the account's 400 daily calls and half of each instance window,
stores its progress on the user (migration 0391) and sends a follow-up while
it makes progress; a budget stop waits for the next discovery. The
Location & weather card shows the progress.

The air-quality client now asks pollen and dust from 2021 and skips the
request outside Europe before CAMS global starts.
This commit is contained in:
Marc-André Bombeck committed 2026-10-09 09:43:01 +02:00
1 parent 7340cd3ab7
commit d81a6ddf25
30 files changed
+1747 -52

No files matched your search

+31
View File
@@ -79608,12 +79608,43 @@ components:
- type: "null"
description: "The model domain of that day: `cams_europe` (about 11 km, with pollen) or `cams_global` (about 45 km, no
pollen)."
history:
anyOf:
- type: object
properties:
total:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
description: Past days with entries the source can serve at their place (from 2013 in Europe, from August 2022
elsewhere). Older days stay without values.
done:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
description: Of those, the days whose air quality is stored.
complete:
type: boolean
description: True when nothing the source serves is left.
checkedAt:
type: string
description: ISO instant of the run that counted them.
required:
- total
- done
- complete
- checkedAt
additionalProperties: false
- type: "null"
description: Progress of the background backfill that fills air quality for every past day with entries. Null before its
first run and while air quality is off.
required:
- enabled
- operatorDisabled
- days
- latestDate
- domain
- history
additionalProperties: false
description: v1.42 — the air-quality part of the module.
latestDay: