Cadrage des vues d'entraînement au choix, et point d'étape du 21/08
Le chantier « écrans configurables façon WorkOutDoors » est cadré, rien n'est codé. docs/watch-training-screens.md fixe l'analyse pour qu'une session ultérieure n'ait pas à la refaire. Ce qui a été établi : - LiveWorkoutView a cinq métriques ÉCRITES EN DUR ; il n'existe aucune notion de champ, de page ni de configuration. Tout est à créer. - Neuf champs sont disponibles sans aucune collecte nouvelle (dont allure, D+, précision GPS, étape du fractionné) ; FC moyenne, temps en zone, cadence, puissance et laps demandent du travail. - Décision : la configuration s'édite côté WEB (TileManager existe déjà) et voyage par WCSession — donc changer ses écrans ne demandera aucun rebuild Xcode, comme pour la routine. - Le modèle et le catalogue sont du Foundation pur : écrits et testés sur Linux, seul le rendu TabView exige le Mac. Ne pas commencer par le rendu. - Deux contraintes tenues dès la conception : 1 Hz maximum et page visible seule (le CPU suspend l'app et arrête le GPS sans erreur), et espacement des mises à jour en luminance réduite. COWORK gagne le point d'étape du 21/08 : build passé, correctif finishRoute, et surtout le fait que les 4 vérifications au poignet ne sont PAS encore faites — les logs du jour ne montrent que l'app iPhone. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
39
COWORK.md
39
COWORK.md
@@ -190,6 +190,45 @@ de temps reste à faire**.
|
||||
⚠️ Et jamais un `Timer` de vue SwiftUI : il ne tourne pas écran éteint, donc
|
||||
pendant l'essentiel d'une séance (même famille de piège que `VmaTestView`).
|
||||
|
||||
## 📌 Point du 2026-08-21 — build OK, vérifs GPS EN SUSPENS
|
||||
|
||||
**Build Xcode passé sur iPhone (iOS 26.6)**, après un `git pull` qui partait de
|
||||
`be1ffec` : le Mac n'avait donc **ni `LocationTracker`, ni `RouteFilter`, ni le
|
||||
correctif du doublon pbxproj** (`19fbfd1`) — le build du 20/08 ne les contenait
|
||||
pas. Contrôles avant build : 2/2/2 déclarations, `UIBackgroundModes = [location]`
|
||||
et `NSLocationWhenInUseUsageDescription` présents, un seul `@main` par cible.
|
||||
|
||||
**Une erreur de compilation, corrigée (`3e657f5`)** :
|
||||
`finishRoute(with:)` **n'accepte pas d'optionnel** — vérifié dans la doc Apple :
|
||||
`func finishRoute(with workout: HKWorkout, metadata:)`, « You must have already
|
||||
saved this workout to the HealthKit store ». Le commentaire du fichier
|
||||
promettait une trace « sauvegardée sans association » : **c'est impossible**,
|
||||
aucune API ne clôt une route orpheline. Traité en amont : quand
|
||||
`finishWorkout()` rend `nil` (montre verrouillée), la séance EST dans HealthKit
|
||||
et `WorkoutManager.recentlySavedWorkout()` va la rechercher — dernier workout de
|
||||
`HKSource.default()` **croisant** les 5 dernières minutes (chevauchement, jamais
|
||||
`startDate` : filtrer sur le début raterait toute séance longue). Sinon
|
||||
`discardRoute()` jette la trace explicitement et le journalise comme une perte.
|
||||
|
||||
⏳ **Les 4 vérifications au poignet n'ont PAS encore été faites** — la séance
|
||||
doit être lancée **depuis l'app sur la montre**, les logs du 21/08 ne montrent
|
||||
que l'app iPhone (sync HealthKit complète et saine : 7 séances, 7 traces, 13
|
||||
scores d'effort, App Group en écriture `ok:true`).
|
||||
|
||||
Relevé au passage, non traité : avertissement `UIScene lifecycle will soon be
|
||||
required` (Capacitor, échéance future) ; un échantillon de pas venant de
|
||||
`"iPhone de …"` et non de la Watch — à surveiller, **la cadence étant dérivée
|
||||
des pas relus par séance**, deux sources sur une même séance la fausseraient.
|
||||
|
||||
## 🖥️ Vues d'entraînement au choix (WorkOutDoors) — cadré le 21/08, rien codé
|
||||
|
||||
Cadrage complet : **`docs/watch-training-screens.md`**. En deux lignes :
|
||||
`LiveWorkoutView` a **cinq métriques en dur**, aucune notion de champ ni de
|
||||
page. Décision prise : la configuration s'édite **côté web** (réutiliser
|
||||
`TileManager`) et voyage par `WCSession` — donc **aucun rebuild pour changer ses
|
||||
écrans**. Le modèle et le catalogue sont du Foundation pur, donc écrits et
|
||||
testés sur Linux ; seul le rendu `TabView` exige Xcode. Châssis ≈ 1 jour.
|
||||
|
||||
## 👉 À reprendre
|
||||
- ✅ **Phase 4 login — FAIT & DÉPLOYÉ** (révocation Apple à la suppression de compte) : code complet côté backend `coach_sportif` (commit `5ae6e2d`) + clé `.p8` déployée sur le VPS prod (vérifié 2026-06-26). Rien à coder. Détails : `coach_sportif/COWORK.md`.
|
||||
- **iOS — bloqué Mac** : builder + uploader TestFlight le natif accumulé (login Apple+Google natif, watchOS live, HeartRateRangeAlert). Sur le Mac : `cd ~/coach-ios && git pull && npm install && npx cap sync ios && open ios/App/App.xcodeproj` → Clean Build Folder → Archive → Upload.
|
||||
|
||||
Reference in New Issue
Block a user