@startuml composants skinparam componentStyle rectangle skinparam defaultFontSize 13 skinparam packageStyle frame title Diagramme de composants — WatchOsm v1 (module wear autonome) package "Téléphone — Android 16" as phone #f5f5f5 { component "OsmAnd+ 5.4.9" as osmand component "Notification de navigation\n(contenu non contractuel)" as notif osmand --> notif } package "Montre — Wear OS 5" as watch #ffffff { package "Couche présentation" as ui { component "MainActivity\n(Compose for Wear OS)" as activity component "AppNavHost\n(SwipeDismissableNavHost)" as host component "HomeScreen" as home component "NavigationScreen" as nav component "ManeuverArrow\n(Canvas)" as arrow component "NavigationViewModel" as vm } package "Couche données" as data { component "OsmAndNotificationListener\n(NotificationListenerService)" as listener component "OsmAndNotificationParser" as parser component "NavigationStateRepository" as repo } component "WatchOsmApplication\n(AppContainer)" as app host --> home host --> nav nav --> arrow host --> vm : StateFlow vm --> repo : lecture du flux listener --> parser : payload textuel parser --> repo : NavigationState? app "1" *-- "*" listener : accès app "1" *-- "1" repo : partagé avec les ViewModels } package "Système Android (montre)" as system #f0f0f0 { component "NotificationManager\n(relais des notifications\ndu téléphone)" as nm } notif ..> nm : relais Bluetooth nm --> listener : onNotificationPosted / onNotificationRemoved @enduml