@startuml Séquence de Synchronisation des Données skinparam { BackgroundColor white SequenceGroupBorderColor gray SequenceGroupBodyBackgroundColor whitesmoke ParticipantBackgroundColor lightblue ParticipantBorderColor gray LifeLineBorderColor gray ArrowColor #666666 } actor "Système" as System participant "sync_offline_data.py" as Sync participant "APIClient" as API participant "TimelapseCaptureManager" as Manager participant "Config" as Config database "Stockage local" as Storage database "Serveur API" as Server System -> Sync : Exécution du script activate Sync Sync -> API : check_connection() activate API API --> Sync : Connexion disponible deactivate API Sync -> Manager : count_offline_captures() activate Manager Manager -> Storage : Listing des dossiers offline Storage --> Manager : Liste des captures Manager --> Sync : Nombre de captures hors ligne deactivate Manager alt Captures hors ligne disponibles Sync -> Manager : sync_offline_captures() activate Manager loop Pour chaque capture hors ligne Manager -> Storage : Lire données JSON activate Storage Storage --> Manager : Données (timestamp, température, etc.) deactivate Storage Manager -> Storage : Lire image activate Storage Storage --> Manager : Fichier image deactivate Storage Manager -> API : upload_measurement() activate API API -> Server : POST /camera/upload alt Upload réussi Server --> API : Confirmation (ID image) API --> Manager : Succès Manager -> Storage : Suppression des fichiers locaux Manager -> Config : Mise à jour du statut else Échec de l'upload Server --> API : Erreur API --> Manager : Échec note right: Conservation des fichiers locaux\npour tentative ultérieure end deactivate API end Manager --> Sync : Nombre de captures synchronisées deactivate Manager else Aucune capture à synchroniser Sync -> Sync : Fin sans action end Sync --> System : Rapport de synchronisation deactivate Sync @enduml