// CoachLiveActivityAttributes.swift // Modèle partagé App ↔ Widget Extension (membre des 2 targets). // Définit ce que la Live Activity / Dynamic Island affiche. import ActivityKit import Foundation @available(iOS 16.2, *) struct CoachLiveActivityAttributes: ActivityAttributes { /// Données dynamiques (mises à jour à chaque sample reçu de la Watch). public struct ContentState: Codable, Hashable { var heartRate: Double var activeEnergyKcal: Double var distanceMeters: Double var elapsedSec: TimeInterval var isLive: Bool // true = direct ; false = perdu/en pause } /// Données fixes (set au start, non modifiables). var activityLabel: String // "Course", "Vélo", "Marche", "Renfo", ou "Séance" var activitySymbol: String // SF Symbol (figure.run, bicycle, figure.walk, dumbbell) var startedAt: Date }