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
|
||||
|
||||
1. **Serveur (Python, testable sans Mac)** — une route rendant la séance du
|
||||
jour au format `CoachSessionPlan`, en réutilisant `_blocks_from_session` et
|
||||
`app.current_zones()` (règle 9 du CLAUDE.md : jamais un % de FCmax
|
||||
générique). ✅ Commencer par là : le JSON se juge dans un navigateur avant
|
||||
qu'une ligne de Swift n'en dépende.
|
||||
1. ✅ **Serveur — FAIT le 2026-08-21** (`coach_sportif` `c8d1541`, déployé et
|
||||
vérifié en prod). **`GET /api/plan/session[?date=YYYY-MM-DD][&type=...]`**
|
||||
rend la séance dépliée au format `CoachSessionPlan` : clés snake_case,
|
||||
`hr_zone` en entier, durées en secondes. Mesuré en prod le 21/08 sur la
|
||||
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
|
||||
qui part déjà.
|
||||
3. **Montre** — `ConnectivityManager` publie un `sessionPlan` ; une vue appelle
|
||||
|
||||
Reference in New Issue
Block a user