@startuml deploiement skinparam defaultFontSize 13 skinparam nodeFontSize 13 skinparam artifactFontSize 12 skinparam componentFontSize 12 title Diagramme de déploiement — WatchOsm v1 (miroir de navigation OsmAnd) node "Téléphone — Android 16\n(enregistrement du trajet,\ncalcul et guidage)" as phone #f5f5f5 { artifact "OsmAnd+ 5.4.9\n(APK installé)" as osmand artifact "Notification de navigation\nongoing\n(catégorie « navigation »)" as notif } node "Montre — Wear OS 5\n(sur le poignet)" as watch #ffffff { artifact "WatchOsm v0.1.0\n(watch-debug.apk)" as apk { component "MainActivity\n+ AppNavHost\n(Compose for Wear OS)" as ui component "OsmAndNotificationListener\n(service lié au système)" as listener component "NavigationStateRepository\n(flux en mémoire)" as repo } artifact "Système Android Wear OS\nNotificationManager" as nm } cloud "Relais Bluetooth\nWear OS (bridging)" as bt #e8f5e9 osmand --> notif : publie / retire notif --> bt : relayée par le téléphone\n(standard Wear OS) bt --> nm : notification locale\nsur la montre nm --> listener : onNotificationPosted /\nonNotificationRemoved listener --> repo : état parsé repo --> ui : StateFlow note right of apk Aucune donnée réseau, aucun compte, aucun accès GPS : la montre n'interprète que la notification déjà produite par OsmAnd sur le téléphone. end note @enduml