M-Diagnostic - Diagnostiquer le matériel¶
Type : écran « Diagnostic matériel » d'un passage (atteint depuis M-Passage pour un passage disposant d'un journal du capteur et/ou d'un relevé climatique). Persona principal : Karim et Samuel (exploitation pro, contrôle du parc d'enregistreurs). Parcours couverts : P6 - Diagnostiquer le matériel.
L'écran présente, pour le passage courant, un bilan technique de la nuit : un graphe climatique (température / hygrométrie) issu du relevé de la sonde, la liste des anomalies détectées dans le journal du capteur (R19), le journal brut des évènements, la cohérence horaire (fenêtre nocturne réelle au point d'écoute et repère « hors nuit »), et l'état du GPS du point d'écoute. L'objectif : décider si un enregistreur doit être révisé.
Robustesse : quand le relevé climatique est manquant (sonde absente ou défaillante), la section climat n'est pas masquée : un bandeau d'avertissement explicite le signale (R20) et le reste du diagnostic reste exploitable.
Maquette principale - passage avec relevé climatique présent¶
Annotations¶
- Fil d'Ariane et retour : portés par le chrome (barre de navigation commune) via le contrat
EmplacementNavigation; l'écran ne dessine pas son propre fil. Emplacement affiché :Accueil › Mes sites › Carré N › Détails du passage N° X › Diagnostic matériel, identique quelle que soit la route. - Pas de titre d'écran (#693) : le titre « Diagnostic matériel » serait redondant avec le fil d'Ariane. L'enregistreur diagnostiqué et le nombre de mesures climatiques sont portés par la barre de statut (zone centre :
PR 1925492 · 10 mesures). - Température en début de nuit (
lblTemperature) : donnée optionnelle saisie en M-Passage (8,5 °C, ou un tiret si elle n'est pas renseignée). - Graphe climatique (
grapheClimat) :LineChartà deux séries (température en orange foncé, hygrométrie en orange clair). Axe X temporel (NumberAxisen minutes depuis la première mesure, étiquettesHH:mm, quelques repères espacés), axe Y communT° (°C) / Humidité…. Légende sous le graphe. - Anomalies (R19) (
listeAnomalies) :ListViewdes évènements anormaux du journal (réveils non programmés, batterie faible, erreurs SD…). Le journal étant circulaire, certaines entrées anciennes peuvent manquer. - Évènements du journal (
listeEvenements) :ListViewdu journal brut horodaté du capteur (démarrage, arrêt programmé…). - Cohérence horaire (
lblFenetreNuit,lblAlerteHorsNuit, #548) : la fenêtre nocturne réelle au point d'écoute (Nuit : coucher 21:58 · lever 05:48), calculée depuis les coordonnées et la date ; une alerte « hors nuit » apparaît si l'enregistrement démarre avant le coucher ou s'arrête après le lever du soleil. - État GPS (
lblGps) : ligne d'état permanente portant les coordonnées du point d'écoute (et non du capteur) : « GPS du point : disponible », ou « GPS du point : non renseigné (compléter la fiche site) ». Le calcul de la fenêtre nocturne en dépend. - Zone de message (
lblMessage) : retours d'état (passage introuvable, erreurs).
Variante - relevé climatique absent (R20)¶
Si la sonde est absente ou défaillante, la section climat n'est pas masquée : un bandeau d'avertissement (lblReleveAbsent) annonce « Relevé climatique absent : la température et l'hygrométrie ne sont pas disponibles pour cette nuit. », le LineChart s'affiche vide (sans étiquettes d'axe) et le nombre de mesures disparaît de la barre de statut. Les listes Anomalies / Journal, la cohérence horaire et l'état GPS restent affichés et exploitables.
Interactions clés¶
| Élément | Action |
|---|---|
| Survol d'un point du graphe | Infobulle : horodatage + valeur (T° / hygrométrie) |
| Sélection d'une anomalie | Met en évidence l'entrée correspondante dans le journal |
| Relevé climatique absent | Bandeau R20 + graphe vide, le reste du diagnostic reste exploitable |
| Coordonnées GPS absentes | lblGps affiche « non renseigné » et invite à compléter la fiche site (P1) |
Notes pour l'implémentation¶
LineChartJavaFX : deuxXYChart.Series(température, hygrométrie) sur un axe temporel (NumberAxis, étiquettesHH:mm). Lier les séries à des collections observables du ViewModel ; gérer proprement le cas « série vide » (graphe affiché sans étiquettes d'axe, pas d'exception).ListViewpour anomalies et journal :cellFactorysimple (texte). La virtualisation native suffit même pour un journal volumineux.- Données manquantes explicites (R20) : ne jamais masquer une section absente. Piloter la visibilité du bandeau via une
BooleanPropertydu ViewModel (releveClimatiqueAbsent). - Cohérence horaires astronomiques : implémentée (#548). L'écran calcule la fenêtre nocturne réelle au point d'écoute (coucher / lever du soleil via une éphéméride, fuseau Europe/Paris) et compare les horaires d'enregistrement à cette fenêtre pour repérer un démarrage ou un arrêt hors nuit (portion diurne). Indisponible proprement si le GPS ou les horaires manquent, ou en latitude polaire.
- Icônes : les repères visuels (température, anomalies, journal, nuit, GPS) sont des
FontIconIkonli, pas des emojis (règle #700). - Réutilisation : l'écran consomme le relevé climatique et le journal du capteur déjà chargés par le socle pour le passage ; le ViewModel expose des propriétés observables, la vue ne fait que les lier.