Marc-André Bombeck
83d96a9817
feat(medication-compliance-rollups): writer and reader helpers
...
Materialises the persistent medication-compliance rollup tier behind
`MedicationComplianceRollup`. Per-`(userId, medicationId, day)` row
where `day` is `YYYY-MM-DD` anchored to the user's IANA timezone.
`recomputeMedicationComplianceForDay` upserts the row from the events
inside the local-day UTC window; `readMedicationCompliance` returns a
zero-filled trailing-window bucket array matching the legacy
`buildComplianceBuckets` shape so consumer swaps are byte-stable.
`hasMedicationComplianceCoverage` powers the route's coverage probe
and `recomputeUserMedicationCompliance` is the full-fold the worker
boot backfill calls.
2026-05-18 12:30:00 +02:00
..
2026-05-17 19:07:03 +02:00
2026-05-17 13:22:51 +02:00
2026-05-18 12:20:14 +02:00
2026-05-14 23:49:32 +02:00
2026-05-17 23:46:09 +02:00
2026-05-17 19:07:03 +02:00
2026-05-16 10:59:42 +02:00
2026-05-11 08:27:51 +02:00
2026-05-17 19:07:03 +02:00
2026-05-09 02:27:17 +02:00
2026-05-10 11:05:40 +02:00
2026-05-16 21:25:26 +02:00
2026-05-15 22:59:10 +02:00
2026-05-16 21:25:26 +02:00
2026-05-17 19:07:03 +02:00
2026-05-15 22:59:10 +02:00
2026-05-18 12:25:45 +02:00
2026-05-14 23:49:32 +02:00
2026-05-18 12:20:14 +02:00
2026-05-18 12:30:00 +02:00
2026-03-10 20:14:33 +01:00
2026-05-18 12:28:58 +02:00
2026-05-18 12:22:38 +02:00
2026-05-16 21:25:26 +02:00
2026-05-17 23:46:09 +02:00
2026-05-09 21:19:18 +02:00
2026-05-16 16:04:21 +02:00
2026-05-16 12:37:55 +02:00
2026-05-16 21:25:26 +02:00
2026-05-14 23:49:32 +02:00
2026-05-10 22:12:22 +02:00
2026-05-14 23:49:32 +02:00
2026-05-17 19:07:03 +02:00
2026-05-17 19:07:03 +02:00
2026-05-15 22:59:10 +02:00
2026-05-16 19:46:43 +02:00
2026-05-17 19:07:03 +02:00
2026-05-09 02:27:17 +02:00
2026-05-08 14:33:39 +02:00
2026-05-16 16:04:21 +02:00
2026-05-17 09:55:33 +02:00
2026-05-17 00:39:58 +02:00
2026-05-14 23:49:32 +02:00
2026-05-14 23:49:32 +02:00
2026-05-09 21:36:47 +02:00
2026-05-14 23:49:32 +02:00
2026-05-14 23:49:32 +02:00
2026-05-15 22:59:10 +02:00
2026-05-15 22:59:10 +02:00
2026-04-18 22:20:12 +02:00
2026-03-10 20:14:33 +01:00
2026-05-09 02:22:12 +02:00
2026-05-08 17:46:31 +02:00
2026-03-10 20:14:33 +01:00
2026-03-10 20:14:33 +01:00
2026-03-10 20:14:33 +01:00
2026-05-09 02:27:17 +02:00
2026-04-18 17:15:43 +02:00
2026-05-08 14:33:39 +02:00
2026-05-16 19:46:43 +02:00
2026-05-15 22:59:10 +02:00
2026-05-16 19:46:43 +02:00
2026-05-09 21:01:45 +02:00
2026-05-14 23:49:32 +02:00
2026-05-17 23:46:09 +02:00
2026-03-10 20:14:33 +01:00
2026-04-18 22:20:12 +02:00