WattFlow sequentiediagrammen
Dit document bevat alleen de hoofdflows in sequentievorm. Het is bedoeld als snelle visuele aanvulling op de brede architectuurdocumentatie, zonder alle lange uitleg ertussen. Daar horen nu ook de AI-planimport en freshness-gestuurde planbijsturing bij.
1. Scan en trainer verbinden
Dit is de flow die in Instellingen gebeurt wanneer iemand op Scan devices drukt en WattFlow daarna
de trainer automatisch probeert te kiezen.
Wat hierbij belangrijk is
- De trainer moet echt FTMS hebben. Alleen "lijkt op een trainer" is niet genoeg.
- De Settings-flow auto-connect momenteel alleen de trainer, niet automatisch alle andere sensoren.
- De keuze is RSSI-gedreven: de beste zichtbare trainer wint als er niet al een expliciete voorkeur is.
2. Extra sensoren koppelen
Powermeter, cadans en hartslag volgen een vergelijkbare maar strengere flow, omdat WattFlow trainers, speed-only sensoren en echte externe meters uit elkaar moet houden.
Belangrijkste regels
- Een trainer mag niet als externe powermeter of als losse cadence source gebruikt worden.
- Een wheel-only CSC sensor wordt afgewezen als cadence source.
- HR via trainer is fallback; een directe HR-sensor wint voor RR- en HRV-data.
3. Workout starten en live sturen
Zodra een workout is gekozen, verschuift de regie naar WorkoutSessionEngine. Die engine
start de workout, leest live waarden en stuurt de trainer opnieuw per stap of tick.
| Variant | Wat er verandert in de flow |
|---|---|
| FTP-modus | Workoutpercentages worden direct doelwatts op basis van huidige FTP. |
| Level-modus | De engine rekent met een virtuele FTP en een niveau-factor; live UI toont nadrukkelijk het niveau. |
| PowerMatch aan | De engine corrigeert trainer-targets op basis van externe powermeterfeedback, maar de trainer blijft FTMS-targets ontvangen. |
| FreeRide | In plaats van target watts verstuurt WattFlow een resistance level. |
4. Workout afronden en opslaan
Bij het einde van een workout wordt niet alleen de UI bijgewerkt. De app bouwt een volledige activiteit op, maakt exportbestanden en bereidt daarna optioneel syncs voor.
5. Strava upload
Upload gebeurt pas na de samenvatting, wanneer de gebruiker opslaat met Strava-upload aan.
6. Strava import
Historie kan ook andersom werken: WattFlow haalt recente Strava-activiteiten op en bouwt ze lokaal opnieuw op.
7. Apple Health sync
Apple Health heeft eigenlijk twee aparte flows: toestemming/inkomend profiel, en uitgaande workout/FTP-sync.
8. Trainerkalibratie
De trainer spin-down is de meest "fysieke" flow in de app: de gebruiker moet echt optrekken en uitrollen, terwijl WattFlow de voortgang bewaakt via FTMS-speed.
9. AI-plan maken en importeren
Het AI-plan is een bewust tweestapsproces: WattFlow bouwt de strikte prompt en valideert daarna de JSON-import, maar het genereren zelf gebeurt buiten de app.
10. Freshness en planbijsturing
De freshness-flow bepaalt niet het hele plan opnieuw, maar kijkt vlak voor weergave of de volgende plansessie gelijk kan blijven, verlaagd moet worden of vervangen moet worden door herstel. Onder water loopt dit nu via een readiness-architectuur met morning readiness, day score en trainability.
Bijbehorende bronbestanden
| Flow | Belangrijkste code |
|---|---|
| Scannen en verbinden | WattFlow/Views/MoreTabView.swift, WattFlow/Views/SettingsTabView.swift, WattFlow/Services/BluetoothManager.swift |
| Workout starten en live sturen | WattFlow/AppModel.swift, WattFlow/Services/WorkoutSessionEngine.swift, WattFlow/Services/BluetoothManager.swift |
| Strava | WattFlow/AppModel.swift, WattFlow/Services/StravaConnectService.swift |
| Apple Health | WattFlow/AppModel.swift, WattFlow/Services/AppleHealthService.swift |
| AI-plan prompt en import | WattFlow/Views/AIPlanViews.swift, WattFlow/Services/AIPlanImportService.swift, WattFlow/Services/AIPlanWorkoutAdapter.swift, WattFlow/Services/AIPlanStore.swift |
| Freshness en planbijsturing | WattFlow/AppModel.swift, WattFlow/Services/AppleHealthService.swift, WattFlow/Services/FreshnessCalculator.swift, WattFlow/Services/FreshnessTrainingAdvisor.swift |
Deze diagrams zijn een operationele vereenvoudiging van de codeflow op 9 april 2026. Voor planopbouw, AI-prompts, categorieën en trainingsbibliotheek is de trainingsgids de juiste aanvulling. Voor de volledige Freshness/readiness-flow, morning lock, confidence en caution is de freshness-gids de juiste verdieping. Voor alle randgevallen en routingdetails blijft de hoofdgids leidend.