COWORK : la couche serveur du plan de séance est livrée
GET /api/plan/session (coach_sportif c8d1541) rend la séance du jour au format CoachSessionPlan, déployé et vérifié en prod le 21/08 : 32 étapes / 40 min sur le 15×(1'/1') du jour, alternance work/recovery correcte, bornes issues des zones datées. Reste les couches 2 (pousser le plan par WCSession) et 3 (la vue qui appelle engine.update et joue l'haptique sur les transitions). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
18
COWORK.md
18
COWORK.md
@@ -154,11 +154,19 @@ pour décoder du JSON venant du serveur.
|
|||||||
|
|
||||||
### Les trois couches, dans l'ordre
|
### Les trois couches, dans l'ordre
|
||||||
|
|
||||||
1. **Serveur (Python, testable sans Mac)** — une route rendant la séance du
|
1. ✅ **Serveur — FAIT le 2026-08-21** (`coach_sportif` `c8d1541`, déployé et
|
||||||
jour au format `CoachSessionPlan`, en réutilisant `_blocks_from_session` et
|
vérifié en prod). **`GET /api/plan/session[?date=YYYY-MM-DD][&type=...]`**
|
||||||
`app.current_zones()` (règle 9 du CLAUDE.md : jamais un % de FCmax
|
rend la séance dépliée au format `CoachSessionPlan` : clés snake_case,
|
||||||
générique). ✅ Commencer par là : le JSON se juge dans un navigateur avant
|
`hr_zone` en entier, durées en secondes. Mesuré en prod le 21/08 sur la
|
||||||
qu'une ligne de Swift n'en dépende.
|
séance du jour (CDC J13, 15×(1'/1')) : **32 étapes, 40 min**, alternance
|
||||||
|
`work`/`recovery` correcte, bornes Z1 100-109 / Z2 109-118.
|
||||||
|
- Les bornes BPM viennent des **zones datées** (`current_zones`), jamais des
|
||||||
|
`hr_min`/`hr_max` du plan (hérités d'avant l'unification du 12/08).
|
||||||
|
- Les `repeat` sont **dépliés** — le moteur ne sait pas répéter.
|
||||||
|
- `404` = pas de séance ce jour · `422` = séance non chronométrée (repos,
|
||||||
|
durée ouverte) : rien à dérouler, à distinguer côté montre.
|
||||||
|
- ⚠️ Route volontairement **hors `/api/v1/*`** (JWT que la WebView n'a pas).
|
||||||
|
Un test le verrouille : ne pas la « ranger » dans l'API native.
|
||||||
2. **iPhone** — pousser ce plan vers la montre par `WCSession`, à côté de ce
|
2. **iPhone** — pousser ce plan vers la montre par `WCSession`, à côté de ce
|
||||||
qui part déjà.
|
qui part déjà.
|
||||||
3. **Montre** — `ConnectivityManager` publie un `sessionPlan` ; une vue appelle
|
3. **Montre** — `ConnectivityManager` publie un `sessionPlan` ; une vue appelle
|
||||||
|
|||||||
Reference in New Issue
Block a user