fix(cycle): gate the calendar grid to a learning state during cold start

The predictions panel suppressed its fertile-window and ovulation rows while
fewer than three cycles were observed, but the month calendar did not — so a
brand-new user who logged a single period saw the grid paint a confident
fertile-window shading, a predicted-ovulation dot, and full phase bands off a
population 28/14 prior at ~0.20 confidence. Calendar-based fertility estimation
is unreliable below several recorded cycles, so the grid was asserting days it
could not know.

Thread the same still-learning gate into the calendar build: while fewer than
three cycles are observed, suppress the fertile window, the ovulation dot, and
the phase band (the predicted-period bar stays, mirroring the panel). Surface a
top-level stillLearning flag on the calendar response so the client renders a
calm "learning your cycle" banner over the grid instead of a bare, falsely
confident calendar. The flag is additive and back-compatible; older clients
ignore it and degrade to the previous render.

Also pin the observed-cycle count to a single source — the engine's
post-exclusion value — so the response never carries two divergent counts.
This commit is contained in:
Marc-André Bombeck committed 2026-06-14 14:43:50 +02:00
1 parent 63f398042d
commit f5798e20d8
13 files changed
+159 -19

No files matched your search

+3
View File
@@ -6608,6 +6608,8 @@ components:
anyOf:
- $ref: "#/components/schemas/CyclePredictionDTO"
- type: "null"
stillLearning:
type: boolean
days:
type: array
items:
@@ -6691,6 +6693,7 @@ components:
required:
- profile
- prediction
- stillLearning
- days
- meta
additionalProperties: false