chore(wip): consolidation intermédiaire multi-tickets (sprints Statistiques, UI, Bug resolution, Serveur-client)

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>
This commit is contained in:
2026-07-28 16:48:54 +02:00
parent 58272e354a
commit 917777e18b
279 changed files with 13546 additions and 674 deletions

View File

@ -230,6 +230,11 @@ final class _FakeBootstrap implements AppDependencies {
activeWorkoutSensorUseCases = ActiveWorkoutSensorUseCases(
clock: _FakeClock(DateTime.utc(2026, 7, 17, 12)),
),
workoutTelemetryUseCases = WorkoutTelemetryUseCases(
repository: _FakeWorkoutTelemetryRepository(),
clock: _FakeClock(DateTime.utc(2026, 7, 17, 12)),
ids: _FakeIds(),
),
closeWorkoutSessionUseCase = CloseWorkoutSessionUseCase(
sessionRepository: activeRepository,
historyRepository: _FakeWorkoutHistoryRepository(),
@ -319,6 +324,9 @@ final class _FakeBootstrap implements AppDependencies {
@override
final ActiveWorkoutSensorUseCases activeWorkoutSensorUseCases;
@override
final WorkoutTelemetryUseCases workoutTelemetryUseCases;
@override
final CloseWorkoutSessionUseCase closeWorkoutSessionUseCase;
@ -868,6 +876,9 @@ final class _FakeWorkoutTemplateRepository
@override
Future<void> save(WorkoutTemplate template) async {}
@override
Future<void> saveAll(List<WorkoutTemplate> templates) async {}
@override
Future<void> saveOverride(WorkoutTemplateExerciseOverride override) async {}
@ -891,8 +902,11 @@ final class _FakeWorkoutHistoryRepository implements WorkoutHistoryRepository {
@override
Future<void> patchHeartRateSummary({
required String historyId,
int? minHeartRateBpm,
required double averageHeartRateBpm,
required int maxHeartRateBpm,
double? totalDistanceMeters,
double? totalCaloriesKcal,
required DateTime patchedAt,
}) async {}
@ -903,6 +917,43 @@ final class _FakeWorkoutHistoryRepository implements WorkoutHistoryRepository {
Future<void> saveStepResult(WorkoutHistoryStepResult result) async {}
}
final class _FakeWorkoutTelemetryRepository
implements WorkoutTelemetryRepository {
@override
Future<bool> saveSample(WorkoutTelemetrySample sample) async => true;
@override
Future<List<WorkoutTelemetrySample>> listSamples(String sessionId) async {
return const [];
}
@override
Future<void> replaceAggregatesForSession({
required String sessionId,
required List<WorkoutTelemetryAggregate> aggregates,
}) async {}
@override
Future<List<WorkoutTelemetryAggregate>> listAggregates(
String sessionId,
) async {
return const [];
}
@override
Future<WorkoutTelemetryAggregate?> findAggregate({
required String sessionId,
required WorkoutTelemetryAggregateScope scope,
int? programIndex,
int? exerciseIndex,
int? setIndex,
int? passageIndex,
int? stepIndex,
}) async {
return null;
}
}
final class _FakeProgressionStatsRepository
implements ProgressionStatsRepository {
@override