Regroupe l'état de travail en cours réalisé dans un même worktree sur plusieurs tickets/sprints (#85, #136, #145, #155-160, #162-164), mélangeant des tickets QA et inProgress. Ne constitue pas une feature terminée : commit de sauvegarde avant triage/split par ticket en branches feature/* dédiées. Exclut les dossiers d'environnement de build locaux et le heap dump parasite (.gitignore mis à jour). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1.7 KiB
1.7 KiB
issueRef, version, updatedBy, updatedAt
| issueRef | version | updatedBy | updatedAt | ||||
|---|---|---|---|---|---|---|---|
| #120 | 2 |
|
1785137390334 |
Implémentation DevBackend — 2026-07-26
- Contrat montre étendu avec
WatchCommandType.incrementScore/decrementScoreet champs de projectionhasManualScore,currentManualScoreValue,canDecrementScore. - Score manuel routé via
WatchCompanionCommandHandlerversActiveWorkoutSessionUseCases.incrementManualScore/decrementManualScore, sans logique métier dans le bridge. - Support strict
ScoreInputMode.manual: les commandes score sont applicables seulement si la projection expose un score manuel, et le use case revalide le snapshot courant. - État vivant ajouté pour le score manuel (
ActiveManualScoreState) avec table Driftactive_manual_score_stateset migration schéma 20. - Acks couverts : décrément au plancher
0=>acceptedNoOp; rafale score avec révision décalée acceptée; commandes non-score gardent la vérification stricte de révision.
Vérifications exécutées :
dart testdanspackages/watch_bridge_contractflutter test test/application/watch_companion_command_handler_test.dart test/application/watch_companion_projection_test.dartflutter test test/application/use_cases_test.dart test/application/watch_companion_command_handler_test.dart test/application/watch_companion_projection_test.dartflutter test test/infrastructure/watch_bridge/wear_data_layer_adapter_test.dartdart analyzeciblé sur les fichiers touchés : sortie 0 (reste un lintprefer_single_quotespréexistant danstables.dart)flutter analyzecomplet : plus d'erreur, échec uniquement sur infos/lints préexistants