fix(reminders): decide what stays due by the cycle, not the measurement type

The first cut kept only free-text check-ups due after their reminder
and let every reminder with a measurement type roll on. A fortnightly
PHQ-9 or GAD-7 reminder is a measurement reminder, and each one still
jumped two weeks forward the morning it was sent without the
questionnaire being filled.

The rule is now the cycle length. A reminder whose next slot is more
than seven days away, or that has no cadence, stays due after its
reminder until it is satisfied (a matching reading, a lab result or
"done"), skipped or snoozed, and is sent again at most once a week. A
reminder on a weekly or shorter cycle rolls on as before. Appointments
stay one-shot. A reading that lands on an open measurement reminder
still sets lastSatisfiedAt and schedules the next cycle from itself.

The 0355 repair drops its "no measurement type" condition for the same
cycle rule, so the fortnightly questionnaires in the reported shape
are put back on the day they were reminded.
This commit is contained in:
Marc-André Bombeck committed 2026-09-26 10:33:13 +02:00
1 parent 4d4a527c0d
commit fb960fb72e
7 files changed
+296 -82

No files matched your search

+5 -4
View File
@@ -13276,10 +13276,11 @@ paths:
summary: List Vorsorge reminders (v1.17.1)
description: "Returns the owner's live (non-tombstoned) Vorsorge reminders, sorted by server-computed nextDueAt
ascending (nulls last). Each row carries the canonical nextDueAt the client renders without recomputing. Since
v1.39.2 a check-up (a reminder with no measurementType) keeps its nextDueAt after its reminder is sent: an open
check-up stays due, then overdue, until it is completed, skipped or snoozed, and the server repeats the reminder
at most once a week while it stays open. A check-up on a weekly or shorter cadence, and a reminder with a
measurementType, still roll on to the next slot after a delivered reminder."
v1.39.2 a reminder whose cycle is longer than seven days (intervalDays > 7, an rrule whose next occurrence is
more than seven days out) or that has no cadence keeps its nextDueAt after its reminder is sent, with or without
a measurementType: it stays due, then overdue, until it is satisfied (a matching reading or lab result, or
completed), skipped or snoozed, and the server repeats the reminder at most once every seven local days while it
stays open. A reminder on a weekly or shorter cycle still rolls on to its next slot after a delivered reminder."
responses:
"200":
description: The owner's measurement reminders.