fix(activity): never rate today's partial day in the activity calendar

Today is shown as in_progress instead of being placed against whole
days, and a running period is compared over its completed days only:
the total through yesterday against the usual rate times the days
completed. The period total and goal progress still count today. The
comparison gains completedDays and completedValue.
This commit is contained in:
Marc-André Bombeck committed 2026-10-21 22:47:07 +02:00
1 parent e482f76508
commit 89b30ebdee
14 files changed
+218 -49

No files matched your search

+24 -4
View File
@@ -50159,6 +50159,7 @@ components:
enum:
- none
- unrated
- in_progress
- low
- below
- usual
@@ -50166,12 +50167,14 @@ components:
- high
description: "Where the day sits in the person's own spread over the 84 days before the period: `low` below their 10th
percentile, `below` below the 25th, `above` above the 75th, `high` above the 90th, `usual`
between. `none` = no value that day; `unrated` = fewer than 14 days of history to compare with."
between. `none` = no value that day; `unrated` = fewer than 14 days of history to compare with;
`in_progress` = today, which has not ended and is never rated."
activeMinutes:
type: string
enum:
- none
- unrated
- in_progress
- low
- below
- usual
@@ -50179,12 +50182,14 @@ components:
- high
description: "Where the day sits in the person's own spread over the 84 days before the period: `low` below their 10th
percentile, `below` below the 25th, `above` above the 75th, `high` above the 90th, `usual`
between. `none` = no value that day; `unrated` = fewer than 14 days of history to compare with."
between. `none` = no value that day; `unrated` = fewer than 14 days of history to compare with;
`in_progress` = today, which has not ended and is never rated."
load:
type: string
enum:
- none
- unrated
- in_progress
- low
- below
- usual
@@ -50192,7 +50197,8 @@ components:
- high
description: "Where the day sits in the person's own spread over the 84 days before the period: `low` below their 10th
percentile, `below` below the 25th, `above` above the 75th, `high` above the 90th, `usual`
between. `none` = no value that day; `unrated` = fewer than 14 days of history to compare with."
between. `none` = no value that day; `unrated` = fewer than 14 days of history to compare with;
`in_progress` = today, which has not ended and is never rated."
required:
- steps
- activeMinutes
@@ -50412,6 +50418,17 @@ components:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
completedDays:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
description: Days of the period that have ended (today excluded).
completedValue:
description: "`value` over the completed days only. This, not `value`, is what `usualToDate` is compared with, so a
running period is never judged on today's partial day."
type:
- number
- "null"
usual:
description: "The person's usual full period: the median of the twelve weeks (or, per day, of the six months) before it.
Null with fewer than three earlier periods of data."
@@ -50419,7 +50436,8 @@ components:
- number
- "null"
usualToDate:
description: The usual figure for the days elapsed so far; equals `usual` once the period is over.
description: The usual figure for the completed days (today excluded); equals `usual` once the period is over, null
before the period's first day has ended.
type:
- number
- "null"
@@ -50430,6 +50448,8 @@ components:
required:
- value
- daysWithData
- completedDays
- completedValue
- usual
- usualToDate
- referencePeriods